| Index: third_party/sqlite/src/test/temptrigger.test | 
| diff --git a/third_party/sqlite/src/test/temptrigger.test b/third_party/sqlite/src/test/temptrigger.test | 
| index ececc4a8a878b40c181a8c09baf353cacc6177c8..551c620479a53ad25c50e743b9472d8f7f3ccef4 100644 | 
| --- a/third_party/sqlite/src/test/temptrigger.test | 
| +++ b/third_party/sqlite/src/test/temptrigger.test | 
| @@ -13,6 +13,7 @@ | 
|  | 
| set testdir [file dirname $argv0] | 
| source $testdir/tester.tcl | 
| +set testprefix temptrigger | 
|  | 
| ifcapable {!trigger || !shared_cache} { finish_test ; return } | 
|  | 
| @@ -157,8 +158,8 @@ sqlite3_enable_shared_cache $::enable_shared_cache | 
| #   temptrigger-3.4: Check that the temp trigger can be dropped without error. | 
| # | 
| do_test temptrigger-3.1 { | 
| -  catch { file delete -force test2.db test2.db-journal } | 
| -  catch { file delete -force test.db test.db-journal } | 
| +  catch { forcedelete test2.db test2.db-journal } | 
| +  catch { forcedelete test.db test.db-journal } | 
| sqlite3 db test.db | 
| sqlite3 db2 test2.db | 
| execsql { CREATE TABLE t2(a, b) } db2 | 
| @@ -201,4 +202,78 @@ do_test temptrigger-3.4 { | 
| catch { db close } | 
| catch { db2 close } | 
|  | 
| + | 
| +#------------------------------------------------------------------------- | 
| +# Test that creating a temp table after a temp trigger on the same name | 
| +# has been created is an error. | 
| +# | 
| +reset_db | 
| +do_execsql_test 4.0 { | 
| +  CREATE TABLE t1(x); | 
| +  CREATE TEMP TRIGGER tr1 BEFORE INSERT ON t1 BEGIN | 
| +    SELECT 1,2,3; | 
| +  END; | 
| +} | 
| + | 
| +do_execsql_test 4.1 { | 
| +  CREATE TEMP TABLE t1(x); | 
| +} | 
| + | 
| +#------------------------------------------------------------------------- | 
| +# Test that no harm is done if the table a temp trigger is attached to is | 
| +# deleted by an external connection. | 
| +# | 
| +reset_db | 
| +do_execsql_test 5.0 { | 
| +  CREATE TABLE t1(x); | 
| +  CREATE TEMP TRIGGER tr1 BEFORE INSERT ON t1 BEGIN SELECT 1,2,3; END; | 
| +} | 
| + | 
| +do_test 5.1 { | 
| +  sqlite3 db2 test.db | 
| +  execsql { DROP TABLE t1 } db2 | 
| +} {} | 
| + | 
| +do_execsql_test 5.2 { | 
| +  SELECT * FROM sqlite_master; | 
| +  SELECT * FROM sqlite_temp_master; | 
| +} { | 
| +  trigger tr1 t1 0 | 
| +  {CREATE TRIGGER tr1 BEFORE INSERT ON t1 BEGIN SELECT 1,2,3; END} | 
| +} | 
| +db2 close | 
| + | 
| +#------------------------------------------------------------------------- | 
| +# Check that if a second connection creates a table in an attached database | 
| +# with the same name as a table in the main database that has a temp | 
| +# trigger attached to it nothing goes awry. | 
| +# | 
| +reset_db | 
| +forcedelete test.db2 | 
| + | 
| +do_execsql_test 6.0 { | 
| +  CREATE TABLE t1(x); | 
| +  CREATE TEMP TRIGGER tr1 BEFORE INSERT ON t1 BEGIN | 
| +    SELECT raise(ABORT, 'error'); | 
| +  END; | 
| +  ATTACH 'test.db2' AS aux; | 
| +} | 
| + | 
| +do_test 6.1 { | 
| +  sqlite3 db2 test.db2 | 
| +  execsql { CREATE TABLE t1(a, b, c); } db2 | 
| +} {} | 
| + | 
| +do_execsql_test 6.2 { | 
| +  SELECT type,name,tbl_name,sql FROM aux.sqlite_master; | 
| +  INSERT INTO aux.t1 VALUES(1,2,3); | 
| +} { | 
| +  table t1 t1 {CREATE TABLE t1(a, b, c)} | 
| +} | 
| + | 
| +do_catchsql_test 6.3 { | 
| +  INSERT INTO main.t1 VALUES(1); | 
| +} {1 error} | 
| +db2 close | 
| + | 
| finish_test | 
|  |