/ Hex Artifact Content
Login

Artifact 0dd8701bd588bf6e70c2557a22ae3f22b2567b4c:


0000: 23 20 32 30 30 39 20 4a 75 6c 79 20 31 39 0a 23  # 2009 July 19.#
0010: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0020: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
0030: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
0040: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
0050: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
0060: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
0070: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
0080: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0090: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
00a0: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
00b0: 0a 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .#**************
00c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0100: 20 66 69 6c 65 20 74 65 73 74 73 20 74 68 61 74   file tests that
0110: 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 49 4f   asynchronous IO
0120: 20 69 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 77   is compatible w
0130: 69 74 68 20 6d 75 6c 74 69 2d 66 69 6c 65 0a 23  ith multi-file.#
0140: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 0a 23   transactions..#
0150: 0a 23 20 24 49 64 3a 20 61 73 79 6e 63 35 2e 74  .# $Id: async5.t
0160: 65 73 74 2c 76 20 31 2e 31 20 32 30 30 39 2f 30  est,v 1.1 2009/0
0170: 37 2f 31 38 20 31 31 3a 35 32 3a 30 34 20 64 61  7/18 11:52:04 da
0180: 6e 69 65 6c 6b 31 39 37 37 20 45 78 70 20 24 0a  nielk1977 Exp $.
0190: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
01a0: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
01b0: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
01c0: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 69  ir/tester.tcl..i
01d0: 66 20 7b 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64  f {[info command
01e0: 73 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 69  s sqlite3async_i
01f0: 6e 69 74 69 61 6c 69 7a 65 5d 20 65 71 20 22 22  nitialize] eq ""
0200: 7d 20 7b 0a 20 20 23 20 54 68 65 20 61 73 79 6e  } {.  # The asyn
0210: 63 20 6c 6f 67 69 63 20 69 73 20 6e 6f 74 20 62  c logic is not b
0220: 75 69 6c 74 20 69 6e 74 6f 20 74 68 69 73 20 73  uilt into this s
0230: 79 73 74 65 6d 0a 20 20 66 69 6e 69 73 68 5f 74  ystem.  finish_t
0240: 65 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a 0a  est.  return.}..
0250: 64 62 20 63 6c 6f 73 65 0a 66 6f 72 63 65 64 65  db close.forcede
0260: 6c 65 74 65 20 74 65 73 74 32 2e 64 62 0a 73 71  lete test2.db.sq
0270: 6c 69 74 65 33 61 73 79 6e 63 5f 69 6e 69 74 69  lite3async_initi
0280: 61 6c 69 7a 65 20 22 22 20 31 0a 73 71 6c 69 74  alize "" 1.sqlit
0290: 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20  e3async_control 
02a0: 68 61 6c 74 20 6e 65 76 65 72 0a 73 71 6c 69 74  halt never.sqlit
02b0: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 0a 64  e3 db test.db..d
02c0: 6f 5f 74 65 73 74 20 61 73 79 6e 63 35 2d 31 2e  o_test async5-1.
02d0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
02e0: 20 20 20 20 41 54 54 41 43 48 20 27 74 65 73 74      ATTACH 'test
02f0: 32 2e 64 62 27 20 41 53 20 6e 65 78 74 3b 0a 20  2.db' AS next;. 
0300: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
0310: 6d 61 69 6e 2e 74 31 28 61 2c 20 62 29 3b 0a 20  main.t1(a, b);. 
0320: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
0330: 6e 65 78 74 2e 74 32 28 61 2c 20 62 29 3b 0a 20  next.t2(a, b);. 
0340: 20 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 20 20     BEGIN;.      
0350: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0360: 41 4c 55 45 53 28 31 2c 20 32 29 3b 0a 20 20 20  ALUES(1, 2);.   
0370: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0380: 32 20 56 41 4c 55 45 53 28 33 2c 20 34 29 3b 0a  2 VALUES(3, 4);.
0390: 20 20 20 20 43 4f 4d 4d 49 54 3b 0a 20 20 7d 0a      COMMIT;.  }.
03a0: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79  } {}.do_test asy
03b0: 6e 63 35 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63  nc5-1.2 {.  exec
03c0: 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46  sql { SELECT * F
03d0: 52 4f 4d 20 74 31 20 7d 0a 7d 20 7b 31 20 32 7d  ROM t1 }.} {1 2}
03e0: 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 35 2d  .do_test async5-
03f0: 31 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.3 {.  execsql 
0400: 7b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  { SELECT * FROM 
0410: 74 32 20 7d 0a 7d 20 7b 33 20 34 7d 0a 64 6f 5f  t2 }.} {3 4}.do_
0420: 74 65 73 74 20 61 73 79 6e 63 35 2d 31 2e 34 20  test async5-1.4 
0430: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0440: 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 20 20 49    BEGIN;.      I
0450: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
0460: 4c 55 45 53 28 27 61 27 2c 20 27 62 27 29 3b 0a  LUES('a', 'b');.
0470: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
0480: 4f 20 74 32 20 56 41 4c 55 45 53 28 27 63 27 2c  O t2 VALUES('c',
0490: 20 27 64 27 29 3b 0a 20 20 20 20 43 4f 4d 4d 49   'd');.    COMMI
04a0: 54 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74  T;.  }.} {}.do_t
04b0: 65 73 74 20 61 73 79 6e 63 35 2d 31 2e 35 20 7b  est async5-1.5 {
04c0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c  .  execsql { SEL
04d0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 7d 0a  ECT * FROM t1 }.
04e0: 7d 20 7b 31 20 32 20 61 20 62 7d 0a 64 6f 5f 74  } {1 2 a b}.do_t
04f0: 65 73 74 20 61 73 79 6e 63 35 2d 31 2e 36 20 7b  est async5-1.6 {
0500: 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c  .  execsql { SEL
0510: 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 20 7d 0a  ECT * FROM t2 }.
0520: 7d 20 7b 33 20 34 20 63 20 64 7d 0a 0a 64 62 20  } {3 4 c d}..db 
0530: 63 6c 6f 73 65 0a 0a 73 71 6c 69 74 65 33 61 73  close..sqlite3as
0540: 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 68 61 6c 74  ync_control halt
0550: 20 69 64 6c 65 0a 73 71 6c 69 74 65 33 61 73 79   idle.sqlite3asy
0560: 6e 63 5f 73 74 61 72 74 0a 73 71 6c 69 74 65 33  nc_start.sqlite3
0570: 61 73 79 6e 63 5f 77 61 69 74 0a 73 71 6c 69 74  async_wait.sqlit
0580: 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20  e3async_control 
0590: 68 61 6c 74 20 6e 65 76 65 72 0a 73 71 6c 69 74  halt never.sqlit
05a0: 65 33 61 73 79 6e 63 5f 73 68 75 74 64 6f 77 6e  e3async_shutdown
05b0: 0a 73 65 74 20 73 71 6c 69 74 65 33 61 73 79 6e  .set sqlite3asyn
05c0: 63 5f 74 72 61 63 65 20 30 0a 66 69 6e 69 73 68  c_trace 0.finish
05d0: 5f 74 65 73 74 0a 0a                             _test..