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

Add test cases for WITH clauses.

FossilOrigin-Name: e7e65c7559ed43e7065adc2ec1bd242bf187b7c3
This commit is contained in:
dan
2015-11-07 17:51:39 +00:00
parent 6e7722669e
commit fe88fbfc82
3 changed files with 118 additions and 8 deletions

View File

@ -865,4 +865,114 @@ do_catchsql_test 16.1 {
SELECT * FROM i;
} {1 {recursive aggregate queries not supported}}
#-------------------------------------------------------------------------
do_execsql_test 17.1 {
WITH x(a) AS (
WITH y(b) AS (SELECT 10)
SELECT 9 UNION ALL SELECT * FROM y
)
SELECT * FROM x
} {9 10}
do_execsql_test 17.2 {
WITH x AS (
WITH y(b) AS (SELECT 10)
SELECT * FROM y UNION ALL SELECT * FROM y
)
SELECT * FROM x
} {10 10}
do_test 17.2 {
db eval {
WITH x AS (
WITH y(b) AS (SELECT 10)
SELECT * FROM y UNION ALL SELECT * FROM y
)
SELECT * FROM x
} A {
# no op
}
set A(*)
} {b}
do_catchsql_test 17.3 {
WITH i AS (
WITH j AS (SELECT 5)
SELECT 5 FROM i UNION SELECT 8 FROM i
)
SELECT * FROM i;
} {1 {circular reference: i}}
do_catchsql_test 17.4 {
WITH i AS (
WITH j AS (SELECT 5)
SELECT 5 FROM t1 UNION SELECT 8 FROM t11
)
SELECT * FROM i;
} {1 {no such table: t11}}
do_execsql_test 17.5 {
WITH
x1 AS (SELECT 10),
x2 AS (SELECT * FROM x1),
x3 AS (
WITH x1 AS (SELECT 11)
SELECT * FROM x2 UNION ALL SELECT * FROM x2
)
SELECT * FROM x3;
} {10 10}
do_execsql_test 17.6 {
WITH
x1 AS (SELECT 10),
x2 AS (SELECT * FROM x1),
x3 AS (
WITH x1 AS (SELECT 11)
SELECT * FROM x2 UNION ALL SELECT * FROM x1
)
SELECT * FROM x3;
} {10 11}
do_execsql_test 17.7 {
WITH
x1 AS (SELECT 10),
x2 AS (SELECT * FROM x1),
x3 AS (
WITH
x1 AS ( SELECT 11 ),
x4 AS ( SELECT * FROM x2 )
SELECT * FROM x4 UNION ALL SELECT * FROM x1
)
SELECT * FROM x3;
} {10 11}
do_execsql_test 17.8 {
WITH
x1 AS (SELECT 10),
x2 AS (SELECT * FROM x1),
x3 AS (
WITH
x1 AS ( SELECT 11 ),
x4 AS ( SELECT * FROM x2 )
SELECT * FROM x4 UNION ALL SELECT * FROM x1
)
SELECT * FROM x3;
} {10 11}
do_execsql_test 17.9 {
WITH
x1 AS (SELECT 10),
x2 AS (SELECT 11),
x3 AS (
SELECT * FROM x1 UNION ALL SELECT * FROM x2
),
x4 AS (
WITH
x1 AS (SELECT 12),
x2 AS (SELECT 13)
SELECT * FROM x3
)
SELECT * FROM x4;
} {10 11}
finish_test