1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Fix a case where combining row-value UPDATE FROM syntax with window functions over aggregates can cause an error.

FossilOrigin-Name: 4a587c3492faa99490fd67ca1de9fceafcdc12d220f42817791923be258b73f1
This commit is contained in:
dan
2021-06-03 18:56:42 +00:00
parent a6df0e693f
commit 19e4eefbca
4 changed files with 41 additions and 9 deletions

View File

@ -663,4 +663,35 @@ do_catchsql_test 29.1 {
SELECT (SELECT 1 WHERE ((SELECT 1 WHERE (2,(2,0)) IS (2,(20))),(2,0)) IS (2,(20))) WHERE (2,(2,0)) IS (2 IN(SELECT 1 WHERE (2,(2,2,0)) IS (2,(20))),(20));
} {1 {row value misused}}
#-------------------------------------------------------------------------
reset_db
do_execsql_test 30.0 {
CREATE TABLE t1(x, y, z);
CREATE TABLE t2(a, b);
INSERT INTO t1 VALUES(1000, 2000, 3000);
INSERT INTO t2 VALUES(NULL, NULL);
}
do_execsql_test 30.1 {
UPDATE t2 SET (a,b)=(
SELECT max( t1.x ) OVER( PARTITION BY sum( (SELECT t1.y) ) ), 2
)
FROM t1;
} {}
do_execsql_test 30.2 {
SELECT * FROM t2
} {1000 2}
reset_db
do_execsql_test 30.3 {
CREATE TABLE t1(x INT PRIMARY KEY, y, z);
CREATE TABLE t2(a,b,c,d,e,PRIMARY KEY(a,b))WITHOUT ROWID;
UPDATE t2 SET (d,d,a)=(SELECT EXISTS(SELECT 1 IN(SELECT max( 1 IN(SELECT x ORDER BY 1)) OVER(PARTITION BY sum((SELECT y FROM t1 UNION SELECT x ORDER BY 1)))INTERSECT SELECT EXISTS(SELECT 1 FROM t1 UNION SELECT x ORDER BY 1) ORDER BY 1) ORDERa)|9 AS blob, 2, 3) FROM t1 WHERE x<a;
}
finish_test