mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Avoid a dangling pointer comparison when renaming a table that has a trigger
that itself contains a window function with an (illegal) column reference in a FOLLOWING expression. FossilOrigin-Name: d45bee36f2c1091a2d32c16ca8921bf4e7c9e40c46d0a36fbcb179ecfafcfbf0
This commit is contained in:
@ -178,4 +178,59 @@ do_execsql_test 4.3 {
|
||||
END}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
do_execsql_test 5.0 {
|
||||
CREATE TABLE t2(a);
|
||||
CREATE TRIGGER r2 AFTER INSERT ON t2 WHEN new.a NOT NULL BEGIN
|
||||
SELECT a, rank() OVER w1 FROM t2
|
||||
WINDOW w1 AS (
|
||||
PARTITION BY b ORDER BY d ROWS BETWEEN 2 PRECEDING AND a FOLLOWING
|
||||
),
|
||||
w2 AS (
|
||||
PARTITION BY b
|
||||
ORDER BY d ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
);
|
||||
END;
|
||||
} {}
|
||||
|
||||
do_catchsql_test 5.0.1 {
|
||||
INSERT INTO t2 VALUES(1);
|
||||
} {1 {no such column: b}}
|
||||
|
||||
do_execsql_test 5.1 {
|
||||
ALTER TABLE t2 RENAME TO t2x;
|
||||
SELECT sql FROM sqlite_master WHERE name = 'r2';
|
||||
} {
|
||||
{CREATE TRIGGER r2 AFTER INSERT ON "t2x" WHEN new.a NOT NULL BEGIN
|
||||
SELECT a, rank() OVER w1 FROM "t2x"
|
||||
WINDOW w1 AS (
|
||||
PARTITION BY b ORDER BY d ROWS BETWEEN 2 PRECEDING AND a FOLLOWING
|
||||
),
|
||||
w2 AS (
|
||||
PARTITION BY b
|
||||
ORDER BY d ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
);
|
||||
END}
|
||||
}
|
||||
|
||||
do_execsql_test 5.2 {
|
||||
ALTER TABLE t2x RENAME a TO aaaa;
|
||||
SELECT sql FROM sqlite_master WHERE name = 'r2';
|
||||
} {
|
||||
{CREATE TRIGGER r2 AFTER INSERT ON "t2x" WHEN new.aaaa NOT NULL BEGIN
|
||||
SELECT aaaa, rank() OVER w1 FROM "t2x"
|
||||
WINDOW w1 AS (
|
||||
PARTITION BY b ORDER BY d ROWS BETWEEN 2 PRECEDING AND a FOLLOWING
|
||||
),
|
||||
w2 AS (
|
||||
PARTITION BY b
|
||||
ORDER BY d ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
);
|
||||
END}
|
||||
}
|
||||
|
||||
do_catchsql_test 5.3 {
|
||||
INSERT INTO t2x VALUES(1);
|
||||
} {1 {no such column: b}}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user