Skip to content

Commit 732cfab

Browse files
author
Alexander Barkov
committed
Merge branch 'halfspawn-bb-10.2-ext' into bb-10.2-ext
2 parents 5b034f1 + 87d9527 commit 732cfab

File tree

5 files changed

+56
-2
lines changed

5 files changed

+56
-2
lines changed

mysql-test/r/func_str.result

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4876,5 +4876,16 @@ IF(a<' ',HEX(a),a)
48764876
a
48774877
DROP TABLE t1;
48784878
#
4879+
# MDEV-12783 sql_mode=ORACLE: Functions LENGTH() and LENGTHB()
4880+
#
4881+
SELECT LENGTHB('a'), LENGTHB(_utf8 0xC39F), LENGTHB(123), LENGTH(null);
4882+
LENGTHB('a') LENGTHB(_utf8 0xC39F) LENGTHB(123) LENGTH(null)
4883+
1 2 3 NULL
4884+
EXPLAIN EXTENDED SELECT LENGTH('a'), LENGTHB('a');
4885+
id select_type table type possible_keys key key_len ref rows filtered Extra
4886+
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
4887+
Warnings:
4888+
Note 1003 select octet_length('a') AS `LENGTH('a')`,octet_length('a') AS `LENGTHB('a')`
4889+
#
48794890
# End of 10.3 tests
48804891
#
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
SET sql_mode=ORACLE;
2+
#
3+
# MDEV-12783 sql_mode=ORACLE: Functions LENGTH() and LENGTHB()
4+
#
5+
SELECT LENGTH(null), LENGTH('a'), LENGTH(123);
6+
LENGTH(null) LENGTH('a') LENGTH(123)
7+
NULL 1 3
8+
SELECT LENGTHB(null), LENGTHB('a'), LENGTHB(123);
9+
LENGTHB(null) LENGTHB('a') LENGTHB(123)
10+
NULL 1 3
11+
SELECT LENGTH(_utf8 0xC39F), LENGTH(CHAR(14844588 USING utf8));
12+
LENGTH(_utf8 0xC39F) LENGTH(CHAR(14844588 USING utf8))
13+
1 1
14+
SELECT LENGTHB(_utf8 0xC39F), LENGTHB(CHAR(14844588 USING utf8));
15+
LENGTHB(_utf8 0xC39F) LENGTHB(CHAR(14844588 USING utf8))
16+
2 3
17+
EXPLAIN EXTENDED SELECT LENGTH('a'), LENGTHB('a');
18+
id select_type table type possible_keys key key_len ref rows filtered Extra
19+
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
20+
Warnings:
21+
Note 1003 select char_length('a') AS "LENGTH('a')",octet_length('a') AS "LENGTHB('a')"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
SET sql_mode=ORACLE;
2+
3+
--echo #
4+
--echo # MDEV-12783 sql_mode=ORACLE: Functions LENGTH() and LENGTHB()
5+
--echo #
6+
#
7+
# Testing LENGTH / LENGTHB
8+
#
9+
# LENGTH : return the length of char
10+
# LENGTHB : return the length of byte
11+
12+
13+
SELECT LENGTH(null), LENGTH('a'), LENGTH(123);
14+
SELECT LENGTHB(null), LENGTHB('a'), LENGTHB(123);
15+
16+
SELECT LENGTH(_utf8 0xC39F), LENGTH(CHAR(14844588 USING utf8));
17+
SELECT LENGTHB(_utf8 0xC39F), LENGTHB(CHAR(14844588 USING utf8));
18+
EXPLAIN EXTENDED SELECT LENGTH('a'), LENGTHB('a');

mysql-test/t/func_str.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,6 +1883,11 @@ INSERT INTO t1 VALUES (0x09),('a');
18831883
SELECT IF(a<' ',HEX(a),a) FROM t1 ORDER BY a;
18841884
DROP TABLE t1;
18851885

1886+
--echo #
1887+
--echo # MDEV-12783 sql_mode=ORACLE: Functions LENGTH() and LENGTHB()
1888+
--echo #
1889+
SELECT LENGTHB('a'), LENGTHB(_utf8 0xC39F), LENGTHB(123), LENGTH(null);
1890+
EXPLAIN EXTENDED SELECT LENGTH('a'), LENGTHB('a');
18861891

18871892
--echo #
18881893
--echo # End of 10.3 tests

sql/item_create.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5684,11 +5684,9 @@ Create_func_length Create_func_length::s_singleton;
56845684
Item*
56855685
Create_func_length::create_1_arg(THD *thd, Item *arg1)
56865686
{
5687-
#if 0 // Not yet
56885687
if (thd->variables.sql_mode & MODE_ORACLE)
56895688
return new (thd->mem_root) Item_func_char_length(thd, arg1);
56905689
else
5691-
#endif
56925690
return new (thd->mem_root) Item_func_octet_length(thd, arg1);
56935691
}
56945692

@@ -6978,6 +6976,7 @@ static Native_func_registry func_array[] =
69786976
{ { C_STRING_WITH_LEN("LCASE") }, BUILDER(Create_func_lcase)},
69796977
{ { C_STRING_WITH_LEN("LEAST") }, BUILDER(Create_func_least)},
69806978
{ { C_STRING_WITH_LEN("LENGTH") }, BUILDER(Create_func_length)},
6979+
{ { C_STRING_WITH_LEN("LENGTHB") }, BUILDER(Create_func_octet_length)},
69816980
#ifndef DBUG_OFF
69826981
{ { C_STRING_WITH_LEN("LIKE_RANGE_MIN") }, BUILDER(Create_func_like_range_min)},
69836982
{ { C_STRING_WITH_LEN("LIKE_RANGE_MAX") }, BUILDER(Create_func_like_range_max)},

0 commit comments

Comments
 (0)