Loading myisam/myisamchk.c +2 −2 Original line number Diff line number Diff line Loading @@ -427,8 +427,8 @@ static void usage(void) can't fix the data file.\n\ --character-sets-dir=...\n\ Directory where character sets are.\n\ --set-character-set=name\n\ Change the character set used by the index.\n\ --set-collation=name\n\ Change the collation used by the index.\n\ -q, --quick Faster repair by not modifying the data file.\n\ One can give a second '-q' to force myisamchk to\n\ modify the original datafile in case of duplicate keys.\n\ Loading mysql-test/r/func_str.result +20 −0 Original line number Diff line number Diff line Loading @@ -636,6 +636,26 @@ drop table t1; select charset(null), collation(null), coercibility(null); charset(null) collation(null) coercibility(null) binary binary 5 CREATE TABLE t1 (a int, b int); CREATE TABLE t2 (a int, b int); INSERT INTO t1 VALUES (1,1),(2,2); INSERT INTO t2 VALUES (2,2),(3,3); select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where collation(t2.a) = _utf8'binary' order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where charset(t2.a) = _utf8'binary' order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where coercibility(t2.a) = 2 order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 DROP TABLE t1, t2; select SUBSTR('abcdefg',3,2); SUBSTR('abcdefg',3,2) cd Loading mysql-test/t/func_str.test +14 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,20 @@ insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; drop table t1; select charset(null), collation(null), coercibility(null); # # Make sure OUTER JOIN is not replaced with a regular joun # CREATE TABLE t1 (a int, b int); CREATE TABLE t2 (a int, b int); INSERT INTO t1 VALUES (1,1),(2,2); INSERT INTO t2 VALUES (2,2),(3,3); select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where collation(t2.a) = _utf8'binary' order by t1.a,t2.a; select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where charset(t2.a) = _utf8'binary' order by t1.a,t2.a; select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where coercibility(t2.a) = 2 order by t1.a,t2.a; DROP TABLE t1, t2; # # test for SUBSTR Loading sql/item_func.h +2 −1 Original line number Diff line number Diff line Loading @@ -616,7 +616,8 @@ class Item_func_coercibility :public Item_int_func Item_func_coercibility(Item *a) :Item_int_func(a) {} longlong val_int(); const char *func_name() const { return "coercibility"; } void fix_length_and_dec() { max_length=10; } void fix_length_and_dec() { max_length=10; maybe_null= 0; } table_map not_null_tables() const { return 0; } }; class Item_func_locate :public Item_int_func Loading sql/item_strfunc.h +4 −0 Original line number Diff line number Diff line Loading @@ -641,7 +641,9 @@ class Item_func_charset :public Item_str_func { collation.set(system_charset_info); max_length= 64 * collation.collation->mbmaxlen; // should be enough maybe_null= 0; }; table_map not_null_tables() const { return 0; } }; class Item_func_collation :public Item_str_func Loading @@ -654,7 +656,9 @@ class Item_func_collation :public Item_str_func { collation.set(system_charset_info); max_length= 64 * collation.collation->mbmaxlen; // should be enough maybe_null= 0; }; table_map not_null_tables() const { return 0; } }; class Item_func_crc32 :public Item_int_func Loading Loading
myisam/myisamchk.c +2 −2 Original line number Diff line number Diff line Loading @@ -427,8 +427,8 @@ static void usage(void) can't fix the data file.\n\ --character-sets-dir=...\n\ Directory where character sets are.\n\ --set-character-set=name\n\ Change the character set used by the index.\n\ --set-collation=name\n\ Change the collation used by the index.\n\ -q, --quick Faster repair by not modifying the data file.\n\ One can give a second '-q' to force myisamchk to\n\ modify the original datafile in case of duplicate keys.\n\ Loading
mysql-test/r/func_str.result +20 −0 Original line number Diff line number Diff line Loading @@ -636,6 +636,26 @@ drop table t1; select charset(null), collation(null), coercibility(null); charset(null) collation(null) coercibility(null) binary binary 5 CREATE TABLE t1 (a int, b int); CREATE TABLE t2 (a int, b int); INSERT INTO t1 VALUES (1,1),(2,2); INSERT INTO t2 VALUES (2,2),(3,3); select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where collation(t2.a) = _utf8'binary' order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where charset(t2.a) = _utf8'binary' order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where coercibility(t2.a) = 2 order by t1.a,t2.a; a b a b 1 1 NULL NULL 2 2 2 2 DROP TABLE t1, t2; select SUBSTR('abcdefg',3,2); SUBSTR('abcdefg',3,2) cd Loading
mysql-test/t/func_str.test +14 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,20 @@ insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; drop table t1; select charset(null), collation(null), coercibility(null); # # Make sure OUTER JOIN is not replaced with a regular joun # CREATE TABLE t1 (a int, b int); CREATE TABLE t2 (a int, b int); INSERT INTO t1 VALUES (1,1),(2,2); INSERT INTO t2 VALUES (2,2),(3,3); select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where collation(t2.a) = _utf8'binary' order by t1.a,t2.a; select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where charset(t2.a) = _utf8'binary' order by t1.a,t2.a; select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b) where coercibility(t2.a) = 2 order by t1.a,t2.a; DROP TABLE t1, t2; # # test for SUBSTR Loading
sql/item_func.h +2 −1 Original line number Diff line number Diff line Loading @@ -616,7 +616,8 @@ class Item_func_coercibility :public Item_int_func Item_func_coercibility(Item *a) :Item_int_func(a) {} longlong val_int(); const char *func_name() const { return "coercibility"; } void fix_length_and_dec() { max_length=10; } void fix_length_and_dec() { max_length=10; maybe_null= 0; } table_map not_null_tables() const { return 0; } }; class Item_func_locate :public Item_int_func Loading
sql/item_strfunc.h +4 −0 Original line number Diff line number Diff line Loading @@ -641,7 +641,9 @@ class Item_func_charset :public Item_str_func { collation.set(system_charset_info); max_length= 64 * collation.collation->mbmaxlen; // should be enough maybe_null= 0; }; table_map not_null_tables() const { return 0; } }; class Item_func_collation :public Item_str_func Loading @@ -654,7 +656,9 @@ class Item_func_collation :public Item_str_func { collation.set(system_charset_info); max_length= 64 * collation.collation->mbmaxlen; // should be enough maybe_null= 0; }; table_map not_null_tables() const { return 0; } }; class Item_func_crc32 :public Item_int_func Loading