Annotation of embedaddon/sqlite3/test/stmt.test, revision 1.1.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>