File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / stmt.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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>