1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Fix some issues with vector range constraints and the column cache. Also vector range constraints and rowid columns.

FossilOrigin-Name: 42607366bfc2dceb1013797a973b3b8df75dcb4d
This commit is contained in:
dan
2016-07-29 20:58:19 +00:00
parent 145b4ea519
commit 19ff12dd76
6 changed files with 113 additions and 29 deletions

View File

@ -118,6 +118,80 @@ foreach {tn expr res} {
do_execsql_test 5.$tn "SELECT $expr" [list $res]
}
do_execsql_test 6.0 {
CREATE TABLE hh(a, b, c);
INSERT INTO hh VALUES('abc', 1, 'i');
INSERT INTO hh VALUES('ABC', 1, 'ii');
INSERT INTO hh VALUES('def', 2, 'iii');
INSERT INTO hh VALUES('DEF', 2, 'iv');
INSERT INTO hh VALUES('GHI', 3, 'v');
INSERT INTO hh VALUES('ghi', 3, 'vi');
CREATE INDEX hh_ab ON hh(a, b);
}
do_execsql_test 6.1 {
SELECT c FROM hh WHERE (a, b) = (SELECT 'abc', 1);
} {i}
do_execsql_test 6.2 {
SELECT c FROM hh WHERE (a, b) = (SELECT 'abc' COLLATE nocase, 1);
} {i}
do_execsql_test 6.3 {
SELECT c FROM hh WHERE a = (SELECT 'abc' COLLATE nocase) AND b = (SELECT 1);
} {i}
do_execsql_test 6.4 {
SELECT c FROM hh WHERE +a = (SELECT 'abc' COLLATE nocase) AND b = (SELECT 1);
} {i}
do_execsql_test 6.5 {
SELECT c FROM hh WHERE a = (SELECT 'abc') COLLATE nocase AND b = (SELECT 1);
} {i ii}
do_catchsql_test 6.6 {
SELECT c FROM hh WHERE (a, b) = (SELECT 'abc', 1) COLLATE nocase;
} {1 {invalid use of row value}}
do_catchsql_test 6.7 {
SELECT c FROM hh WHERE (a, b) = 1;
} {1 {invalid use of row value}}
do_execsql_test 6.8 {
SELECT c FROM hh WHERE (a COLLATE nocase, b) = (SELECT 'def', 2);
} {iii iv}
do_execsql_test 6.9 {
SELECT c FROM hh WHERE (a COLLATE nocase, b) IS NOT (SELECT 'def', 2);
} {i ii v vi}
do_execsql_test 6.10 {
SELECT c FROM hh WHERE (b, a) = (SELECT 2, 'def');
} {iii}
do_execsql_test 7.0 {
CREATE TABLE xy(i INTEGER PRIMARY KEY, j, k);
INSERT INTO xy VALUES(1, 1, 1);
INSERT INTO xy VALUES(2, 2, 2);
INSERT INTO xy VALUES(3, 3, 3);
INSERT INTO xy VALUES(4, 4, 4);
}
foreach {tn sql res eqp} {
1 "SELECT * FROM xy WHERE (i, j) IS (2, 2)" {2 2 2}
"0 0 0 {SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid=?)}"
2 "SELECT * FROM xy WHERE (k, j) < (2, 3)" {1 1 1 2 2 2}
"0 0 0 {SCAN TABLE xy}"
3 "SELECT * FROM xy WHERE (i, j) < (2, 3)" {1 1 1 2 2 2}
"0 0 0 {SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid<?)}"
4 "SELECT * FROM xy WHERE (i, j) > (2, 1)" {2 2 2 3 3 3 4 4 4}
"0 0 0 {SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid>?)}"
5 "SELECT * FROM xy WHERE (i, j) > ('2', 1)" {2 2 2 3 3 3 4 4 4}
"0 0 0 {SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid>?)}"
} {
do_eqp_test 7.$tn.1 $sql $eqp
do_execsql_test 7.$tn.2 $sql $res
}
finish_test