/ Hex Artifact Content
Login

Artifact a9870e46cc6f8390a494513d4f2bf55b5a8b3e46:


0000: 23 20 32 30 31 31 20 4d 61 72 63 68 20 33 30 0a  # 2011 March 30.
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 54 68 69 73 20 66  *****.#.# This f
0170: 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 74 65 73  ile contains tes
0180: 74 73 20 66 6f 72 20 74 68 65 20 22 75 6e 69 78  ts for the "unix
0190: 2d 65 78 63 6c 22 20 56 46 53 20 6d 6f 64 75 6c  -excl" VFS modul
01a0: 65 20 28 70 61 72 74 20 6f 66 20 0a 23 20 6f 73  e (part of .# os
01b0: 5f 75 6e 69 78 2e 63 29 2e 0a 23 0a 0a 73 65 74  _unix.c)..#..set
01c0: 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64   testdir [file d
01d0: 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73  irname $argv0].s
01e0: 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74  ource $testdir/t
01f0: 65 73 74 65 72 2e 74 63 6c 0a 73 6f 75 72 63 65  ester.tcl.source
0200: 20 24 74 65 73 74 64 69 72 2f 6c 6f 63 6b 5f 63   $testdir/lock_c
0210: 6f 6d 6d 6f 6e 2e 74 63 6c 0a 73 6f 75 72 63 65  ommon.tcl.source
0220: 20 24 74 65 73 74 64 69 72 2f 6d 61 6c 6c 6f 63   $testdir/malloc
0230: 5f 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a 0a 69 66 20  _common.tcl..if 
0240: 7b 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d  {$::tcl_platform
0250: 28 70 6c 61 74 66 6f 72 6d 29 21 3d 22 75 6e 69  (platform)!="uni
0260: 78 22 20 7c 7c 20 5b 69 6e 66 6f 20 63 6f 6d 6d  x" || [info comm
0270: 61 6e 64 73 20 74 65 73 74 5f 73 79 73 63 61 6c  ands test_syscal
0280: 6c 5d 3d 3d 22 22 7d 20 7b 0a 20 20 66 69 6e 69  l]==""} {.  fini
0290: 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72 6e  sh_test.  return
02a0: 0a 7d 20 0a 73 65 74 20 74 65 73 74 70 72 65 66  .} .set testpref
02b0: 69 78 20 75 6e 69 78 65 78 63 6c 0a 0a 0a 0a 23  ix unixexcl....#
02c0: 20 54 65 73 74 20 74 68 61 74 20 77 68 65 6e 20   Test that when 
02d0: 75 73 69 6e 67 20 56 46 53 20 22 75 6e 69 78 2d  using VFS "unix-
02e0: 65 78 63 6c 22 2c 20 74 68 65 20 66 69 72 73 74  excl", the first
02f0: 20 74 69 6d 65 20 74 68 65 20 64 61 74 61 62 61   time the databa
0300: 73 65 20 69 73 20 72 65 61 64 0a 23 20 61 20 70  se is read.# a p
0310: 72 6f 63 65 73 73 2d 77 69 64 65 20 65 78 63 6c  rocess-wide excl
0320: 75 73 69 76 65 20 6c 6f 63 6b 20 69 73 20 74 61  usive lock is ta
0330: 6b 65 6e 20 6f 6e 20 69 74 2e 20 54 68 69 73 20  ken on it. This 
0340: 6d 65 61 6e 73 20 6f 74 68 65 72 20 63 6f 6e 6e  means other conn
0350: 65 63 74 69 6f 6e 73 0a 23 20 77 69 74 68 69 6e  ections.# within
0360: 20 74 68 65 20 70 72 6f 63 65 73 73 20 6d 61 79   the process may
0370: 20 73 74 69 6c 6c 20 61 63 63 65 73 73 20 74 68   still access th
0380: 65 20 64 62 20 6e 6f 72 6d 61 6c 6c 79 2c 20 62  e db normally, b
0390: 75 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66  ut connections f
03a0: 72 6f 6d 0a 23 20 6f 75 74 73 69 64 65 20 74 68  rom.# outside th
03b0: 65 20 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74  e process cannot
03c0: 2e 0a 23 0a 64 6f 5f 6d 75 6c 74 69 63 6c 69 65  ..#.do_multiclie
03d0: 6e 74 5f 74 65 73 74 20 74 6e 20 7b 0a 20 20 64  nt_test tn {.  d
03e0: 6f 5f 74 65 73 74 20 75 6e 69 78 65 78 63 6c 2d  o_test unixexcl-
03f0: 31 2e 24 74 6e 2e 31 20 7b 0a 20 20 20 20 73 71  1.$tn.1 {.    sq
0400: 6c 31 20 7b 0a 20 20 20 20 20 20 43 52 45 41 54  l1 {.      CREAT
0410: 45 20 54 41 42 4c 45 20 74 31 28 61 2c 20 62 29  E TABLE t1(a, b)
0420: 3b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  ;.      INSERT I
0430: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 68  NTO t1 VALUES('h
0440: 65 6c 6c 6f 27 2c 20 27 77 6f 72 6c 64 27 29 3b  ello', 'world');
0450: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20  .    }.  } {}.  
0460: 64 6f 5f 74 65 73 74 20 75 6e 69 78 65 78 63 6c  do_test unixexcl
0470: 2d 31 2e 24 74 6e 2e 32 20 7b 20 73 71 6c 32 20  -1.$tn.2 { sql2 
0480: 7b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  { SELECT * FROM 
0490: 74 31 20 7d 20 7d 20 7b 68 65 6c 6c 6f 20 77 6f  t1 } } {hello wo
04a0: 72 6c 64 7d 0a 20 20 64 6f 5f 74 65 73 74 20 75  rld}.  do_test u
04b0: 6e 69 78 65 78 63 6c 2d 31 2e 24 74 6e 2e 33 20  nixexcl-1.$tn.3 
04c0: 7b 0a 20 20 20 20 63 6f 64 65 31 20 7b 0a 20 20  {.    code1 {.  
04d0: 20 20 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 20      db close.   
04e0: 20 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65     sqlite3 db te
04f0: 73 74 2e 64 62 20 2d 76 66 73 20 75 6e 69 78 2d  st.db -vfs unix-
0500: 65 78 63 6c 0a 20 20 20 20 20 20 64 62 20 65 76  excl.      db ev
0510: 61 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46 52  al { SELECT * FR
0520: 4f 4d 20 74 31 20 7d 0a 20 20 20 20 7d 0a 20 20  OM t1 }.    }.  
0530: 7d 20 7b 68 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a  } {hello world}.
0540: 20 20 69 66 20 7b 24 74 6e 3d 3d 31 7d 20 7b 0a    if {$tn==1} {.
0550: 20 20 20 20 64 6f 5f 74 65 73 74 20 75 6e 69 78      do_test unix
0560: 65 78 63 6c 2d 31 2e 24 74 6e 2e 34 2e 6d 75 6c  excl-1.$tn.4.mul
0570: 74 69 70 72 6f 63 20 7b 20 0a 20 20 20 20 20 20  tiproc { .      
0580: 63 73 71 6c 32 20 7b 20 53 45 4c 45 43 54 20 2a  csql2 { SELECT *
0590: 20 46 52 4f 4d 20 74 31 20 7d 20 0a 20 20 20 20   FROM t1 } .    
05a0: 7d 20 7b 31 20 7b 64 61 74 61 62 61 73 65 20 69  } {1 {database i
05b0: 73 20 6c 6f 63 6b 65 64 7d 7d 0a 20 20 7d 20 65  s locked}}.  } e
05c0: 6c 73 65 20 7b 0a 20 20 20 20 64 6f 5f 74 65 73  lse {.    do_tes
05d0: 74 20 75 6e 69 78 65 78 63 6c 2d 31 2e 24 74 6e  t unixexcl-1.$tn
05e0: 2e 34 2e 73 69 6e 67 6c 65 70 72 6f 63 20 7b 20  .4.singleproc { 
05f0: 0a 20 20 20 20 20 20 63 73 71 6c 32 20 7b 20 53  .      csql2 { S
0600: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
0610: 7d 20 0a 20 20 20 20 7d 20 7b 30 20 7b 68 65 6c  } .    } {0 {hel
0620: 6c 6f 20 77 6f 72 6c 64 7d 7d 0a 20 20 7d 0a 7d  lo world}}.  }.}
0630: 0a 0a 23 20 54 65 73 74 20 74 68 61 74 20 77 68  ..# Test that wh
0640: 65 6e 20 75 73 69 6e 67 20 56 46 53 20 22 75 6e  en using VFS "un
0650: 69 78 2d 65 78 63 6c 22 2c 20 69 66 20 61 20 66  ix-excl", if a f
0660: 69 6c 65 20 69 73 20 6f 70 65 6e 65 64 20 69 6e  ile is opened in
0670: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 0a   read-only mode.
0680: 23 20 74 68 65 20 62 65 68 61 76 69 6f 75 72 20  # the behaviour 
0690: 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 69  is the same as i
06a0: 66 20 56 46 53 20 22 75 6e 69 78 22 20 77 65 72  f VFS "unix" wer
06b0: 65 20 75 73 65 64 2e 0a 23 0a 64 6f 5f 6d 75 6c  e used..#.do_mul
06c0: 74 69 63 6c 69 65 6e 74 5f 74 65 73 74 20 74 6e  ticlient_test tn
06d0: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 75 6e 69   {.  do_test uni
06e0: 78 65 78 63 6c 2d 32 2e 24 74 6e 2e 31 20 7b 0a  xexcl-2.$tn.1 {.
06f0: 20 20 20 20 73 71 6c 31 20 7b 0a 20 20 20 20 20      sql1 {.     
0700: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
0710: 28 61 2c 20 62 29 3b 0a 20 20 20 20 20 20 49 4e  (a, b);.      IN
0720: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0730: 55 45 53 28 27 68 65 6c 6c 6f 27 2c 20 27 77 6f  UES('hello', 'wo
0740: 72 6c 64 27 29 3b 0a 20 20 20 20 7d 0a 20 20 7d  rld');.    }.  }
0750: 20 7b 7d 0a 20 20 64 6f 5f 74 65 73 74 20 75 6e   {}.  do_test un
0760: 69 78 65 78 63 6c 2d 32 2e 24 74 6e 2e 32 20 7b  ixexcl-2.$tn.2 {
0770: 20 73 71 6c 32 20 7b 20 53 45 4c 45 43 54 20 2a   sql2 { SELECT *
0780: 20 46 52 4f 4d 20 74 31 20 7d 20 7d 20 7b 68 65   FROM t1 } } {he
0790: 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 20 20 64 6f 5f  llo world}.  do_
07a0: 74 65 73 74 20 75 6e 69 78 65 78 63 6c 2d 32 2e  test unixexcl-2.
07b0: 24 74 6e 2e 33 20 7b 0a 20 20 20 20 63 6f 64 65  $tn.3 {.    code
07c0: 31 20 7b 0a 20 20 20 20 20 20 64 62 20 63 6c 6f  1 {.      db clo
07d0: 73 65 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33  se.      sqlite3
07e0: 20 64 62 20 74 65 73 74 2e 64 62 20 2d 72 65 61   db test.db -rea
07f0: 64 6f 6e 6c 79 20 79 65 73 20 2d 76 66 73 20 75  donly yes -vfs u
0800: 6e 69 78 2d 65 78 63 6c 0a 20 20 20 20 20 20 64  nix-excl.      d
0810: 62 20 65 76 61 6c 20 7b 20 53 45 4c 45 43 54 20  b eval { SELECT 
0820: 2a 20 46 52 4f 4d 20 74 31 20 7d 0a 20 20 20 20  * FROM t1 }.    
0830: 7d 0a 20 20 7d 20 7b 68 65 6c 6c 6f 20 77 6f 72  }.  } {hello wor
0840: 6c 64 7d 0a 20 20 64 6f 5f 74 65 73 74 20 75 6e  ld}.  do_test un
0850: 69 78 65 78 63 6c 2d 32 2e 24 74 6e 2e 34 20 7b  ixexcl-2.$tn.4 {
0860: 20 0a 20 20 20 20 63 73 71 6c 32 20 7b 20 53 45   .    csql2 { SE
0870: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 7d  LECT * FROM t1 }
0880: 20 0a 20 20 7d 20 7b 30 20 7b 68 65 6c 6c 6f 20   .  } {0 {hello 
0890: 77 6f 72 6c 64 7d 7d 0a 7d 0a 0a 64 6f 5f 6d 75  world}}.}..do_mu
08a0: 6c 74 69 63 6c 69 65 6e 74 5f 74 65 73 74 20 74  lticlient_test t
08b0: 6e 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 75 6e  n {.  do_test un
08c0: 69 78 65 78 63 6c 2d 33 2e 24 74 6e 2e 31 20 7b  ixexcl-3.$tn.1 {
08d0: 0a 20 20 20 20 63 6f 64 65 31 20 7b 20 64 62 20  .    code1 { db 
08e0: 63 6c 6f 73 65 3b 20 73 71 6c 69 74 65 33 20 64  close; sqlite3 d
08f0: 62 20 66 69 6c 65 3a 74 65 73 74 2e 64 62 3f 70  b file:test.db?p
0900: 73 6f 77 3d 30 20 2d 76 66 73 20 75 6e 69 78 2d  sow=0 -vfs unix-
0910: 65 78 63 6c 20 2d 75 72 69 20 31 20 7d 0a 20 20  excl -uri 1 }.  
0920: 20 20 63 6f 64 65 32 20 7b 20 64 62 32 20 63 6c    code2 { db2 cl
0930: 6f 73 65 3b 20 73 71 6c 69 74 65 33 20 64 62 32  ose; sqlite3 db2
0940: 20 66 69 6c 65 3a 74 65 73 74 2e 64 62 3f 70 73   file:test.db?ps
0950: 6f 77 3d 30 20 2d 76 66 73 20 75 6e 69 78 2d 65  ow=0 -vfs unix-e
0960: 78 63 6c 20 2d 75 72 69 20 31 20 7d 0a 20 20 20  xcl -uri 1 }.   
0970: 20 73 71 6c 31 20 7b 0a 20 20 20 20 20 20 50 52   sql1 {.      PR
0980: 41 47 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d  AGMA auto_vacuum
0990: 20 3d 20 30 3b 0a 20 20 20 20 20 20 50 52 41 47   = 0;.      PRAG
09a0: 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  MA journal_mode 
09b0: 3d 20 57 41 4c 3b 0a 20 20 20 20 20 20 43 52 45  = WAL;.      CRE
09c0: 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 20  ATE TABLE t1(a, 
09d0: 62 29 3b 0a 20 20 20 20 20 20 49 4e 53 45 52 54  b);.      INSERT
09e0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
09f0: 31 2c 20 32 29 3b 0a 20 20 20 20 7d 0a 20 20 7d  1, 2);.    }.  }
0a00: 20 7b 77 61 6c 7d 0a 0a 20 20 69 66 20 7b 24 74   {wal}..  if {$t
0a10: 6e 3d 3d 31 7d 20 7b 0a 20 20 20 20 64 6f 5f 74  n==1} {.    do_t
0a20: 65 73 74 20 75 6e 69 78 65 78 63 6c 2d 33 2e 24  est unixexcl-3.$
0a30: 74 6e 2e 31 2e 6d 75 6c 74 69 70 72 6f 63 20 7b  tn.1.multiproc {
0a40: 0a 20 20 20 20 20 20 63 73 71 6c 32 20 7b 20 53  .      csql2 { S
0a50: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
0a60: 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b 64 61 74   }.    } {1 {dat
0a70: 61 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 7d  abase is locked}
0a80: 7d 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  }.  } else {.   
0a90: 20 64 6f 5f 74 65 73 74 20 75 6e 69 78 65 78 63   do_test unixexc
0aa0: 6c 2d 33 2e 24 74 6e 2e 31 2e 73 69 6e 67 6c 65  l-3.$tn.1.single
0ab0: 70 72 6f 63 20 7b 0a 20 20 20 20 20 20 73 71 6c  proc {.      sql
0ac0: 32 20 7b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  2 { SELECT * FRO
0ad0: 4d 20 74 31 3b 20 7d 0a 20 20 20 20 7d 20 7b 31  M t1; }.    } {1
0ae0: 20 32 7d 0a 0a 20 20 20 20 64 6f 5f 74 65 73 74   2}..    do_test
0af0: 20 75 6e 69 78 65 78 63 6c 2d 33 2e 24 74 6e 2e   unixexcl-3.$tn.
0b00: 32 20 7b 0a 20 20 20 20 20 20 73 71 6c 32 20 7b  2 {.      sql2 {
0b10: 20 0a 20 20 20 20 20 20 20 20 42 45 47 49 4e 3b   .        BEGIN;
0b20: 0a 20 20 20 20 20 20 20 20 20 20 53 45 4c 45 43  .          SELEC
0b30: 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  T * FROM t1;.   
0b40: 20 20 20 7d 0a 20 20 20 20 7d 20 7b 31 20 32 7d     }.    } {1 2}
0b50: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 75 6e 69  .    do_test uni
0b60: 78 65 78 63 6c 2d 33 2e 24 74 6e 2e 33 20 7b 0a  xexcl-3.$tn.3 {.
0b70: 20 20 20 20 20 20 73 71 6c 31 20 7b 20 50 52 41        sql1 { PRA
0b80: 47 4d 41 20 77 61 6c 5f 63 68 65 63 6b 70 6f 69  GMA wal_checkpoi
0b90: 6e 74 3b 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  nt; INSERT INTO 
0ba0: 74 31 20 56 41 4c 55 45 53 28 33 2c 20 34 29 3b  t1 VALUES(3, 4);
0bb0: 20 7d 0a 20 20 20 20 7d 20 7b 30 20 33 20 33 7d   }.    } {0 3 3}
0bc0: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 75 6e 69  .    do_test uni
0bd0: 78 65 78 63 6c 2d 33 2e 24 74 6e 2e 34 20 7b 0a  xexcl-3.$tn.4 {.
0be0: 20 20 20 20 20 20 73 71 6c 32 20 7b 20 53 45 4c        sql2 { SEL
0bf0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 20 7d  ECT * FROM t1; }
0c00: 0a 20 20 20 20 7d 20 7b 31 20 32 7d 0a 20 20 20  .    } {1 2}.   
0c10: 20 64 6f 5f 74 65 73 74 20 75 6e 69 78 65 78 63   do_test unixexc
0c20: 6c 2d 33 2e 24 74 6e 2e 35 20 7b 0a 20 20 20 20  l-3.$tn.5 {.    
0c30: 20 20 73 71 6c 31 20 7b 20 53 45 4c 45 43 54 20    sql1 { SELECT 
0c40: 2a 20 46 52 4f 4d 20 74 31 3b 20 7d 0a 20 20 20  * FROM t1; }.   
0c50: 20 7d 20 7b 31 20 32 20 33 20 34 7d 0a 20 20 20   } {1 2 3 4}.   
0c60: 20 64 6f 5f 74 65 73 74 20 75 6e 69 78 65 78 63   do_test unixexc
0c70: 6c 2d 33 2e 24 74 6e 2e 36 20 7b 0a 20 20 20 20  l-3.$tn.6 {.    
0c80: 20 20 73 71 6c 32 20 7b 20 43 4f 4d 4d 49 54 3b    sql2 { COMMIT;
0c90: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0ca0: 31 3b 20 7d 0a 20 20 20 20 7d 20 7b 31 20 32 20  1; }.    } {1 2 
0cb0: 33 20 34 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74  3 4}.    do_test
0cc0: 20 75 6e 69 78 65 78 63 6c 2d 33 2e 24 74 6e 2e   unixexcl-3.$tn.
0cd0: 37 20 7b 0a 20 20 20 20 20 20 73 71 6c 31 20 7b  7 {.      sql1 {
0ce0: 20 50 52 41 47 4d 41 20 77 61 6c 5f 63 68 65 63   PRAGMA wal_chec
0cf0: 6b 70 6f 69 6e 74 3b 20 7d 0a 20 20 20 20 7d 20  kpoint; }.    } 
0d00: 7b 30 20 34 20 34 7d 0a 20 20 7d 0a 7d 0a 0a 66  {0 4 4}.  }.}..f
0d10: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.