Merge 'Support the OFFSET clause for Compound select' from meteorgan

Closes #2376
This commit is contained in:
Jussi Saurio
2025-08-01 10:18:13 +03:00
committed by GitHub
9 changed files with 137 additions and 38 deletions

View File

@@ -384,6 +384,24 @@ if {[info exists ::env(SQLITE_EXEC)] && ($::env(SQLITE_EXEC) eq "scripts/limbo-s
x|x
y|y}
do_execsql_test_on_specific_db {:memory:} select-union-all-with-offset {
CREATE TABLE t (x TEXT, y TEXT);
CREATE TABLE u (x TEXT, y TEXT);
INSERT INTO t VALUES('x','x'),('y','y');
INSERT INTO u VALUES('x','x'),('y','y'),('z', 'z');
select * from t UNION ALL select * from u limit 1 offset 1;
} {y|y}
do_execsql_test_on_specific_db {:memory:} select-union-with-offset {
CREATE TABLE t (x TEXT, y TEXT);
CREATE TABLE u (x TEXT, y TEXT);
INSERT INTO t VALUES('x','x'),('y','y');
INSERT INTO u VALUES('x','x'),('y','y'),('z', 'z');
select * from t UNION select * from u limit 1 offset 1;
} {y|y}
do_execsql_test_on_specific_db {:memory:} select-intersect-1 {
CREATE TABLE t (x TEXT, y TEXT);
CREATE TABLE u (x TEXT, y TEXT);
@@ -461,6 +479,16 @@ if {[info exists ::env(SQLITE_EXEC)] && ($::env(SQLITE_EXEC) eq "scripts/limbo-s
} {x|x
y|y}
do_execsql_test_on_specific_db {:memory:} select-intersect-with-offset {
CREATE TABLE t (x TEXT, y TEXT);
CREATE TABLE u (x TEXT, y TEXT);
INSERT INTO t VALUES('x','x'),('y','y'), ('z','z');
INSERT INTO u VALUES('x','x'),('y','y'), ('z','z');
select * from t INTERSECT select * from u limit 2 offset 1;
} {y|y
z|z}
do_execsql_test_on_specific_db {:memory:} select-intersect-union-with-limit {
CREATE TABLE t (x TEXT, y TEXT);
CREATE TABLE u (x TEXT, y TEXT);
@@ -616,7 +644,7 @@ if {[info exists ::env(SQLITE_EXEC)] && ($::env(SQLITE_EXEC) eq "scripts/limbo-s
x
y}
do_execsql_test_on_specific_db {:memory:} select-values-union-all-limit-2 {
do_execsql_test_on_specific_db {:memory:} select-values-union-all-limit-1 {
CREATE TABLE t (x TEXT);
INSERT INTO t VALUES('x'), ('y'), ('z');
@@ -624,6 +652,24 @@ if {[info exists ::env(SQLITE_EXEC)] && ($::env(SQLITE_EXEC) eq "scripts/limbo-s
} {a
b
x}
do_execsql_test_on_specific_db {:memory:} select-values-union-all-offset {
CREATE TABLE t (x TEXT);
INSERT INTO t VALUES('x'), ('y'), ('z');
values('a'), ('b') UNION ALL select * from t limit 3 offset 1;
} {b
x
y}
do_execsql_test_on_specific_db {:memory:} select-values-union-all-offset-1 {
CREATE TABLE t (x TEXT);
INSERT INTO t VALUES('i'), ('j'), ('x'), ('y'), ('z');
values('a') UNION ALL select * from t limit 3 offset 1;
} {i
j
x}
}
do_execsql_test_on_specific_db {:memory:} select-no-match-in-leaf-page {