1 # 2011 March 18 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #*********************************************************************** 11 # This file implements regression tests for SQLite library. 12 # 13 # This file implements tests to verify that ticket 14 # [f7b4edece25c994857dc139207f55a53c8319fae] has been fixed. 15 # 16 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 20 # Open two database connections to the same database file in 21 # shared cache mode. Create update hooks that will fire on 22 # each connection. 23 # 24 db close 25 set ::enable_shared_cache [sqlite3_enable_shared_cache 1] 26 sqlite3 db1 test.db 27 sqlite3 db2 test.db 28 unset -nocomplain HOOKS 29 set HOOKS {} 30 proc update_hook {args} { lappend ::HOOKS $args } 31 db1 update_hook update_hook 32 db2 update_hook update_hook 33 34 # Create a prepared statement 35 # 36 do_test tkt-f7b4edec-1 { 37 execsql { CREATE TABLE t1(x, y); } db1 38 execsql { INSERT INTO t1 VALUES(1, 2) } db1 39 set ::HOOKS 40 } {{INSERT main t1 1}} 41 42 # In the second database connection cause the schema to be reparsed 43 # without changing the schema cookie. 44 # 45 set HOOKS {} 46 do_test tkt-f7b4edec-2 { 47 execsql { 48 BEGIN; 49 DROP TABLE t1; 50 CREATE TABLE t1(x, y); 51 ROLLBACK; 52 } db2 53 set ::HOOKS 54 } {} 55 56 # Rerun the prepared statement that was created prior to the 57 # schema reparse. Verify that the update-hook gives the correct 58 # output. 59 # 60 set HOOKS {} 61 do_test tkt-f7b4edec-3 { 62 execsql { INSERT INTO t1 VALUES(1, 2) } db1 63 set ::HOOKS 64 } {{INSERT main t1 2}} 65 66 # Be sure to restore the original shared-cache mode setting before 67 # returning. 68 # 69 db1 close 70 db2 close 71 sqlite3_enable_shared_cache $::enable_shared_cache 72 73 74 finish_test 75