1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Fix a crash that could occur if the WHERE clause of an UPDATE statement on a view that does not feature a column named "rowid" contains a term such as "rowid=?".

FossilOrigin-Name: 8523670d50004f3112b7871f11c8b8b02aab96ab
This commit is contained in:
dan
2014-10-28 16:50:10 +00:00
parent 635e57fc48
commit dd8c460081
4 changed files with 44 additions and 11 deletions

View File

@ -32,6 +32,7 @@ ifcapable {!trigger} {
finish_test
return
}
set ::testprefix trigger9
proc has_rowdata {sql} {
expr {[lsearch [execsql "explain $sql"] RowData]>=0}
@ -220,4 +221,36 @@ ifcapable compound {
} {2}
}
reset_db
do_execsql_test 4.1 {
CREATE TABLE t1(a, b);
CREATE TABLE log(x);
INSERT INTO t1 VALUES(1, 2);
INSERT INTO t1 VALUES(3, 4);
CREATE VIEW v1 AS SELECT a, b FROM t1;
CREATE TRIGGER tr1 INSTEAD OF DELETE ON v1 BEGIN
INSERT INTO log VALUES('delete');
END;
CREATE TRIGGER tr2 INSTEAD OF UPDATE ON v1 BEGIN
INSERT INTO log VALUES('update');
END;
CREATE TRIGGER tr3 INSTEAD OF INSERT ON v1 BEGIN
INSERT INTO log VALUES('insert');
END;
}
do_execsql_test 4.2 {
DELETE FROM v1 WHERE rowid=1;
} {}
do_execsql_test 4.3 {
UPDATE v1 SET a=b WHERE rowid=2;
} {}
finish_test