Index: third_party/sqlite/src/test/limit.test |
diff --git a/third_party/sqlite/src/test/limit.test b/third_party/sqlite/src/test/limit.test |
index e5aac70da43504e35c7ff4517a65818a2239fdc3..5d6ef336b26848dbd2ac4fde3930a7c6be19ae66 100644 |
--- a/third_party/sqlite/src/test/limit.test |
+++ b/third_party/sqlite/src/test/limit.test |
@@ -468,5 +468,172 @@ do_test limit-12.4 { |
} |
} {1 {no such column: x}} |
+# Ticket [db4d96798da8b] |
+# LIMIT does not work with nested views containing UNION ALL |
+# |
+do_test limit-13.1 { |
+ db eval { |
+ CREATE TABLE t13(x); |
+ INSERT INTO t13 VALUES(1),(2); |
+ CREATE VIEW v13a AS SELECT x AS y FROM t13; |
+ CREATE VIEW v13b AS SELECT y AS z FROM v13a UNION ALL SELECT y+10 FROM v13a; |
+ CREATE VIEW v13c AS SELECT z FROM v13b UNION ALL SELECT z+20 FROM v13b; |
+ } |
+} {} |
+do_test limit-13.2 { |
+ db eval {SELECT z FROM v13c LIMIT 1} |
+} {1} |
+do_test limit-13.3 { |
+ db eval {SELECT z FROM v13c LIMIT 2} |
+} {1 2} |
+do_test limit-13.4 { |
+ db eval {SELECT z FROM v13c LIMIT 3} |
+} {1 2 11} |
+do_test limit-13.5 { |
+ db eval {SELECT z FROM v13c LIMIT 4} |
+} {1 2 11 12} |
+do_test limit-13.6 { |
+ db eval {SELECT z FROM v13c LIMIT 5} |
+} {1 2 11 12 21} |
+do_test limit-13.7 { |
+ db eval {SELECT z FROM v13c LIMIT 6} |
+} {1 2 11 12 21 22} |
+do_test limit-13.8 { |
+ db eval {SELECT z FROM v13c LIMIT 7} |
+} {1 2 11 12 21 22 31} |
+do_test limit-13.9 { |
+ db eval {SELECT z FROM v13c LIMIT 8} |
+} {1 2 11 12 21 22 31 32} |
+do_test limit-13.10 { |
+ db eval {SELECT z FROM v13c LIMIT 9} |
+} {1 2 11 12 21 22 31 32} |
+do_test limit-13.11 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 1} |
+} {2} |
+do_test limit-13.12 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 1} |
+} {2 11} |
+do_test limit-13.13 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 1} |
+} {2 11 12} |
+do_test limit-13.14 { |
+ db eval {SELECT z FROM v13c LIMIT 4 OFFSET 1} |
+} {2 11 12 21} |
+do_test limit-13.15 { |
+ db eval {SELECT z FROM v13c LIMIT 5 OFFSET 1} |
+} {2 11 12 21 22} |
+do_test limit-13.16 { |
+ db eval {SELECT z FROM v13c LIMIT 6 OFFSET 1} |
+} {2 11 12 21 22 31} |
+do_test limit-13.17 { |
+ db eval {SELECT z FROM v13c LIMIT 7 OFFSET 1} |
+} {2 11 12 21 22 31 32} |
+do_test limit-13.18 { |
+ db eval {SELECT z FROM v13c LIMIT 8 OFFSET 1} |
+} {2 11 12 21 22 31 32} |
+do_test limit-13.21 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 2} |
+} {11} |
+do_test limit-13.22 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 2} |
+} {11 12} |
+do_test limit-13.23 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 2} |
+} {11 12 21} |
+do_test limit-13.24 { |
+ db eval {SELECT z FROM v13c LIMIT 4 OFFSET 2} |
+} {11 12 21 22} |
+do_test limit-13.25 { |
+ db eval {SELECT z FROM v13c LIMIT 5 OFFSET 2} |
+} {11 12 21 22 31} |
+do_test limit-13.26 { |
+ db eval {SELECT z FROM v13c LIMIT 6 OFFSET 2} |
+} {11 12 21 22 31 32} |
+do_test limit-13.27 { |
+ db eval {SELECT z FROM v13c LIMIT 7 OFFSET 2} |
+} {11 12 21 22 31 32} |
+do_test limit-13.31 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 3} |
+} {12} |
+do_test limit-13.32 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 3} |
+} {12 21} |
+do_test limit-13.33 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 3} |
+} {12 21 22} |
+do_test limit-13.34 { |
+ db eval {SELECT z FROM v13c LIMIT 4 OFFSET 3} |
+} {12 21 22 31} |
+do_test limit-13.35 { |
+ db eval {SELECT z FROM v13c LIMIT 5 OFFSET 3} |
+} {12 21 22 31 32} |
+do_test limit-13.36 { |
+ db eval {SELECT z FROM v13c LIMIT 6 OFFSET 3} |
+} {12 21 22 31 32} |
+do_test limit-13.41 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 4} |
+} {21} |
+do_test limit-13.42 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 4} |
+} {21 22} |
+do_test limit-13.43 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 4} |
+} {21 22 31} |
+do_test limit-13.44 { |
+ db eval {SELECT z FROM v13c LIMIT 4 OFFSET 4} |
+} {21 22 31 32} |
+do_test limit-13.45 { |
+ db eval {SELECT z FROM v13c LIMIT 5 OFFSET 4} |
+} {21 22 31 32} |
+do_test limit-13.51 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 5} |
+} {22} |
+do_test limit-13.52 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 5} |
+} {22 31} |
+do_test limit-13.53 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 5} |
+} {22 31 32} |
+do_test limit-13.54 { |
+ db eval {SELECT z FROM v13c LIMIT 4 OFFSET 5} |
+} {22 31 32} |
+do_test limit-13.61 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 6} |
+} {31} |
+do_test limit-13.62 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 6} |
+} {31 32} |
+do_test limit-13.63 { |
+ db eval {SELECT z FROM v13c LIMIT 3 OFFSET 6} |
+} {31 32} |
+do_test limit-13.71 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 7} |
+} {32} |
+do_test limit-13.72 { |
+ db eval {SELECT z FROM v13c LIMIT 2 OFFSET 7} |
+} {32} |
+do_test limit-13.81 { |
+ db eval {SELECT z FROM v13c LIMIT 1 OFFSET 8} |
+} {} |
+ |
+do_execsql_test limit-14.1 { |
+ SELECT 123 LIMIT 1 OFFSET 0 |
+} {123} |
+do_execsql_test limit-14.2 { |
+ SELECT 123 LIMIT 1 OFFSET 1 |
+} {} |
+do_execsql_test limit-14.3 { |
+ SELECT 123 LIMIT 0 OFFSET 0 |
+} {} |
+do_execsql_test limit-14.4 { |
+ SELECT 123 LIMIT 0 OFFSET 1 |
+} {} |
+do_execsql_test limit-14.6 { |
+ SELECT 123 LIMIT -1 OFFSET 0 |
+} {123} |
+do_execsql_test limit-14.7 { |
+ SELECT 123 LIMIT -1 OFFSET 1 |
+} {} |
+ |
finish_test |