Commit 23efecdb authored by kroki/tomash@moonlight.intranet's avatar kroki/tomash@moonlight.intranet

Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug17047

into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug17047
parents 5196eadc b8d54515
...@@ -202,6 +202,14 @@ select count(*) from t1 where id not in (1,2); ...@@ -202,6 +202,14 @@ select count(*) from t1 where id not in (1,2);
count(*) count(*)
1 1
drop table t1; 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
CREATE TABLE t1 (a int PRIMARY KEY); CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 VALUES (44), (45), (46); INSERT INTO t1 VALUES (44), (45), (46);
SELECT * FROM t1 WHERE a IN (45); SELECT * FROM t1 WHERE a IN (45);
...@@ -343,3 +351,4 @@ some_id ...@@ -343,3 +351,4 @@ some_id
1 1
2 2
drop table t1; drop table t1;
End of 5.0 tests
...@@ -109,7 +109,28 @@ select count(*) from t1 where id not in (1); ...@@ -109,7 +109,28 @@ select count(*) from t1 where id not in (1);
select count(*) from t1 where id not in (1,2); select count(*) from t1 where id not in (1,2);
drop table t1; 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
# #
# Bug #11885: WHERE condition with NOT IN (one element) # Bug #11885: WHERE condition with NOT IN (one element)
...@@ -232,3 +253,6 @@ select some_id from t1 where some_id not in(2,-1); ...@@ -232,3 +253,6 @@ select some_id from t1 where some_id not in(2,-1);
select some_id from t1 where some_id not in(-4,-1,-4); select some_id from t1 where some_id not in(-4,-1,-4);
select some_id from t1 where some_id not in(-4,-1,3423534,2342342); select some_id from t1 where some_id not in(-4,-1,3423534,2342342);
drop table t1; drop table t1;
--echo End of 5.0 tests
...@@ -2465,7 +2465,6 @@ void Item_func_in::fix_length_and_dec() ...@@ -2465,7 +2465,6 @@ void Item_func_in::fix_length_and_dec()
if (cmp_type == STRING_RESULT) if (cmp_type == STRING_RESULT)
in_item->cmp_charset= cmp_collation.collation; in_item->cmp_charset= cmp_collation.collation;
} }
maybe_null= args[0]->maybe_null;
max_length= 1; max_length= 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment