danielk1977 | 5368f29 | 2009-07-18 11:52:04 +0000 | [diff] [blame] | 1 | # 2009 July 19 |
| 2 | # |
| 3 | # May you do good and not evil. |
| 4 | # May you find forgiveness for yourself and forgive others. |
| 5 | # May you share freely, never taking more than you give. |
| 6 | # |
| 7 | #*********************************************************************** |
| 8 | # This file tests that asynchronous IO is compatible with multi-file |
| 9 | # transactions. |
| 10 | # |
| 11 | # $Id: async5.test,v 1.1 2009/07/18 11:52:04 danielk1977 Exp $ |
| 12 | |
| 13 | set testdir [file dirname $argv0] |
| 14 | source $testdir/tester.tcl |
| 15 | |
| 16 | if {[info commands sqlite3async_initialize] eq ""} { |
| 17 | # The async logic is not built into this system |
| 18 | finish_test |
| 19 | return |
| 20 | } |
| 21 | |
| 22 | db close |
mistachkin | fda06be | 2011-08-02 00:57:34 +0000 | [diff] [blame] | 23 | forcedelete test2.db |
danielk1977 | 5368f29 | 2009-07-18 11:52:04 +0000 | [diff] [blame] | 24 | sqlite3async_initialize "" 1 |
| 25 | sqlite3async_control halt never |
| 26 | sqlite3 db test.db |
| 27 | |
| 28 | do_test async5-1.1 { |
| 29 | execsql { |
| 30 | ATTACH 'test2.db' AS next; |
| 31 | CREATE TABLE main.t1(a, b); |
| 32 | CREATE TABLE next.t2(a, b); |
| 33 | BEGIN; |
| 34 | INSERT INTO t1 VALUES(1, 2); |
| 35 | INSERT INTO t2 VALUES(3, 4); |
| 36 | COMMIT; |
| 37 | } |
| 38 | } {} |
| 39 | do_test async5-1.2 { |
| 40 | execsql { SELECT * FROM t1 } |
| 41 | } {1 2} |
| 42 | do_test async5-1.3 { |
| 43 | execsql { SELECT * FROM t2 } |
| 44 | } {3 4} |
| 45 | do_test async5-1.4 { |
| 46 | execsql { |
| 47 | BEGIN; |
| 48 | INSERT INTO t1 VALUES('a', 'b'); |
| 49 | INSERT INTO t2 VALUES('c', 'd'); |
| 50 | COMMIT; |
| 51 | } |
| 52 | } {} |
| 53 | do_test async5-1.5 { |
| 54 | execsql { SELECT * FROM t1 } |
| 55 | } {1 2 a b} |
| 56 | do_test async5-1.6 { |
| 57 | execsql { SELECT * FROM t2 } |
| 58 | } {3 4 c d} |
| 59 | |
| 60 | db close |
| 61 | |
| 62 | sqlite3async_control halt idle |
| 63 | sqlite3async_start |
| 64 | sqlite3async_wait |
| 65 | sqlite3async_control halt never |
| 66 | sqlite3async_shutdown |
| 67 | set sqlite3async_trace 0 |
| 68 | finish_test |