# 2011 March 18 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket # [f7b4edece25c994857dc139207f55a53c8319fae] has been fixed. # set testdir [file dirname $argv0] source $testdir/tester.tcl # Open two database connections to the same database file in # shared cache mode. Create update hooks that will fire on # each connection. # db close set ::enable_shared_cache [sqlite3_enable_shared_cache 1] sqlite3 db1 test.db sqlite3 db2 test.db unset -nocomplain HOOKS set HOOKS {} proc update_hook {args} { lappend ::HOOKS $args } db1 update_hook update_hook db2 update_hook update_hook # Create a prepared statement # do_test tkt-f7b4edec-1 { execsql { CREATE TABLE t1(x, y); } db1 execsql { INSERT INTO t1 VALUES(1, 2) } db1 set ::HOOKS } {{INSERT main t1 1}} # In the second database connection cause the schema to be reparsed # without changing the schema cookie. # set HOOKS {} do_test tkt-f7b4edec-2 { execsql { BEGIN; DROP TABLE t1; CREATE TABLE t1(x, y); ROLLBACK; } db2 set ::HOOKS } {} # Rerun the prepared statement that was created prior to the # schema reparse. Verify that the update-hook gives the correct # output. # set HOOKS {} do_test tkt-f7b4edec-3 { execsql { INSERT INTO t1 VALUES(1, 2) } db1 set ::HOOKS } {{INSERT main t1 2}} # Be sure to restore the original shared-cache mode setting before # returning. # db1 close db2 close sqlite3_enable_shared_cache $::enable_shared_cache finish_test