mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix a problem with renaming tables when the schema contains WINDOW definitions with (illegal) non-numeric expressions as part of a PRECEDING or FOLLOWING clause.
FossilOrigin-Name: 348e7f193a963390a0595183d603541f85c5d1a911c98ed2e06599691ffe98f5
This commit is contained in:
@ -20,6 +20,7 @@ ifcapable !altertable {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
ifcapable windowfunc {
|
||||
do_execsql_test 1.0 {
|
||||
CREATE TABLE t1(a, b);
|
||||
@ -273,4 +274,48 @@ do_execsql_test 11.4 {
|
||||
END}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
do_execsql_test 12.1 {
|
||||
CREATE TABLE t1(a,b,c,d,e,f,g,h,j,jj,Zjj,k,aQ,bb,cc,dd,ee DEFAULT 3.14,
|
||||
ff DEFAULT('hiccup'),gg NOD NULL DEFAULT(false));
|
||||
CREATE TRIGGER AFTER INSERT ON t1 WHEN new.a NOT NULL BEGIN
|
||||
|
||||
SELECT b () OVER , dense_rank() OVER d, d () OVER w1
|
||||
FROM t1
|
||||
WINDOW
|
||||
w1 AS
|
||||
( w1 ORDER BY d
|
||||
ROWS BETWEEN 2 NOT IN(SELECT a, sum(d) w2,max(d)OVER FROM t1
|
||||
WINDOW
|
||||
w1 AS
|
||||
(PARTITION BY d
|
||||
ROWS BETWEEN '' PRECEDING AND false FOLLOWING),
|
||||
d AS
|
||||
(PARTITION BY b ORDER BY d
|
||||
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
|
||||
) PRECEDING AND 1 FOLLOWING),
|
||||
w2 AS
|
||||
(PARTITION BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
|
||||
w3 AS
|
||||
(PARTITION BY b ORDER BY d
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
|
||||
;
|
||||
SELECT a, sum(d) w2,max(d)OVER FROM t1
|
||||
WINDOW
|
||||
w1 AS
|
||||
(PARTITION BY d
|
||||
ROWS BETWEEN '' PRECEDING AND false FOLLOWING),
|
||||
d AS
|
||||
(PARTITION BY b ORDER BY d
|
||||
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
|
||||
;
|
||||
|
||||
END;
|
||||
}
|
||||
|
||||
do_execsql_test 12.2 {
|
||||
ALTER TABLE t1 RENAME TO t1x;
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user