Index: third_party/sqlite/src/test/trigger1.test |
diff --git a/third_party/sqlite/src/test/trigger1.test b/third_party/sqlite/src/test/trigger1.test |
index 622aff2de7e67c7ec57f5ae617efaaf30505af86..1ebe12c89b58ea2e43424f18927310ce81a7aa7b 100644 |
--- a/third_party/sqlite/src/test/trigger1.test |
+++ b/third_party/sqlite/src/test/trigger1.test |
@@ -11,25 +11,25 @@ |
# with the database COMMIT/ROLLBACK logic. |
# |
# 1. CREATE and DROP TRIGGER tests |
-# trig-1.1: Error if table does not exist |
-# trig-1.2: Error if trigger already exists |
-# trig-1.3: Created triggers are deleted if the transaction is rolled back |
-# trig-1.4: DROP TRIGGER removes trigger |
-# trig-1.5: Dropped triggers are restored if the transaction is rolled back |
-# trig-1.6: Error if dropped trigger doesn't exist |
-# trig-1.7: Dropping the table automatically drops all triggers |
-# trig-1.8: A trigger created on a TEMP table is not inserted into sqlite_master |
-# trig-1.9: Ensure that we cannot create a trigger on sqlite_master |
-# trig-1.10: |
-# trig-1.11: |
-# trig-1.12: Ensure that INSTEAD OF triggers cannot be created on tables |
-# trig-1.13: Ensure that AFTER triggers cannot be created on views |
-# trig-1.14: Ensure that BEFORE triggers cannot be created on views |
+# trigger1-1.1: Error if table does not exist |
+# trigger1-1.2: Error if trigger already exists |
+# trigger1-1.3: Created triggers are deleted if the transaction is rolled back |
+# trigger1-1.4: DROP TRIGGER removes trigger |
+# trigger1-1.5: Dropped triggers are restored if the transaction is rolled back |
+# trigger1-1.6: Error if dropped trigger doesn't exist |
+# trigger1-1.7: Dropping the table automatically drops all triggers |
+# trigger1-1.8: A trigger created on a TEMP table is not inserted into sqlite_master |
+# trigger1-1.9: Ensure that we cannot create a trigger on sqlite_master |
+# trigger1-1.10: |
+# trigger1-1.11: |
+# trigger1-1.12: Ensure that INSTEAD OF triggers cannot be created on tables |
+# trigger1-1.13: Ensure that AFTER triggers cannot be created on views |
+# trigger1-1.14: Ensure that BEFORE triggers cannot be created on views |
# |
set testdir [file dirname $argv0] |
source $testdir/tester.tcl |
-ifcapable {!trigger} { |
+ifcapable !trigger||!compound { |
finish_test |
return |
} |
@@ -210,7 +210,7 @@ do_test trigger1-1.12 { |
delete from t1 WHERE a=old.a+2; |
end; |
} |
-} {1 {cannot create INSTEAD OF trigger on table: main.t1}} |
+} {1 {cannot create INSTEAD OF trigger on table: t1}} |
ifcapable view { |
# Ensure that we cannot create BEFORE triggers on views |
@@ -221,7 +221,7 @@ do_test trigger1-1.13 { |
delete from t1 WHERE a=old.a+2; |
end; |
} |
-} {1 {cannot create BEFORE trigger on view: main.v1}} |
+} {1 {cannot create BEFORE trigger on view: v1}} |
# Ensure that we cannot create AFTER triggers on views |
do_test trigger1-1.14 { |
catchsql { |
@@ -231,7 +231,7 @@ do_test trigger1-1.14 { |
delete from t1 WHERE a=old.a+2; |
end; |
} |
-} {1 {cannot create AFTER trigger on view: main.v1}} |
+} {1 {cannot create AFTER trigger on view: v1}} |
} ;# ifcapable view |
# Check for memory leaks in the trigger parser |
@@ -265,42 +265,54 @@ ifcapable tempdb { |
END; |
} |
} {0 {}} |
- do_test trigger-3.2 { |
+ do_test trigger1-3.2 { |
catchsql { |
INSERT INTO t1 VALUES(1,2); |
SELECT * FROM t2; |
} |
} {1 {no such table: main.t2}} |
- do_test trigger-3.3 { |
+ do_test trigger1-3.3 { |
db close |
set rc [catch {sqlite3 db test.db} err] |
if {$rc} {lappend rc $err} |
set rc |
} {0} |
- do_test trigger-3.4 { |
+ do_test trigger1-3.4 { |
catchsql { |
INSERT INTO t1 VALUES(1,2); |
SELECT * FROM t2; |
} |
} {1 {no such table: main.t2}} |
- do_test trigger-3.5 { |
+ do_test trigger1-3.5 { |
catchsql { |
CREATE TEMP TABLE t2(x,y); |
INSERT INTO t1 VALUES(1,2); |
SELECT * FROM t2; |
} |
} {1 {no such table: main.t2}} |
- do_test trigger-3.6 { |
+ do_test trigger1-3.6.1 { |
catchsql { |
DROP TRIGGER r1; |
CREATE TEMP TRIGGER r1 AFTER INSERT ON t1 BEGIN |
+ INSERT INTO t2 VALUES(NEW.a,NEW.b), (NEW.b*100, NEW.a*100); |
+ END; |
+ INSERT INTO t1 VALUES(1,2); |
+ SELECT * FROM t2; |
+ } |
+ } {0 {1 2 200 100}} |
+ do_test trigger1-3.6.2 { |
+ catchsql { |
+ DROP TRIGGER r1; |
+ DELETE FROM t1; |
+ DELETE FROM t2; |
+ CREATE TEMP TRIGGER r1 AFTER INSERT ON t1 BEGIN |
INSERT INTO t2 VALUES(NEW.a,NEW.b); |
END; |
INSERT INTO t1 VALUES(1,2); |
SELECT * FROM t2; |
} |
} {0 {1 2}} |
- do_test trigger-3.7 { |
+ do_test trigger1-3.7 { |
execsql { |
DROP TABLE t2; |
CREATE TABLE t2(x,y); |
@@ -308,7 +320,7 @@ ifcapable tempdb { |
} |
} {} |
- # There are two versions of trigger-3.8 and trigger-3.9. One that uses |
+ # There are two versions of trigger1-3.8 and trigger1-3.9. One that uses |
# compound SELECT statements, and another that does not. |
ifcapable compound { |
do_test trigger1-3.8 { |
@@ -411,6 +423,7 @@ do_test trigger1-6.2 { |
do_test trigger1-6.3 { |
catchsql {DELETE FROM t2} |
} {1 {deletes are not permitted}} |
+verify_ex_errcode trigger1-6.3b SQLITE_CONSTRAINT_TRIGGER |
do_test trigger1-6.4 { |
execsql {SELECT * FROM t2} |
} {3 4 7 8} |
@@ -434,7 +447,7 @@ do_test trigger1-6.8 { |
execsql {SELECT * FROM t2} |
} {3 4 7 8} |
-integrity_check trigger-7.1 |
+integrity_check trigger1-7.1 |
# Check to make sure the name of a trigger can be quoted so that keywords |
# can be used as trigger names. Ticket #468 |
@@ -479,7 +492,7 @@ do_test trigger1-8.6 { |
ifcapable conflict { |
# Make sure REPLACE works inside of triggers. |
# |
- # There are two versions of trigger-9.1 and trigger-9.2. One that uses |
+ # There are two versions of trigger1-9.1 and trigger1-9.2. One that uses |
# compound SELECT statements, and another that does not. |
ifcapable compound { |
do_test trigger1-9.1 { |
@@ -534,8 +547,8 @@ ifcapable conflict { |
# example, that you can drop and re-create tables referenced by triggers. |
ifcapable tempdb&&attach { |
do_test trigger1-10.0 { |
- file delete -force test2.db |
- file delete -force test2.db-journal |
+ forcedelete test2.db |
+ forcedelete test2.db-journal |
execsql { |
ATTACH 'test2.db' AS aux; |
} |
@@ -600,7 +613,7 @@ ifcapable tempdb&&attach { |
SELECT * FROM insert_log; |
} |
} {main 11 12 13 temp 14 15 16 aux 17 18 19} |
- do_test trigger1-10.8 { |
+ do_test trigger1-10.9 { |
# Drop and re-create the insert_log table in a different database. Note |
# that we can change the column names because the trigger programs don't |
# use them explicitly. |