1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-01-06 08:01:16 +03:00

Fix a bug causing spurious "sub-select returns N columns expected 1" errors

in join queries with a term like "(a, b) IN (SELECT ...)" in the WHERE clause.

FossilOrigin-Name: 14dfd96f9bca2df5033b2d894bf63cc8bf450a45ca11df5e3bbb814fdf96b656
This commit is contained in:
dan
2018-01-23 16:38:57 +00:00
parent 61d04974f0
commit a916b57013
4 changed files with 60 additions and 9 deletions

View File

@@ -394,4 +394,49 @@ do_execsql_test 16.5 {
3 i ii iii iv
}
do_execsql_test 17.0 {
CREATE TABLE b1(a, b);
CREATE TABLE b2(x);
}
do_execsql_test 17.1 {
SELECT * FROM b2 CROSS JOIN b1
WHERE b2.x=b1.a AND (b1.a, 2)
IN (VALUES(1, 2));
} {}
do_execsql_test 18.0 {
CREATE TABLE b3 ( a, b, PRIMARY KEY (a, b) );
CREATE TABLE b4 ( a );
CREATE TABLE b5 ( a, b );
INSERT INTO b3 VALUES (1, 1), (1, 2);
INSERT INTO b4 VALUES (1);
INSERT INTO b5 VALUES (1, 1), (1, 2);
}
do_execsql_test 18.1 {
SELECT * FROM b3 WHERE (SELECT b3.a, b3.b) IN ( SELECT a, b FROM b5 )
} {1 1 1 2}
do_execsql_test 18.2 {
SELECT * FROM b3 WHERE (VALUES(b3.a, b3.b)) IN ( SELECT a, b FROM b5 );
} {1 1 1 2}
do_execsql_test 18.3 {
SELECT * FROM b3 WHERE (b3.a, b3.b) IN ( SELECT a, b FROM b5 );
} {1 1 1 2}
do_execsql_test 18.4 {
SELECT * FROM b3 JOIN b4 ON b4.a = b3.a
WHERE (SELECT b3.a, b3.b) IN ( SELECT a, b FROM b5 );
} {1 1 1 1 2 1}
do_execsql_test 18.5 {
SELECT * FROM b3 JOIN b4 ON b4.a = b3.a
WHERE (VALUES(b3.a, b3.b)) IN ( SELECT a, b FROM b5 );
} {1 1 1 1 2 1}
do_execsql_test 18.6 {
SELECT * FROM b3 JOIN b4 ON b4.a = b3.a
WHERE (b3.a, b3.b) IN ( SELECT a, b FROM b5 );
} {1 1 1 1 2 1}
finish_test
finish_test