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 17set testdir [file dirname $argv0] 18source $testdir/tester.tcl 19ifcapable !shared_cache { finish_test ; return } 20 21# Open two database connections to the same database file in 22# shared cache mode. Create update hooks that will fire on 23# each connection. 24# 25db close 26set ::enable_shared_cache [sqlite3_enable_shared_cache 1] 27sqlite3 db1 test.db 28sqlite3 db2 test.db 29unset -nocomplain HOOKS 30set HOOKS {} 31proc update_hook {args} { lappend ::HOOKS $args } 32db1 update_hook update_hook 33db2 update_hook update_hook 34 35# Create a prepared statement 36# 37do_test tkt-f7b4edec-1 { 38 execsql { CREATE TABLE t1(x, y); } db1 39 execsql { INSERT INTO t1 VALUES(1, 2) } db1 40 set ::HOOKS 41} {{INSERT main t1 1}} 42 43# In the second database connection cause the schema to be reparsed 44# without changing the schema cookie. 45# 46set HOOKS {} 47do_test tkt-f7b4edec-2 { 48 execsql { 49 BEGIN; 50 DROP TABLE t1; 51 CREATE TABLE t1(x, y); 52 ROLLBACK; 53 } db2 54 set ::HOOKS 55} {} 56 57# Rerun the prepared statement that was created prior to the 58# schema reparse. Verify that the update-hook gives the correct 59# output. 60# 61set HOOKS {} 62do_test tkt-f7b4edec-3 { 63 execsql { INSERT INTO t1 VALUES(1, 2) } db1 64 set ::HOOKS 65} {{INSERT main t1 2}} 66 67# Be sure to restore the original shared-cache mode setting before 68# returning. 69# 70db1 close 71db2 close 72sqlite3_enable_shared_cache $::enable_shared_cache 73 74 75finish_test 76