diff options
-rw-r--r-- | Docs/manual.texi | 2 | ||||
-rw-r--r-- | mysql-test/r/binary.result | 4 | ||||
-rw-r--r-- | mysql-test/t/binary.test | 10 | ||||
-rw-r--r-- | sql/item_strfunc.h | 7 |
4 files changed, 22 insertions, 1 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 509f46dab08..5330ae82dc2 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -46929,6 +46929,8 @@ not yet 100% confident in this code. @appendixsubsec Changes in release 3.23.53 @itemize @bullet @item +Fixed core dump bug when using the @code{BINARY} cast on a @code{NULL} value. +@item Fixed bug in @code{ALTER TABLE} and @code{RENAME TABLE} when running with @code{-O lower_case_table_names=1} (typically on windows) when giving the table name in uppercase. diff --git a/mysql-test/r/binary.result b/mysql-test/r/binary.result index c5f9961699d..cbd95e03232 100644 --- a/mysql-test/r/binary.result +++ b/mysql-test/r/binary.result @@ -31,3 +31,7 @@ hello hello a b a b hello hello +b +b +NULL +b diff --git a/mysql-test/t/binary.test b/mysql-test/t/binary.test index 7853b013ae6..ef4249c39f8 100644 --- a/mysql-test/t/binary.test +++ b/mysql-test/t/binary.test @@ -31,3 +31,13 @@ select * from t1 where a="hello "; select * from t1 where b="hello "; select * from t1 where b="hello"; drop table t1; + +# +# Test of binary and NULL +# +create table t1 (b char(8)); +insert into t1 values(NULL); +select b from t1 where binary b like ''; +select b from t1 group by binary b like ''; +select b from t1 having binary b like ''; +drop table t1; diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 1b829b19439..8f7049cd8f6 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -394,7 +394,12 @@ class Item_func_binary :public Item_str_func public: Item_func_binary(Item *a) :Item_str_func(a) {} const char *func_name() const { return "binary"; } - String *val_str(String *a) { return (args[0]->val_str(a)); } + String *val_str(String *a) + { + String *tmp=args[0]->val_str(a); + null_value=args[0]->null_value; + return tmp; + } void fix_length_and_dec() { binary=1; max_length=args[0]->max_length; } void print(String *str) { print_op(str); } }; |