xref: /sqlite-3.40.0/test/async5.test (revision 5822d6fe)
15368f29aSdanielk1977# 2009 July 19
25368f29aSdanielk1977#
35368f29aSdanielk1977#    May you do good and not evil.
45368f29aSdanielk1977#    May you find forgiveness for yourself and forgive others.
55368f29aSdanielk1977#    May you share freely, never taking more than you give.
65368f29aSdanielk1977#
75368f29aSdanielk1977#***********************************************************************
85368f29aSdanielk1977# This file tests that asynchronous IO is compatible with multi-file
95368f29aSdanielk1977# transactions.
105368f29aSdanielk1977#
115368f29aSdanielk1977# $Id: async5.test,v 1.1 2009/07/18 11:52:04 danielk1977 Exp $
125368f29aSdanielk1977
135368f29aSdanielk1977set testdir [file dirname $argv0]
145368f29aSdanielk1977source $testdir/tester.tcl
155368f29aSdanielk1977
165368f29aSdanielk1977if {[info commands sqlite3async_initialize] eq ""} {
175368f29aSdanielk1977  # The async logic is not built into this system
185368f29aSdanielk1977  finish_test
195368f29aSdanielk1977  return
205368f29aSdanielk1977}
215368f29aSdanielk1977
225368f29aSdanielk1977db close
23*fda06befSmistachkinforcedelete test2.db
245368f29aSdanielk1977sqlite3async_initialize "" 1
255368f29aSdanielk1977sqlite3async_control halt never
265368f29aSdanielk1977sqlite3 db test.db
275368f29aSdanielk1977
285368f29aSdanielk1977do_test async5-1.1 {
295368f29aSdanielk1977  execsql {
305368f29aSdanielk1977    ATTACH 'test2.db' AS next;
315368f29aSdanielk1977    CREATE TABLE main.t1(a, b);
325368f29aSdanielk1977    CREATE TABLE next.t2(a, b);
335368f29aSdanielk1977    BEGIN;
345368f29aSdanielk1977      INSERT INTO t1 VALUES(1, 2);
355368f29aSdanielk1977      INSERT INTO t2 VALUES(3, 4);
365368f29aSdanielk1977    COMMIT;
375368f29aSdanielk1977  }
385368f29aSdanielk1977} {}
395368f29aSdanielk1977do_test async5-1.2 {
405368f29aSdanielk1977  execsql { SELECT * FROM t1 }
415368f29aSdanielk1977} {1 2}
425368f29aSdanielk1977do_test async5-1.3 {
435368f29aSdanielk1977  execsql { SELECT * FROM t2 }
445368f29aSdanielk1977} {3 4}
455368f29aSdanielk1977do_test async5-1.4 {
465368f29aSdanielk1977  execsql {
475368f29aSdanielk1977    BEGIN;
485368f29aSdanielk1977      INSERT INTO t1 VALUES('a', 'b');
495368f29aSdanielk1977      INSERT INTO t2 VALUES('c', 'd');
505368f29aSdanielk1977    COMMIT;
515368f29aSdanielk1977  }
525368f29aSdanielk1977} {}
535368f29aSdanielk1977do_test async5-1.5 {
545368f29aSdanielk1977  execsql { SELECT * FROM t1 }
555368f29aSdanielk1977} {1 2 a b}
565368f29aSdanielk1977do_test async5-1.6 {
575368f29aSdanielk1977  execsql { SELECT * FROM t2 }
585368f29aSdanielk1977} {3 4 c d}
595368f29aSdanielk1977
605368f29aSdanielk1977db close
615368f29aSdanielk1977
625368f29aSdanielk1977sqlite3async_control halt idle
635368f29aSdanielk1977sqlite3async_start
645368f29aSdanielk1977sqlite3async_wait
655368f29aSdanielk1977sqlite3async_control halt never
665368f29aSdanielk1977sqlite3async_shutdown
675368f29aSdanielk1977set sqlite3async_trace 0
685368f29aSdanielk1977finish_test
69