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