File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / attach4.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, 4 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 200 July 1
    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 script is attaching many database files to a single
   13: # connection.
   14: #
   15: 
   16: set testdir [file dirname $argv0]
   17: source $testdir/tester.tcl
   18: 
   19: set testprefix attach4
   20: 
   21: ifcapable !attach {
   22:   finish_test
   23:   return
   24: }
   25: 
   26: puts "Testing with SQLITE_MAX_ATTACHED=$SQLITE_MAX_ATTACHED"
   27: 
   28: set files {main test.db}
   29: for {set ii 0} {$ii < $SQLITE_MAX_ATTACHED} {incr ii} {
   30:   lappend files aux$ii "test.db$ii"
   31: }
   32: 
   33: do_test 1.1 {
   34:   sqlite3_limit db SQLITE_LIMIT_ATTACHED -1
   35: } $SQLITE_MAX_ATTACHED
   36: 
   37: do_test 1.2.1 {
   38:   db close
   39:   foreach {name f} $files { forcedelete $f }
   40:   sqlite3 db test.db
   41:   
   42:   foreach {name f} $files {
   43:     if {$name == "main"} continue
   44:     execsql "ATTACH '$f' AS $name"
   45:   }
   46: 
   47:   db eval {PRAGMA database_list} {
   48:     lappend L $name [file tail $file]
   49:   }
   50:   set L
   51: } $files
   52: 
   53: do_catchsql_test 1.2.2 {
   54:   ATTACH 'x.db' AS next;
   55: } [list 1 "too many attached databases - max $SQLITE_MAX_ATTACHED"]
   56: 
   57: do_test 1.3 {
   58:   execsql BEGIN;
   59:   foreach {name f} $files {
   60:     execsql "CREATE TABLE $name.tbl(x)"
   61:     execsql "INSERT INTO $name.tbl VALUES('$f')"
   62:   }
   63:   execsql COMMIT;
   64: } {}
   65: 
   66: do_test 1.4 {
   67:   set L [list]
   68:   foreach {name f} $files {
   69:     lappend L $name [execsql "SELECT x FROM $name.tbl"]
   70:   }
   71:   set L
   72: } $files
   73: 
   74: set L [list]
   75: set S ""
   76: foreach {name f} $files {
   77:   if {[permutation] == "journaltest"} {
   78:     set mode delete
   79:   } else {
   80:     set mode wal
   81:   }
   82:   ifcapable !wal { set mode delete }
   83:   lappend L $mode
   84:   append S "
   85:     PRAGMA $name.journal_mode = WAL;
   86:     UPDATE $name.tbl SET x = '$name';
   87:   "
   88: }
   89: do_execsql_test 1.5 $S $L
   90: 
   91: do_test 1.6 {
   92:   set L [list]
   93:   foreach {name f} $files {
   94:     lappend L [execsql "SELECT x FROM $name.tbl"] $f
   95:   }
   96:   set L
   97: } $files
   98: 
   99: do_test 1.7 {
  100:   execsql BEGIN;
  101:   foreach {name f} $files {
  102:     execsql "UPDATE $name.tbl SET x = '$f'"
  103:   }
  104:   execsql COMMIT;
  105: } {}
  106: 
  107: do_test 1.8 {
  108:   set L [list]
  109:   foreach {name f} $files {
  110:     lappend L $name [execsql "SELECT x FROM $name.tbl"]
  111:   }
  112:   set L
  113: } $files
  114: 
  115: db close
  116: foreach {name f} $files { forcedelete $f }
  117: 
  118: finish_test

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