1*aecc04d6Sdan# 2021 April 2
2*aecc04d6Sdan#
3*aecc04d6Sdan# The author disclaims copyright to this source code.  In place of
4*aecc04d6Sdan# a legal notice, here is a blessing:
5*aecc04d6Sdan#
6*aecc04d6Sdan#    May you do good and not evil.
7*aecc04d6Sdan#    May you find forgiveness for yourself and forgive others.
8*aecc04d6Sdan#    May you share freely, never taking more than you give.
9*aecc04d6Sdan#
10*aecc04d6Sdan#***********************************************************************
11*aecc04d6Sdan#
12*aecc04d6Sdan
13*aecc04d6Sdanset testdir [file dirname $argv0]
14*aecc04d6Sdansource $testdir/tester.tcl
15*aecc04d6Sdansource $testdir/lock_common.tcl
16*aecc04d6Sdanset testprefix external_reader
17*aecc04d6Sdan
18*aecc04d6Sdanifcapable !wal {
19*aecc04d6Sdan  finish_test
20*aecc04d6Sdan  return
21*aecc04d6Sdan}
22*aecc04d6Sdanif {$::tcl_platform(platform)!="unix"} {
23*aecc04d6Sdan  finish_test
24*aecc04d6Sdan  return
25*aecc04d6Sdan}
26*aecc04d6Sdan
27*aecc04d6Sdando_multiclient_test tn {
28*aecc04d6Sdan
29*aecc04d6Sdan  set bExternal 1
30*aecc04d6Sdan  if {[info commands db3]!=""} { set bExternal 0 }
31*aecc04d6Sdan
32*aecc04d6Sdan  do_test 1.$tn.0 {
33*aecc04d6Sdan    sql1 {
34*aecc04d6Sdan      PRAGMA journal_mode = wal;
35*aecc04d6Sdan      CREATE TABLE t1(a, b);
36*aecc04d6Sdan      INSERT INTO t1 VALUES(1, 2);
37*aecc04d6Sdan    }
38*aecc04d6Sdan  } {wal}
39*aecc04d6Sdan
40*aecc04d6Sdan  do_test 1.$tn.1 {
41*aecc04d6Sdan    sql2 { SELECT * FROM t1 }
42*aecc04d6Sdan  } {1 2}
43*aecc04d6Sdan
44*aecc04d6Sdan  do_test 1.$tn.2 {
45*aecc04d6Sdan    code1 {
46*aecc04d6Sdan      file_control_external_reader db
47*aecc04d6Sdan    }
48*aecc04d6Sdan  } {0}
49*aecc04d6Sdan
50*aecc04d6Sdan  do_test 1.$tn.3 {
51*aecc04d6Sdan    sql2 {
52*aecc04d6Sdan      BEGIN;
53*aecc04d6Sdan        SELECT * FROM t1;
54*aecc04d6Sdan    }
55*aecc04d6Sdan  } {1 2}
56*aecc04d6Sdan
57*aecc04d6Sdan  do_test 1.$tn.4 {
58*aecc04d6Sdan    code1 {
59*aecc04d6Sdan      file_control_external_reader db
60*aecc04d6Sdan    }
61*aecc04d6Sdan  } $bExternal
62*aecc04d6Sdan
63*aecc04d6Sdan  do_test 1.$tn.5 {
64*aecc04d6Sdan    sql2 { COMMIT }
65*aecc04d6Sdan  } {}
66*aecc04d6Sdan
67*aecc04d6Sdan  do_test 1.$tn.6 {
68*aecc04d6Sdan    code1 { file_control_external_reader db }
69*aecc04d6Sdan  } 0
70*aecc04d6Sdan
71*aecc04d6Sdan}
72*aecc04d6Sdan
73*aecc04d6Sdan
74*aecc04d6Sdanfinish_test
75