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 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# 24db close 25set ::enable_shared_cache [sqlite3_enable_shared_cache 1] 26sqlite3 db1 test.db 27sqlite3 db2 test.db 28unset -nocomplain HOOKS 29set HOOKS {} 30proc update_hook {args} { lappend ::HOOKS $args } 31db1 update_hook update_hook 32db2 update_hook update_hook 33 34# Create a prepared statement 35# 36do_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# 45set HOOKS {} 46do_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# 60set HOOKS {} 61do_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# 69db1 close 70db2 close 71sqlite3_enable_shared_cache $::enable_shared_cache 72 73 74finish_test 75