add pragma page_size compatibility so it will operate on encrypted databases
[sqlcipher.git] / test / sqllog.test
blob53d8d871d8138622037b4607ad6aef439eccd080
1 # 2015 November 13
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
6 #    May you do good and not evil.
7 #    May you find forgiveness for yourself and forgive others.
8 #    May you share freely, never taking more than you give.
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.  The
12 # focus of this file is testing the test_sqllog.c module.
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17 set testprefix sqllog
19 ifcapable !sqllog {
20   finish_test
21   return
24 proc readfile {f} {
25   set fd [open $f]
26   set txt [read $fd]
27   close $fd
28   set txt
31 proc delete_all_sqllog_files {} {
32   forcedelete {*}[glob -nocomplain sqllog_*.sql]
33   forcedelete {*}[glob -nocomplain sqllog_*.db]
34   forcedelete {*}[glob -nocomplain sqllog_*.idx]
37 proc touch {f} {
38   set fd [open $f w+]
39   close $fd
42 db close
43 sqlite3_shutdown
44 set ::env(SQLITE_SQLLOG_DIR) [pwd]
46 delete_all_sqllog_files
48 sqlite3 db test.db
49 set a a
50 set b b
51 do_execsql_test 1.0 {
52   CREATE TABLE t1(x, y);
53   INSERT INTO t1 VALUES(1, 2);
54   INSERT INTO t1 VALUES($a, $b);
55   SELECT * FROM t1;
56 } {1 2 a b}
57 db close
59 do_test 1.1 {
60   readfile [lindex [glob sqllog_*.sql] 0]
61 } [string trimleft {
62 /-- Main database is '.*/sqllog_.*_0.db'
63 CREATE TABLE t1\(x, y\);; -- clock=0
64 INSERT INTO t1 VALUES\(1, 2\);; -- clock=1
65 INSERT INTO t1 VALUES\('a', 'b'\);; -- clock=2
66 SELECT . FROM t1;; -- clock=3
67 /}]
69 do_test 1.2 {
70   file size [lindex [glob sqllog_*_0.db] 0]
71 } 1024
73 #-------------------------------------------------------------------------
74 catch { db close }
75 sqlite3_shutdown
76 delete_all_sqllog_files
77 forcedelete test.db-sqllog
79 set ::env(SQLITE_SQLLOG_CONDITIONAL) 1
80 sqlite3 db test.db
81 do_execsql_test 2.1 {
82   INSERT INTO t1 VALUES(4, 5);
83   SELECT * FROM t1;
84 } {1 2 a b 4 5}
86 do_test 2.2 {
87   glob -nocomplain sqllog_*
88 } {}
90 db close
91 touch test.db-sqllog
92 sqlite3 db test.db
93 do_execsql_test 2.3 {
94   INSERT INTO t1 VALUES(6, 7);
95   SELECT * FROM t1;
96 } {1 2 a b 4 5 6 7}
97 db close
99 do_test 2.4 {
100   readfile [lindex [glob sqllog_*.sql] 0]
101 } [string trimleft {
102 /-- Main database is '.*/sqllog_.*_0.db'
103 INSERT INTO t1 VALUES\(6, 7\);; -- clock=0
104 SELECT . FROM t1;; -- clock=1
107 catch { db close }
108 sqlite3_shutdown
109 unset ::env(SQLITE_SQLLOG_DIR)
110 unset ::env(SQLITE_SQLLOG_CONDITIONAL)
111 sqlite3_config_sqllog
112 sqlite3_initialize
113 finish_test