CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
attach4.test138 linesDownload Raw Back to test
1# 200 July 12#3# The author disclaims copyright to this source code.  In place of4# 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.  The12# focus of this script is attaching many database files to a single13# connection.14#15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18 19set testprefix attach420 21ifcapable !attach {22  finish_test23  return24}25 26puts "Testing with SQLITE_MAX_ATTACHED=$SQLITE_MAX_ATTACHED"27 28set files {main test.db}29for {set ii 0} {$ii < $SQLITE_MAX_ATTACHED} {incr ii} {30  lappend files aux$ii "test.db$ii"31}32 33do_test 1.1 {34  sqlite3_limit db SQLITE_LIMIT_ATTACHED -135} $SQLITE_MAX_ATTACHED36 37do_test 1.2.1 {38  db close39  foreach {name f} $files { forcedelete $f }40  sqlite3 db test.db41  42  foreach {name f} $files {43    if {$name == "main"} continue44    execsql "ATTACH '$f' AS $name"45  }46 47  db eval {PRAGMA database_list} {48    lappend L $name [file tail $file]49  }50  set L51} $files52 53do_catchsql_test 1.2.2 {54  ATTACH 'x.db' AS next;55} [list 1 "too many attached databases - max $SQLITE_MAX_ATTACHED"]56 57do_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 66do_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 L72} $files73 74set L [list]75set S ""76foreach {name f} $files {77  if {[permutation] == "journaltest"} {78    set mode delete79  } else {80    set mode wal81  }82  ifcapable !wal { set mode delete }83  lappend L $mode84  append S "85    PRAGMA $name.journal_mode = WAL;86    UPDATE $name.tbl SET x = '$name';87  "88}89do_execsql_test 1.5 $S $L90 91do_test 1.6 {92  set L [list]93  foreach {name f} $files {94    lappend L [execsql "SELECT x FROM $name.tbl"] $f95  }96  set L97} $files98 99do_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 107do_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 L113} $files114 115db close116foreach {name f} $files { forcedelete $f }117 118#-------------------------------------------------------------------------119reset_db120do_execsql_test 2.0 {121  ATTACH DATABASE '' AS aux;122  CREATE TABLE IF NOT EXISTS aux.t1(a, b);123  CREATE TEMPORARY TRIGGER tr1 DELETE ON t1 BEGIN 124    DELETE FROM t1; 125  END;126  CREATE TABLE temp.t1(a, b);127}128 129do_execsql_test 2.1 {130  DETACH DATABASE aux;131}132 133do_execsql_test 2.2 {134  DROP TRIGGER tr1;135}136 137finish_test138