diff options
author | Sergey Petrunia <sergefp@mysql.com> | 2009-01-28 22:18:27 +0300 |
---|---|---|
committer | Sergey Petrunia <sergefp@mysql.com> | 2009-01-28 22:18:27 +0300 |
commit | a9608b196d2675f790079009d7b2ca4d80a93dbc (patch) | |
tree | 6369b89ac1c82125274f18afb9eba6c01d40a6dc /mysql-test/r/subselect.result | |
parent | da8df39c14581f32f9004430336999011c96b33c (diff) | |
download | mariadb-git-a9608b196d2675f790079009d7b2ca4d80a93dbc.tar.gz |
BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
Item_in_optimizer::is_null() evaluated "NULL IN (SELECT ...)" to NULL regardless of
whether subquery produced any records, this was a documented limitation.
The limitation has been removed (see bugs 8804, 24085, 24127) now
Item_in_optimizer::val_int() correctly handles all cases with NULLs. Make
Item_in_optimizer::is_null() invoke val_int() to return correct values for
"NULL IN (SELECT ...)".
mysql-test/r/subselect.result:
BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
- Testcase
mysql-test/t/subselect.test:
BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
- Testcase
Diffstat (limited to 'mysql-test/r/subselect.result')
-rw-r--r-- | mysql-test/r/subselect.result | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index c1c81847b13..d38387a356f 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4478,4 +4478,40 @@ WHERE 1 IN (SELECT id FROM t1) WITH CHECK OPTION; DELETE FROM v3; DROP VIEW v1,v2,v3; DROP TABLE t1,t2; +# +# BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result +# +create table t1(id integer primary key, g integer, v integer, s char(1)); +create table t2(id integer primary key, g integer, v integer, s char(1)); +insert into t1 values +(10, 10, 10, 'l'), +(20, 20, 20, 'l'), +(40, 40, 40, 'l'), +(41, 40, null, 'l'), +(50, 50, 50, 'l'), +(51, 50, null, 'l'), +(60, 60, 60, 'l'), +(61, 60, null, 'l'), +(70, 70, 70, 'l'), +(90, 90, null, 'l'); +insert into t2 values +(10, 10, 10, 'r'), +(30, 30, 30, 'r'), +(50, 50, 50, 'r'), +(60, 60, 60, 'r'), +(61, 60, null, 'r'), +(70, 70, 70, 'r'), +(71, 70, null, 'r'), +(80, 80, 80, 'r'), +(81, 80, null, 'r'), +(100,100,null, 'r'); +select * +from t1 +where v in(select v +from t2 +where t1.g=t2.g) is unknown; +id g v s +51 50 NULL l +61 60 NULL l +drop table t1, t2; End of 5.1 tests. |