AryaWu/sqlite
0
1# 2018 August 282#3# The author disclaims copyright to this source code. In place of4# a legal notice, here is a blessing:5#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.9#10#***********************************************************************11# This file implements regression tests for SQLite library. The focus12# of this file is the sqlite3_snapshot_xxx() APIs.13#14 15set testdir [file dirname $argv0]16source $testdir/tester.tcl17ifcapable !snapshot {finish_test; return}18set testprefix snapshot419 20# This test does not work with the inmemory_journal permutation. The reason21# is that each connection opened as part of this permutation executes22# "PRAGMA journal_mode=memory", which fails if the database is in wal mode23# and there are one or more existing connections.24if {[permutation]=="inmemory_journal"} {25 finish_test26 return27}28 29sqlite3 db2 test.db30 31do_execsql_test 1.0 {32 PRAGMA cache_size = 10;33 CREATE TABLE t1(a, b);34 INSERT INTO t1 VALUES(1, randomblob(400));35 PRAGMA journal_mode = wal;36 WITH s(i) AS (37 SELECT 2 UNION ALL SELECT i+1 FROM s WHERE i<10038 ) 39 INSERT INTO t1 SELECT i, randomblob(400) FROM s;40} {wal}41 42do_test 1.1 {43 execsql {44 BEGIN;45 SELECT count(*) FROM t1;46 }47} {100}48 49do_test 1.2 {50 db2 eval { 51 SELECT count(*) FROM t1;52 CREATE TABLE t2(x); 53 }54} {100}55 56do_test 1.3 {57 set ::snap [sqlite3_snapshot_get_blob db main]58 db2 eval { PRAGMA wal_checkpoint }59} {0 54 52}60 61do_test 1.4 {62 execsql {63 COMMIT;64 SELECT * FROM sqlite_master;65 BEGIN;66 }67 sqlite3_snapshot_open_blob db main $::snap68 execsql {69 SELECT count(*) FROM t170 } 71} {100}72 73 74finish_test75 