gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/wal8.test (about)

     1  # 2012 February 28
     2  #
     3  # The author disclaims copyright to this source code.  In place of
     4  # 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
    12  # focus of this file is testing the operation of the library in
    13  # "PRAGMA journal_mode=WAL" mode.
    14  #
    15  # Specifically, it tests the case where a connection opens an empty
    16  # file. Then, another connection opens the same file and initializes
    17  # the connection as a WAL database. Following this, the first connection
    18  # executes a "PRAGMA page_size = XXX" command to set its expected page
    19  # size, and then queries the database.
    20  #
    21  # This is an unusual case, as normally SQLite is able to glean the page
    22  # size from the database file as soon as it is opened (even before the
    23  # first read transaction is executed), and the "PRAGMA page_size = XXX"
    24  # is a no-op.
    25  #
    26  set testdir [file dirname $argv0]
    27  source $testdir/tester.tcl
    28  set ::testprefix wal8
    29  ifcapable !wal {finish_test ; return }
    30  do_not_use_codec
    31  
    32  db close
    33  forcedelete test.db test.db-wal
    34  
    35  sqlite3 db test.db
    36  sqlite3 db2 test.db
    37  
    38  do_test 1.0 {
    39    execsql {
    40      PRAGMA journal_mode = wal;
    41      CREATE TABLE t1(a, b);
    42      INSERT INTO t1 VALUES(1, 2);
    43    } db2
    44  } {wal}
    45  
    46  do_catchsql_test 1.1 {
    47    PRAGMA page_size = 4096;
    48    VACUUM;
    49  } {0 {}}
    50  
    51  db close
    52  db2 close
    53  forcedelete test.db test.db-wal
    54  
    55  sqlite3 db test.db
    56  sqlite3 db2 test.db
    57  
    58  do_test 2.0 {
    59    execsql {
    60      CREATE TABLE t1(a, b);
    61      INSERT INTO t1 VALUES(1, 2);
    62      PRAGMA journal_mode = wal;
    63    } db2
    64  } {wal}
    65  
    66  do_catchsql_test 2.1 {
    67    PRAGMA page_size = 4096;
    68    VACUUM;
    69  } {0 {}}
    70  
    71  db close
    72  db2 close
    73  forcedelete test.db test.db-wal
    74  
    75  sqlite3 db test.db
    76  sqlite3 db2 test.db
    77  
    78  do_test 3.0 {
    79    execsql {
    80      PRAGMA journal_mode = wal;
    81      CREATE TABLE t1(a, b);
    82      INSERT INTO t1 VALUES(1, 2);
    83    } db2
    84  } {wal}
    85  
    86  do_execsql_test 3.1 {
    87    PRAGMA page_size = 4096;
    88    SELECT name FROM sqlite_master;
    89  } {t1}
    90  
    91  finish_test