1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Update tests to work with SQLITE_ALLOW_ROWID_IN_VIEW.

FossilOrigin-Name: 495b8c7b08b998ddfe2ad055703f058c768e7e94014952e5cd8a81c7c1515cb1
This commit is contained in:
dan
2024-03-19 15:27:15 +00:00
parent 967c303212
commit f891ef8d61
10 changed files with 140 additions and 51 deletions

View File

@ -370,8 +370,17 @@ do_execsql_test 9.1 {
ANALYZE sqlite_schema;
INSERT INTO sqlite_stat1 VALUES('t1','t1x1','648 324 81 81 81 81 81 81 81081 81 81 81');
ANALYZE sqlite_schema;
SELECT a FROM (SELECT a FROM t1 NATURAL LEFT JOIN t1) NATURAL LEFT JOIN t1 WHERE (rowid,1)<=(5,0);
} {1}
}
ifcapable allow_rowid_in_view {
set res {1 {no such column: rowid}}
} else {
set res {0 1}
}
do_catchsql_test 9.2 {
SELECT a FROM
(SELECT a FROM t1 NATURAL LEFT JOIN t1) NATURAL LEFT JOIN t1
WHERE (rowid,1)<=(5,0);
} $res
# 2022-03-02 https://sqlite.org/forum/info/50a1bbe08ce4c29c
# Bloom-filter pulldown is incompatible with skip-scan.

View File

@ -41,6 +41,11 @@ do_execsql_test join8-1000 {
CREATE INDEX t1x2 ON t1(b);
INSERT INTO t1 DEFAULT VALUES;
} {}
ifcapable allow_rowid_in_view {
set res {1 {no such column: rowid}}
} else {
set res {0 1}
}
do_catchsql_test join8-1010 {
SELECT a
FROM (
@ -61,7 +66,7 @@ do_catchsql_test join8-1010 {
NATURAL LEFT FULL JOIN t1
WHERE ( rowid , 1 )<=(CASE 5 WHEN 619 THEN 841 ELSE 3374391096 END,0)
ORDER BY a ASC;
} {0 1}
} $res
# Pending issue #2: (now resolved)
# Jump to addrHalt inside the RIGHT JOIN body subroutine bypasses the

View File

@ -54,19 +54,34 @@ do_test misc2-2.1 {
}
} {}
ifcapable subquery {
do_catchsql_test misc2-2.2 {
SELECT rowid, * FROM (SELECT * FROM t1, t2);
} {1 {no such column: rowid}}
ifcapable allow_rowid_in_view {
do_catchsql_test misc2-2.2 {
SELECT rowid, * FROM (SELECT * FROM t1, t2);
} {0 {{} 1 2 3 7 8 9}}
} else {
do_catchsql_test misc2-2.2 {
SELECT rowid, * FROM (SELECT * FROM t1, t2);
} {1 {no such column: rowid}}
}
do_catchsql_test misc2-2.2b {
SELECT 'rowid', * FROM (SELECT * FROM t1, t2);
} {0 {rowid 1 2 3 7 8 9}}
}
ifcapable view {
do_catchsql_test misc2-2.3 {
CREATE VIEW v1 AS SELECT * FROM t1, t2;
SELECT rowid, * FROM v1;
} {1 {no such column: rowid}}
ifcapable allow_rowid_in_view {
do_catchsql_test misc2-2.3 {
CREATE VIEW v1 AS SELECT * FROM t1, t2;
SELECT rowid, * FROM v1;
} {0 {{} 1 2 3 7 8 9}}
} else {
do_catchsql_test misc2-2.3 {
CREATE VIEW v1 AS SELECT * FROM t1, t2;
SELECT rowid, * FROM v1;
} {1 {no such column: rowid}}
}
do_catchsql_test misc2-2.3b {
SELECT 'rowid', * FROM v1;
} {0 {rowid 1 2 3 7 8 9}}

View File

@ -212,17 +212,38 @@ do_execsql_test 10.2 {
END;
}
do_catchsql_test 10.3a {
INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
} {1 {no such column: new.rowid}}
do_catchsql_test 10.3b {
UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
} {1 {no such column: new.rowid}}
do_execsql_test 10.4 {
SELECT * FROM log;
} {}
ifcapable !allow_rowid_in_view {
do_catchsql_test 10.3a {
INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
} {1 {no such column: new.rowid}}
do_catchsql_test 10.3b {
UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
} {1 {no such column: new.rowid}}
do_execsql_test 10.4 {
SELECT * FROM log;
} {}
} else {
# Note: The values returned by the RETURNING clauses of the following
# two statements are the rowid columns of views. These values are not
# well defined, so the INSERT returns -1, and the UPDATE returns 1, 2
# and 3. These match the values used for new.rowid expressions, but
# not much else.
do_catchsql_test 10.3a {
INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
} {0 -1}
do_catchsql_test 10.3b {
UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
} {0 {1 2 3}}
do_execsql_test 10.4 {
SELECT * FROM log;
} {
insert -1 1234 5678 update 1 z y update 2 z y update 3 z y
}
}
# 2021-04-27 dbsqlfuzz 78b9400770ef8cc7d9427dfba26f4fcf46ea7dc2
# Returning clauses on TEMP tables with triggers.

View File

@ -803,17 +803,30 @@ do_execsql_test 16.0 {
INSERT INTO t3(rowid, z) VALUES(3, 3);
}
do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
do_execsql_test 16.2 { SELECT rowid FROM t1, v1; } {1}
do_execsql_test 16.3 { SELECT rowid FROM t3, v1; } {3}
do_execsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } {3}
ifcapable allow_rowid_in_view {
set nosuch "1 {no such column: rowid}"
do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
do_catchsql_test 16.2 { SELECT rowid FROM t1, v1; } $nosuch
do_catchsql_test 16.3 { SELECT rowid FROM t3, v1; } $nosuch
do_catchsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } $nosuch
do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
do_execsql_test 16.6 { SELECT rowid FROM v1, t1; } {1}
do_execsql_test 16.7 { SELECT rowid FROM v1, t3; } {3}
do_execsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } {3}
do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
do_catchsql_test 16.6 { SELECT rowid FROM v1, t1; } $nosuch
do_catchsql_test 16.7 { SELECT rowid FROM v1, t3; } $nosuch
do_catchsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } $nosuch
} else {
do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
do_execsql_test 16.2 { SELECT rowid FROM t1, v1; } {1}
do_execsql_test 16.3 { SELECT rowid FROM t3, v1; } {3}
do_execsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } {3}
do_catchsql_test 16.5 { SELECT rowid FROM t1, t3; } {1 {no such column: rowid}}
do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
do_execsql_test 16.6 { SELECT rowid FROM v1, t1; } {1}
do_execsql_test 16.7 { SELECT rowid FROM v1, t3; } {3}
do_execsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } {3}
}
do_catchsql_test 16.9 { SELECT rowid FROM t1, t3; } {1 {no such column: rowid}}

View File

@ -242,12 +242,27 @@ do_execsql_test 4.1 {
END;
}
do_catchsql_test 4.2 {
DELETE FROM v1 WHERE rowid=1;
} {1 {no such column: rowid}}
ifcapable !allow_rowid_in_view {
do_catchsql_test 4.2 {
DELETE FROM v1 WHERE rowid=1;
} {1 {no such column: rowid}}
do_catchsql_test 4.3 {
UPDATE v1 SET a=b WHERE rowid=2;
} {1 {no such column: rowid}}
do_catchsql_test 4.3 {
UPDATE v1 SET a=b WHERE rowid=2;
} {1 {no such column: rowid}}
} else {
do_execsql_test 4.2a {
DELETE FROM log;
}
do_catchsql_test 4.2 {
DELETE FROM v1 WHERE rowid=1;
} {0 {}}
do_catchsql_test 4.3 {
UPDATE v1 SET a=b WHERE rowid=2;
} {0 {}}
do_execsql_test 4.3b {
SELECT * FROM log;
}
}
finish_test