Loading mysql-test/r/func_str.result +10 −1 Original line number Diff line number Diff line Loading @@ -512,7 +512,7 @@ collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')) coercibility(make_set( latin2_general_ci 4 select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' ')); collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')) coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' ')) binary 4 latin2_general_ci 4 select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a ')); collation(trim(_latin2' a ')) coercibility(trim(_latin2' a ')) latin2_general_ci 4 Loading Loading @@ -627,6 +627,15 @@ t1 CREATE TABLE `t1` ( `encode('abcd','ab')` binary(4) NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 (a char character set latin2); insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; charset(a) collation(a) coercibility(a) latin2 latin2_general_ci 2 drop table t1; select charset(null), collation(null), coercibility(null); charset(null) collation(null) coercibility(null) binary binary 5 select SUBSTR('abcdefg',3,2); SUBSTR('abcdefg',3,2) cd Loading mysql-test/t/func_str.test +9 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,15 @@ select show create table t1; drop table t1; # # Bug#9129 # create table t1 (a char character set latin2); insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; drop table t1; select charset(null), collation(null), coercibility(null); # # test for SUBSTR # Loading sql/item_func.cc +0 −5 Original line number Diff line number Diff line Loading @@ -1346,11 +1346,6 @@ longlong Item_func_char_length::val_int() longlong Item_func_coercibility::val_int() { DBUG_ASSERT(fixed == 1); if (args[0]->null_value) { null_value= 1; return 0; } null_value= 0; return (longlong) args[0]->collation.derivation; } Loading sql/item_strfunc.cc +7 −8 Original line number Diff line number Diff line Loading @@ -2290,12 +2290,11 @@ bool Item_func_set_collation::eq(const Item *item, bool binary_cmp) const String *Item_func_charset::val_str(String *str) { DBUG_ASSERT(fixed == 1); String *res = args[0]->val_str(str); uint dummy_errors; if ((null_value=(args[0]->null_value || !res->charset()))) return 0; str->copy(res->charset()->csname,strlen(res->charset()->csname), CHARSET_INFO *cs= args[0]->collation.collation; null_value= 0; str->copy(cs->csname, strlen(cs->csname), &my_charset_latin1, collation.collation, &dummy_errors); return str; } Loading @@ -2303,12 +2302,11 @@ String *Item_func_charset::val_str(String *str) String *Item_func_collation::val_str(String *str) { DBUG_ASSERT(fixed == 1); String *res = args[0]->val_str(str); uint dummy_errors; CHARSET_INFO *cs= args[0]->collation.collation; if ((null_value=(args[0]->null_value || !res->charset()))) return 0; str->copy(res->charset()->name,strlen(res->charset()->name), null_value= 0; str->copy(cs->name, strlen(cs->name), &my_charset_latin1, collation.collation, &dummy_errors); return str; } Loading Loading @@ -2472,6 +2470,7 @@ String* Item_func_export_set::val_str(String* str) uint num_set_values = 64; ulonglong mask = 0x1; str->length(0); str->set_charset(collation.collation); /* Check if some argument is a NULL value */ if (args[0]->null_value || args[1]->null_value || args[2]->null_value) Loading Loading
mysql-test/r/func_str.result +10 −1 Original line number Diff line number Diff line Loading @@ -512,7 +512,7 @@ collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')) coercibility(make_set( latin2_general_ci 4 select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' ')); collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')) coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' ')) binary 4 latin2_general_ci 4 select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a ')); collation(trim(_latin2' a ')) coercibility(trim(_latin2' a ')) latin2_general_ci 4 Loading Loading @@ -627,6 +627,15 @@ t1 CREATE TABLE `t1` ( `encode('abcd','ab')` binary(4) NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 (a char character set latin2); insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; charset(a) collation(a) coercibility(a) latin2 latin2_general_ci 2 drop table t1; select charset(null), collation(null), coercibility(null); charset(null) collation(null) coercibility(null) binary binary 5 select SUBSTR('abcdefg',3,2); SUBSTR('abcdefg',3,2) cd Loading
mysql-test/t/func_str.test +9 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,15 @@ select show create table t1; drop table t1; # # Bug#9129 # create table t1 (a char character set latin2); insert into t1 values (null); select charset(a), collation(a), coercibility(a) from t1; drop table t1; select charset(null), collation(null), coercibility(null); # # test for SUBSTR # Loading
sql/item_func.cc +0 −5 Original line number Diff line number Diff line Loading @@ -1346,11 +1346,6 @@ longlong Item_func_char_length::val_int() longlong Item_func_coercibility::val_int() { DBUG_ASSERT(fixed == 1); if (args[0]->null_value) { null_value= 1; return 0; } null_value= 0; return (longlong) args[0]->collation.derivation; } Loading
sql/item_strfunc.cc +7 −8 Original line number Diff line number Diff line Loading @@ -2290,12 +2290,11 @@ bool Item_func_set_collation::eq(const Item *item, bool binary_cmp) const String *Item_func_charset::val_str(String *str) { DBUG_ASSERT(fixed == 1); String *res = args[0]->val_str(str); uint dummy_errors; if ((null_value=(args[0]->null_value || !res->charset()))) return 0; str->copy(res->charset()->csname,strlen(res->charset()->csname), CHARSET_INFO *cs= args[0]->collation.collation; null_value= 0; str->copy(cs->csname, strlen(cs->csname), &my_charset_latin1, collation.collation, &dummy_errors); return str; } Loading @@ -2303,12 +2302,11 @@ String *Item_func_charset::val_str(String *str) String *Item_func_collation::val_str(String *str) { DBUG_ASSERT(fixed == 1); String *res = args[0]->val_str(str); uint dummy_errors; CHARSET_INFO *cs= args[0]->collation.collation; if ((null_value=(args[0]->null_value || !res->charset()))) return 0; str->copy(res->charset()->name,strlen(res->charset()->name), null_value= 0; str->copy(cs->name, strlen(cs->name), &my_charset_latin1, collation.collation, &dummy_errors); return str; } Loading Loading @@ -2472,6 +2470,7 @@ String* Item_func_export_set::val_str(String* str) uint num_set_values = 64; ulonglong mask = 0x1; str->length(0); str->set_charset(collation.collation); /* Check if some argument is a NULL value */ if (args[0]->null_value || args[1]->null_value || args[2]->null_value) Loading