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:
@ -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
|
||||
|
Reference in New Issue
Block a user