sqlite/test/wal6.test
shaneh 72fe10fd15 Added TCL test case for converting to WAL mode with multiple connections.
Added exception to the test case for Windows for not being able to delete the open journal file.

FossilOrigin-Name: 7061601f4935af483f4068d257d6f8a9c728fd33
2010-12-01 20:49:42 +00:00

91 lines
2.1 KiB
Plaintext

# 2010 December 1
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#***********************************************************************
# This file implements regression tests for SQLite library. The
# focus of this file is testing the operation of the library in
# "PRAGMA journal_mode=WAL" mode.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
source $testdir/lock_common.tcl
source $testdir/wal_common.tcl
source $testdir/malloc_common.tcl
ifcapable !wal {finish_test ; return }
#-------------------------------------------------------------------------
# Changing to WAL mode in one connection forces the change in others.
#
db close
forcedelete test.db
set all_journal_modes {delete persist truncate memory off}
foreach jmode $all_journal_modes {
do_test wal6-1.0.$jmode {
sqlite3 db test.db
execsql "PRAGMA journal_mode = $jmode;"
} $jmode
do_test wal6-1.1.$jmode {
execsql {
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
INSERT INTO t1 VALUES(1,2);
SELECT * FROM t1;
}
} {1 2}
# Under Windows, you'll get an error trying to delete
# a file this is already opened. For now, make sure
# we get that error, then close the first connection
# so the other tests work.
if {$tcl_platform(platform)=="windows"} {
if {$jmode=="persist" || $jmode=="truncate"} {
do_test wal6-1.2.$jmode.win {
sqlite3 db2 test.db
catchsql {
PRAGMA journal_mode=WAL;
} db2
} {1 {disk I/O error}}
db2 close
db close
}
}
do_test wal6-1.2.$jmode {
sqlite3 db2 test.db
execsql {
PRAGMA journal_mode=WAL;
INSERT INTO t1 VALUES(3,4);
SELECT * FROM t1 ORDER BY a;
} db2
} {wal 1 2 3 4}
if {$tcl_platform(platform)=="windows"} {
if {$jmode=="persist" || $jmode=="truncate"} {
sqlite3 db test.db
}
}
do_test wal6-1.3.$jmode {
execsql {
SELECT * FROM t1 ORDER BY a;
}
} {1 2 3 4}
db close
db2 close
forcedelete test.db
}
finish_test