Loading mysql-test/r/func_in.result +8 −0 Original line number Diff line number Diff line Loading @@ -202,3 +202,11 @@ select count(*) from t1 where id not in (1,2); count(*) 1 drop table t1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 SELECT 1 IN (2, NULL); SELECT should return NULL. SELECT * FROM t1; 1 IN (2, NULL) NULL DROP TABLE t1; End of 4.1 tests mysql-test/t/func_in.test +21 −1 Original line number Diff line number Diff line Loading @@ -109,4 +109,24 @@ select count(*) from t1 where id not in (1); select count(*) from t1 where id not in (1,2); drop table t1; # End of 4.1 tests # # BUG#17047: CHAR() and IN() can return NULL without signaling NULL # result # # The problem was in the IN() function that ignored maybe_null flags # of all arguments except the first (the one _before_ the IN # keyword, '1' in the test case below). # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1 SELECT 1 IN (2, NULL); --echo SELECT should return NULL. SELECT * FROM t1; DROP TABLE t1; --echo End of 4.1 tests sql/item_cmpfunc.cc +0 −1 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,6 @@ void Item_func_in::fix_length_and_dec() if (cmp_type == STRING_RESULT) in_item->cmp_charset= cmp_collation.collation; } maybe_null= args[0]->maybe_null; max_length= 1; } Loading Loading
mysql-test/r/func_in.result +8 −0 Original line number Diff line number Diff line Loading @@ -202,3 +202,11 @@ select count(*) from t1 where id not in (1,2); count(*) 1 drop table t1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 SELECT 1 IN (2, NULL); SELECT should return NULL. SELECT * FROM t1; 1 IN (2, NULL) NULL DROP TABLE t1; End of 4.1 tests
mysql-test/t/func_in.test +21 −1 Original line number Diff line number Diff line Loading @@ -109,4 +109,24 @@ select count(*) from t1 where id not in (1); select count(*) from t1 where id not in (1,2); drop table t1; # End of 4.1 tests # # BUG#17047: CHAR() and IN() can return NULL without signaling NULL # result # # The problem was in the IN() function that ignored maybe_null flags # of all arguments except the first (the one _before_ the IN # keyword, '1' in the test case below). # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1 SELECT 1 IN (2, NULL); --echo SELECT should return NULL. SELECT * FROM t1; DROP TABLE t1; --echo End of 4.1 tests
sql/item_cmpfunc.cc +0 −1 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,6 @@ void Item_func_in::fix_length_and_dec() if (cmp_type == STRING_RESULT) in_item->cmp_charset= cmp_collation.collation; } maybe_null= args[0]->maybe_null; max_length= 1; } Loading