mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix the OP_OpenEphemeral opcode in the bytecode engine so that if it is called
a second or subsequent time, it merely clears the existing table rather than creating a new one. Proposed fix for ticket [d0866b26f83e9c55e30de0821f5d]. FossilOrigin-Name: 4678cb1044f0b4dc813e48f3bd0f85240a66e2ecf8763280d66726cc031c93a7
This commit is contained in:
@ -620,4 +620,49 @@ do_execsql_test 14.1 {
|
||||
);
|
||||
} {1 2 3}
|
||||
|
||||
# 2018-12-31
|
||||
# https://www.sqlite.org/src/info/d0866b26f83e9c55
|
||||
# Window function in correlated subquery causes assertion fault
|
||||
#
|
||||
do_catchsql_test 15.0 {
|
||||
WITH t(id, parent) AS (
|
||||
SELECT CAST(1 AS INT), CAST(NULL AS INT)
|
||||
UNION ALL
|
||||
SELECT 2, NULL
|
||||
UNION ALL
|
||||
SELECT 3, 1
|
||||
UNION ALL
|
||||
SELECT 4, 1
|
||||
UNION ALL
|
||||
SELECT 5, 2
|
||||
UNION ALL
|
||||
SELECT 6, 2
|
||||
), q AS (
|
||||
SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.id) AS rn
|
||||
FROM t
|
||||
WHERE parent IS NULL
|
||||
UNION ALL
|
||||
SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.id) AS rn
|
||||
FROM q
|
||||
JOIN t
|
||||
ON t.parent = q.id
|
||||
)
|
||||
SELECT *
|
||||
FROM q;
|
||||
} {1 {cannot use window functions in recursive queries}}
|
||||
do_execsql_test 15.1 {
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1(x);
|
||||
INSERT INTO t1 VALUES('a'), ('b'), ('c');
|
||||
CREATE TABLE t2(a, b);
|
||||
INSERT INTO t2 VALUES('X', 1), ('X', 2), ('Y', 2), ('Y', 3);
|
||||
SELECT x, (
|
||||
SELECT sum(b)
|
||||
OVER (PARTITION BY a ROWS BETWEEN UNBOUNDED PRECEDING
|
||||
AND UNBOUNDED FOLLOWING)
|
||||
FROM t2 WHERE b<x
|
||||
) FROM t1;
|
||||
} {a 3 b 3 c 3}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user