Annotation of embedaddon/sqlite3/test/attach4.test, revision 1.1.1.1

1.1       misho       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>