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

Fix problems with UPDATE...FROM statements that modify rowid or primary-key values.

FossilOrigin-Name: 623ab585d1aa1bdde2df17f1936aa4eec2d997b274acc5c7b291d9566a9ec2c5
This commit is contained in:
dan
2020-05-01 18:43:49 +00:00
parent 8b023cf592
commit 7465787b97
4 changed files with 51 additions and 18 deletions

View File

@ -315,5 +315,36 @@ do_execsql_test 3.1 {
UPDATE t1 SET z=v FROM input WHERE x=k;
}
foreach {tn sql} {
2 {
CREATE TABLE x1(a INT PRIMARY KEY, b, c) WITHOUT ROWID;
}
1 {
CREATE TABLE x1(a INTEGER PRIMARY KEY, b, c);
}
3 {
CREATE TABLE x1(a INT PRIMARY KEY, b, c);
}
} {
reset_db
execsql $sql
do_execsql_test 4.$tn.0 {
INSERT INTO x1 VALUES(1, 1, 1);
INSERT INTO x1 VALUES(2, 2, 2);
INSERT INTO x1 VALUES(3, 3, 3);
INSERT INTO x1 VALUES(4, 4, 4);
INSERT INTO x1 VALUES(5, 5, 5);
CREATE TABLE map(o, t);
INSERT INTO map VALUES(3, 30), (4, 40), (1, 10);
}
do_execsql_test 4.$tn.1 {
UPDATE x1 SET a=t FROM map WHERE a=o;
SELECT * FROM x1 ORDER BY a;
} {2 2 2 5 5 5 10 1 1 30 3 3 40 4 4}
}
finish_test