Annotation of embedaddon/sqlite3/test/stmt.test, revision 1.1

1.1     ! misho       1: # 2010 February 18
        !             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: #
        !            12: # The tests in this file check that SQLite uses (or does not use) a
        !            13: # statement journal for various SQL statements.
        !            14: #
        !            15: 
        !            16: set testdir [file dirname $argv0]
        !            17: source $testdir/tester.tcl
        !            18: 
        !            19: do_test stmt-1.1 {
        !            20:   execsql { CREATE TABLE t1(a integer primary key, b INTEGER NOT NULL) }
        !            21: } {}
        !            22: 
        !            23: # The following tests verify the method used for the tests in this file -
        !            24: # that if a statement journal is required by a statement it is opened and
        !            25: # remains open until the current transaction is committed or rolled back.
        !            26: #
        !            27: # This only work if SQLITE_TEMP_STORE!=3
        !            28: #
        !            29: if {$::TEMP_STORE==3} {
        !            30:   finish_test
        !            31:   return
        !            32: }
        !            33: do_test stmt-1.2 {
        !            34:   set sqlite_open_file_count
        !            35: } {1}
        !            36: do_test stmt-1.3 {
        !            37:   execsql {
        !            38:     PRAGMA temp_store = file;
        !            39:     BEGIN;
        !            40:       INSERT INTO t1 VALUES(1, 1);
        !            41:   }
        !            42:   set sqlite_open_file_count
        !            43: } {2}
        !            44: do_test stmt-1.4 {
        !            45:   execsql {
        !            46:     INSERT INTO t1 SELECT a+1, b+1 FROM t1;
        !            47:   }
        !            48:   set sqlite_open_file_count
        !            49: } {3}
        !            50: do_test stmt-1.5 {
        !            51:   execsql COMMIT
        !            52:   set sqlite_open_file_count
        !            53: } {1}
        !            54: do_test stmt-1.6.1 {
        !            55:   execsql {
        !            56:     BEGIN;
        !            57:       INSERT INTO t1 SELECT a+2, b+2 FROM t1;
        !            58:   }
        !            59:   set sqlite_open_file_count
        !            60: } {2}
        !            61: do_test stmt-1.6.2 {
        !            62:   execsql { INSERT INTO t1 SELECT a+4, b+4 FROM t1 }
        !            63:   set sqlite_open_file_count
        !            64: } {3}
        !            65: do_test stmt-1.7 {
        !            66:   execsql COMMIT
        !            67:   set sqlite_open_file_count
        !            68: } {1}
        !            69: 
        !            70: 
        !            71: proc filecount {testname sql expected} {
        !            72:   uplevel [list do_test $testname [subst -nocommand {
        !            73:     execsql BEGIN
        !            74:     execsql { $sql }
        !            75:     set ret [set sqlite_open_file_count]
        !            76:     execsql ROLLBACK
        !            77:     set ret
        !            78:   }] $expected]
        !            79: }
        !            80: 
        !            81: filecount stmt-2.1 { INSERT INTO t1 VALUES(9, 9)  } 2
        !            82: filecount stmt-2.2 { REPLACE INTO t1 VALUES(9, 9) } 2
        !            83: filecount stmt-2.3 { INSERT INTO t1 SELECT 9, 9   } 2
        !            84: filecount stmt-2.4        !            85:     INSERT INTO t1 SELECT 9, 9;
        !            86:     INSERT INTO t1 SELECT 10, 10;
        !            87: } 3
        !            88: 
        !            89: do_test stmt-2.5 {
        !            90:   execsql { CREATE INDEX i1 ON t1(b) }
        !            91: } {}
        !            92: filecount stmt-2.6        !            93:   REPLACE INTO t1 VALUES(5, 5);
        !            94:   REPLACE INTO t1 VALUES(5, 5); 
        !            95: } 3
        !            96: 
        !            97: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>