/ Hex Artifact Content
Login

Artifact 1787e3952128aa10238bf39945126de7ca23685a:


0000: 23 20 32 30 30 39 20 41 70 72 69 6c 20 32 35 0a  # 2009 April 25.
0010: 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64  #.# The author d
0020: 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67  isclaims copyrig
0030: 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63  ht to this sourc
0040: 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63  e code.  In plac
0050: 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e  e of.# a legal n
0060: 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61  otice, here is a
0070: 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20   blessing:.#.#  
0080: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f    May you do goo
0090: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a  d and not evil..
00a0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e  #    May you fin
00b0: 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f  d forgiveness fo
00c0: 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66  r yourself and f
00d0: 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23  orgive others..#
00e0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72      May you shar
00f0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20  e freely, never 
0100: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e  taking more than
0110: 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a   you give..#.#**
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 0a 23 0a 23 20 24 49 64 3a 20 61  *****.#.# $Id: a
0170: 73 79 6e 63 34 2e 74 65 73 74 2c 76 20 31 2e 34  sync4.test,v 1.4
0180: 20 32 30 30 39 2f 30 36 2f 30 35 20 31 37 3a 30   2009/06/05 17:0
0190: 39 3a 31 32 20 64 72 68 20 45 78 70 20 24 0a 0a  9:12 drh Exp $..
01a0: 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c  set testdir [fil
01b0: 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30  e dirname $argv0
01c0: 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69  ].source $testdi
01d0: 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23 20  r/tester.tcl..# 
01e0: 44 6f 20 6e 6f 74 20 75 73 65 20 61 20 63 6f 64  Do not use a cod
01f0: 65 63 20 66 6f 72 20 74 65 73 74 73 20 69 6e 20  ec for tests in 
0200: 74 68 69 73 20 66 69 6c 65 2c 20 61 73 20 74 68  this file, as th
0210: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
0220: 69 73 0a 23 20 6d 61 6e 69 70 75 6c 61 74 65 64  is.# manipulated
0230: 20 64 69 72 65 63 74 6c 79 20 75 73 69 6e 67 20   directly using 
0240: 74 63 6c 20 73 63 72 69 70 74 73 20 28 75 73 69  tcl scripts (usi
0250: 6e 67 20 74 68 65 20 5b 68 65 78 69 6f 5f 77 72  ng the [hexio_wr
0260: 69 74 65 5d 20 63 6f 6d 6d 61 6e 64 29 2e 0a 23  ite] command)..#
0270: 0a 64 6f 5f 6e 6f 74 5f 75 73 65 5f 63 6f 64 65  .do_not_use_code
0280: 63 0a 0a 23 20 54 68 65 73 65 20 74 65 73 74 73  c..# These tests
0290: 20 6f 6e 6c 79 20 77 6f 72 6b 20 66 6f 72 20 54   only work for T
02a0: 63 6c 20 76 65 72 73 69 6f 6e 20 38 2e 35 20 61  cl version 8.5 a
02b0: 6e 64 20 6c 61 74 65 72 20 6f 6e 20 57 69 6e 64  nd later on Wind
02c0: 6f 77 73 20 28 66 6f 72 20 6e 6f 77 29 0a 23 0a  ows (for now).#.
02d0: 69 66 20 7b 24 74 63 6c 5f 70 6c 61 74 66 6f 72  if {$tcl_platfor
02e0: 6d 28 70 6c 61 74 66 6f 72 6d 29 3d 3d 22 77 69  m(platform)=="wi
02f0: 6e 64 6f 77 73 22 7d 20 7b 0a 20 20 73 63 61 6e  ndows"} {.  scan
0300: 20 24 3a 3a 74 63 6c 5f 76 65 72 73 69 6f 6e 20   $::tcl_version 
0310: 25 66 20 76 78 0a 20 20 69 66 20 7b 24 76 78 3c  %f vx.  if {$vx<
0320: 38 2e 35 7d 20 7b 0a 20 20 20 20 66 69 6e 69 73  8.5} {.    finis
0330: 68 5f 74 65 73 74 0a 20 20 20 20 72 65 74 75 72  h_test.    retur
0340: 6e 0a 20 20 7d 0a 7d 0a 0a 69 66 20 7b 5b 69 6e  n.  }.}..if {[in
0350: 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 73 71 6c 69  fo commands sqli
0360: 74 65 33 61 73 79 6e 63 5f 69 6e 69 74 69 61 6c  te3async_initial
0370: 69 7a 65 5d 20 65 71 20 22 22 7d 20 7b 0a 20 20  ize] eq ""} {.  
0380: 23 20 54 68 65 20 61 73 79 6e 63 20 6c 6f 67 69  # The async logi
0390: 63 20 69 73 20 6e 6f 74 20 62 75 69 6c 74 20 69  c is not built i
03a0: 6e 74 6f 20 74 68 69 73 20 73 79 73 74 65 6d 0a  nto this system.
03b0: 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20    finish_test.  
03c0: 72 65 74 75 72 6e 0a 7d 0a 64 62 20 63 6c 6f 73  return.}.db clos
03d0: 65 0a 0a 23 20 54 65 73 74 20 6c 61 79 6f 75 74  e..# Test layout
03e0: 3a 0a 23 0a 23 20 20 20 61 73 79 6e 63 34 2e 31  :.#.#   async4.1
03f0: 2e 2a 3a 20 54 65 73 74 20 74 68 65 20 6c 6f 63  .*: Test the loc
0400: 6b 66 69 6c 65 73 20 70 61 72 61 6d 65 74 65 72  kfiles parameter
0410: 2e 0a 23 20 20 20 61 73 79 6e 63 34 2e 32 2e 2a  ..#   async4.2.*
0420: 3a 20 54 65 73 74 20 74 68 65 20 64 65 6c 61 79  : Test the delay
0430: 20 70 61 72 61 6d 65 74 65 72 2e 0a 0a 64 6f 5f   parameter...do_
0440: 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 20  test async4.1.1 
0450: 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63  {.  sqlite3async
0460: 5f 69 6e 69 74 69 61 6c 69 7a 65 20 7b 7d 20 30  _initialize {} 0
0470: 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f  .  sqlite3async_
0480: 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65  control lockfile
0490: 73 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  s.} {1}.do_test 
04a0: 61 73 79 6e 63 34 2e 31 2e 32 20 7b 0a 20 20 73  async4.1.2 {.  s
04b0: 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74  qlite3async_cont
04c0: 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 66 61  rol lockfiles fa
04d0: 6c 73 65 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73  lse.} {0}.do_tes
04e0: 74 20 61 73 79 6e 63 34 2e 31 2e 33 20 7b 0a 20  t async4.1.3 {. 
04f0: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f   sqlite3async_co
0500: 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 0a  ntrol lockfiles.
0510: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 61 73  } {0}.do_test as
0520: 79 6e 63 34 2e 31 2e 34 20 7b 0a 20 20 73 71 6c  ync4.1.4 {.  sql
0530: 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f  ite3async_contro
0540: 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 74 72 75 65  l lockfiles true
0550: 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20  .} {1}..do_test 
0560: 61 73 79 6e 63 34 2e 31 2e 35 20 7b 0a 20 20 73  async4.1.5 {.  s
0570: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
0580: 62 20 2d 76 66 73 20 73 71 6c 69 74 65 33 61 73  b -vfs sqlite3as
0590: 79 6e 63 0a 20 20 65 78 65 63 73 71 6c 20 7b 20  ync.  execsql { 
05a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
05b0: 61 2c 20 62 2c 20 63 29 20 7d 0a 7d 20 7b 7d 0a  a, b, c) }.} {}.
05c0: 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31  do_test async4.1
05d0: 2e 36 20 7b 0a 20 20 6c 69 73 74 20 5b 66 69 6c  .6 {.  list [fil
05e0: 65 20 65 78 69 73 74 73 20 74 65 73 74 2e 64 62  e exists test.db
05f0: 5d 20 5b 66 69 6c 65 20 73 69 7a 65 20 74 65 73  ] [file size tes
0600: 74 2e 64 62 5d 0a 7d 20 7b 31 20 30 7d 0a 64 6f  t.db].} {1 0}.do
0610: 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 37  _test async4.1.7
0620: 20 7b 0a 20 20 73 71 6c 69 74 65 33 20 64 62 32   {.  sqlite3 db2
0630: 20 74 65 73 74 2e 64 62 0a 20 20 63 61 74 63 68   test.db.  catch
0640: 73 71 6c 20 7b 20 43 52 45 41 54 45 20 54 41 42  sql { CREATE TAB
0650: 4c 45 20 74 32 28 61 2c 20 62 2c 20 63 29 20 7d  LE t2(a, b, c) }
0660: 20 64 62 32 0a 7d 20 7b 31 20 7b 64 61 74 61 62   db2.} {1 {datab
0670: 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 7d 7d 0a  ase is locked}}.
0680: 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31  do_test async4.1
0690: 2e 38 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73  .8 {.  sqlite3as
06a0: 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 68 61 6c 74  ync_control halt
06b0: 20 69 64 6c 65 0a 20 20 73 71 6c 69 74 65 33 61   idle.  sqlite3a
06c0: 73 79 6e 63 5f 73 74 61 72 74 0a 20 20 73 71 6c  sync_start.  sql
06d0: 69 74 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 7d  ite3async_wait.}
06e0: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e   {}.do_test asyn
06f0: 63 34 2e 31 2e 39 20 7b 0a 20 20 63 61 74 63 68  c4.1.9 {.  catch
0700: 73 71 6c 20 7b 20 43 52 45 41 54 45 20 54 41 42  sql { CREATE TAB
0710: 4c 45 20 74 32 28 61 2c 20 62 2c 20 63 29 20 7d  LE t2(a, b, c) }
0720: 20 64 62 32 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f   db2.} {0 {}}.do
0730: 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31  _test async4.1.1
0740: 30 20 7b 0a 20 20 6c 69 73 74 20 5b 63 61 74 63  0 {.  list [catc
0750: 68 20 7b 73 71 6c 69 74 65 33 61 73 79 6e 63 5f  h {sqlite3async_
0760: 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65  control lockfile
0770: 73 20 66 61 6c 73 65 7d 20 6d 73 67 5d 20 24 6d  s false} msg] $m
0780: 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45 5f 4d  sg.} {1 SQLITE_M
0790: 49 53 55 53 45 7d 0a 64 6f 5f 74 65 73 74 20 61  ISUSE}.do_test a
07a0: 73 79 6e 63 34 2e 31 2e 31 31 20 7b 0a 20 20 64  sync4.1.11 {.  d
07b0: 62 20 63 6c 6f 73 65 0a 20 20 6c 69 73 74 20 5b  b close.  list [
07c0: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 61 73  catch {sqlite3as
07d0: 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 6c 6f 63 6b  ync_control lock
07e0: 66 69 6c 65 73 20 66 61 6c 73 65 7d 20 6d 73 67  files false} msg
07f0: 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49  ] $msg.} {1 SQLI
0800: 54 45 5f 4d 49 53 55 53 45 7d 0a 64 6f 5f 74 65  TE_MISUSE}.do_te
0810: 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 32 20 7b  st async4.1.12 {
0820: 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f  .  sqlite3async_
0830: 73 74 61 72 74 0a 20 20 73 71 6c 69 74 65 33 61  start.  sqlite3a
0840: 73 79 6e 63 5f 77 61 69 74 0a 20 20 73 71 6c 69  sync_wait.  sqli
0850: 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c  te3async_control
0860: 20 6c 6f 63 6b 66 69 6c 65 73 20 66 61 6c 73 65   lockfiles false
0870: 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 61  .} {0}.do_test a
0880: 73 79 6e 63 34 2e 31 2e 31 33 20 7b 0a 20 20 73  sync4.1.13 {.  s
0890: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
08a0: 62 20 2d 76 66 73 20 73 71 6c 69 74 65 33 61 73  b -vfs sqlite3as
08b0: 79 6e 63 0a 20 20 65 78 65 63 73 71 6c 20 7b 20  ync.  execsql { 
08c0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28  CREATE TABLE t3(
08d0: 61 2c 20 62 2c 20 63 29 20 7d 20 64 62 0a 7d 20  a, b, c) } db.} 
08e0: 7b 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63  {}.do_test async
08f0: 34 2e 31 2e 31 34 20 7b 0a 20 20 65 78 65 63 73  4.1.14 {.  execs
0900: 71 6c 20 7b 20 0a 20 20 20 20 43 52 45 41 54 45  ql { .    CREATE
0910: 20 49 4e 44 45 58 20 69 31 20 4f 4e 20 74 32 28   INDEX i1 ON t2(
0920: 61 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  a);.    CREATE I
0930: 4e 44 45 58 20 69 32 20 4f 4e 20 74 31 28 61 29  NDEX i2 ON t1(a)
0940: 3b 0a 20 20 7d 20 64 62 32 0a 7d 20 7b 7d 0a 64  ;.  } db2.} {}.d
0950: 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e  o_test async4.1.
0960: 31 35 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73  15 {.  sqlite3as
0970: 79 6e 63 5f 73 74 61 72 74 0a 20 20 73 71 6c 69  ync_start.  sqli
0980: 74 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 20 20  te3async_wait.  
0990: 68 65 78 69 6f 5f 77 72 69 74 65 20 74 65 73 74  hexio_write test
09a0: 2e 64 62 20 32 38 20 30 30 30 30 30 30 30 30 0a  .db 28 00000000.
09b0: 20 20 65 78 65 63 73 71 6c 20 7b 20 70 72 61 67    execsql { prag
09c0: 6d 61 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  ma integrity_che
09d0: 63 6b 20 7d 20 64 62 32 0a 7d 20 7b 7b 2a 2a 2a  ck } db2.} {{***
09e0: 20 69 6e 20 64 61 74 61 62 61 73 65 20 6d 61 69   in database mai
09f0: 6e 20 2a 2a 2a 0a 50 61 67 65 20 35 20 69 73 20  n ***.Page 5 is 
0a00: 6e 65 76 65 72 20 75 73 65 64 7d 7d 0a 64 6f 5f  never used}}.do_
0a10: 74 65 73 74 20 61 73 79 6e 63 34 2e 31 2e 31 36  test async4.1.16
0a20: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20   {.  db close.  
0a30: 64 62 32 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69  db2 close.  sqli
0a40: 74 65 33 61 73 79 6e 63 5f 73 74 61 72 74 0a 20  te3async_start. 
0a50: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 77 61   sqlite3async_wa
0a60: 69 74 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20  it.} {}.do_test 
0a70: 61 73 79 6e 63 34 2e 31 2e 31 37 20 7b 0a 20 20  async4.1.17 {.  
0a80: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e  sqlite3async_con
0a90: 74 72 6f 6c 20 6c 6f 63 6b 66 69 6c 65 73 20 74  trol lockfiles t
0aa0: 72 75 65 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65  rue.} {1}..do_te
0ab0: 73 74 20 61 73 79 6e 63 34 2e 32 2e 31 20 7b 0a  st async4.2.1 {.
0ac0: 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63    sqlite3async_c
0ad0: 6f 6e 74 72 6f 6c 20 64 65 6c 61 79 0a 7d 20 7b  ontrol delay.} {
0ae0: 30 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63  0}.do_test async
0af0: 34 2e 32 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65  4.2.2 {.  sqlite
0b00: 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64  3async_control d
0b10: 65 6c 61 79 20 32 33 0a 7d 20 7b 32 33 7d 0a 64  elay 23.} {23}.d
0b20: 6f 5f 74 65 73 74 20 61 73 79 6e 63 34 2e 32 2e  o_test async4.2.
0b30: 33 20 7b 0a 20 20 73 71 6c 69 74 65 33 61 73 79  3 {.  sqlite3asy
0b40: 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64 65 6c 61 79  nc_control delay
0b50: 0a 7d 20 7b 32 33 7d 0a 64 6f 5f 74 65 73 74 20  .} {23}.do_test 
0b60: 61 73 79 6e 63 34 2e 32 2e 34 20 7b 0a 20 20 73  async4.2.4 {.  s
0b70: 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f 6e 74  qlite3async_cont
0b80: 72 6f 6c 20 64 65 6c 61 79 20 30 0a 7d 20 7b 30  rol delay 0.} {0
0b90: 7d 0a 64 6f 5f 74 65 73 74 20 61 73 79 6e 63 34  }.do_test async4
0ba0: 2e 32 2e 35 20 7b 0a 20 20 73 71 6c 69 74 65 33  .2.5 {.  sqlite3
0bb0: 20 64 62 20 74 65 73 74 2e 64 62 20 2d 76 66 73   db test.db -vfs
0bc0: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 0a 0a 20   sqlite3async.. 
0bd0: 20 65 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54   execsql { CREAT
0be0: 45 20 54 41 42 4c 45 20 74 34 28 61 2c 20 62 29  E TABLE t4(a, b)
0bf0: 20 7d 0a 20 20 73 65 74 20 54 31 20 5b 6c 69 6e   }.  set T1 [lin
0c00: 64 65 78 20 5b 74 69 6d 65 20 7b 0a 20 20 20 20  dex [time {.    
0c10: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 73 74 61  sqlite3async_sta
0c20: 72 74 0a 20 20 20 20 73 71 6c 69 74 65 33 61 73  rt.    sqlite3as
0c30: 79 6e 63 5f 77 61 69 74 0a 20 20 7d 5d 20 30 5d  ync_wait.  }] 0]
0c40: 0a 0a 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63  ..  sqlite3async
0c50: 5f 63 6f 6e 74 72 6f 6c 20 64 65 6c 61 79 20 31  _control delay 1
0c60: 30 30 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 43  00.  execsql { C
0c70: 52 45 41 54 45 20 54 41 42 4c 45 20 74 35 28 61  REATE TABLE t5(a
0c80: 2c 20 62 29 20 7d 0a 20 20 73 65 74 20 54 32 20  , b) }.  set T2 
0c90: 5b 6c 69 6e 64 65 78 20 5b 74 69 6d 65 20 7b 0a  [lindex [time {.
0ca0: 20 20 20 20 73 71 6c 69 74 65 33 61 73 79 6e 63      sqlite3async
0cb0: 5f 73 74 61 72 74 0a 20 20 20 20 73 71 6c 69 74  _start.    sqlit
0cc0: 65 33 61 73 79 6e 63 5f 77 61 69 74 0a 20 20 7d  e3async_wait.  }
0cd0: 5d 20 30 5d 0a 0a 20 20 65 78 70 72 20 7b 28 24  ] 0]..  expr {($
0ce0: 54 31 2b 31 30 30 30 30 30 30 29 20 3c 20 24 54  T1+1000000) < $T
0cf0: 32 7d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73  2}.} {1}..do_tes
0d00: 74 20 61 73 79 6e 63 34 2e 32 2e 36 20 7b 0a 20  t async4.2.6 {. 
0d10: 20 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 63 6f   sqlite3async_co
0d20: 6e 74 72 6f 6c 20 64 65 6c 61 79 20 30 0a 20 20  ntrol delay 0.  
0d30: 65 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54 45  execsql { CREATE
0d40: 20 54 41 42 4c 45 20 74 36 28 61 2c 20 62 29 20   TABLE t6(a, b) 
0d50: 7d 0a 20 20 73 65 74 20 54 31 20 5b 6c 69 6e 64  }.  set T1 [lind
0d60: 65 78 20 5b 74 69 6d 65 20 7b 0a 20 20 20 20 73  ex [time {.    s
0d70: 71 6c 69 74 65 33 61 73 79 6e 63 5f 73 74 61 72  qlite3async_star
0d80: 74 0a 20 20 20 20 73 71 6c 69 74 65 33 61 73 79  t.    sqlite3asy
0d90: 6e 63 5f 77 61 69 74 0a 20 20 7d 5d 20 30 5d 0a  nc_wait.  }] 0].
0da0: 0a 20 20 65 78 70 72 20 7b 28 24 54 31 2b 31 30  .  expr {($T1+10
0db0: 30 30 30 30 30 29 20 3c 20 24 54 32 7d 0a 7d 20  00000) < $T2}.} 
0dc0: 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 61 73 79  {1}..do_test asy
0dd0: 6e 63 34 2e 32 2e 37 20 7b 0a 20 20 6c 69 73 74  nc4.2.7 {.  list
0de0: 20 5b 63 61 74 63 68 20 7b 20 73 71 6c 69 74 65   [catch { sqlite
0df0: 33 61 73 79 6e 63 5f 63 6f 6e 74 72 6f 6c 20 64  3async_control d
0e00: 65 6c 61 79 20 2d 31 20 7d 20 6d 73 67 5d 20 24  elay -1 } msg] $
0e10: 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45 5f  msg.} {1 SQLITE_
0e20: 4d 49 53 55 53 45 7d 0a 0a 64 6f 5f 74 65 73 74  MISUSE}..do_test
0e30: 20 61 73 79 6e 63 34 2e 32 2e 38 20 7b 0a 20 20   async4.2.8 {.  
0e40: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74  db close.  sqlit
0e50: 65 33 61 73 79 6e 63 5f 73 74 61 72 74 0a 20 20  e3async_start.  
0e60: 73 71 6c 69 74 65 33 61 73 79 6e 63 5f 77 61 69  sqlite3async_wai
0e70: 74 0a 7d 20 7b 7d 0a 0a 66 69 6e 69 73 68 5f 74  t.} {}..finish_t
0e80: 65 73 74 0a                                      est.