| # 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 |