xref: /sqlite-3.40.0/test/attachmalloc.test (revision 9c5e1e40)
185c23c61Sdrh# 2005 September 19
285c23c61Sdrh#
385c23c61Sdrh# The author disclaims copyright to this source code.  In place of
485c23c61Sdrh# a legal notice, here is a blessing:
585c23c61Sdrh#
685c23c61Sdrh#    May you do good and not evil.
785c23c61Sdrh#    May you find forgiveness for yourself and forgive others.
885c23c61Sdrh#    May you share freely, never taking more than you give.
985c23c61Sdrh#
1085c23c61Sdrh#*************************************************************************
1185c23c61Sdrh# This file implements regression tests for SQLite library.  The
1285c23c61Sdrh# focus of this script is testing the ATTACH statement and
1385c23c61Sdrh# specifically out-of-memory conditions within that command.
1485c23c61Sdrh#
15d207d808Sdanielk1977# $Id: attachmalloc.test,v 1.10 2008/10/22 10:45:38 danielk1977 Exp $
1685c23c61Sdrh#
1785c23c61Sdrh
1885c23c61Sdrhset testdir [file dirname $argv0]
1985c23c61Sdrhsource $testdir/tester.tcl
2085c23c61Sdrh
21253c6ee1Sdanifcapable !attach {
22da57895fSdrh  finish_test
23da57895fSdrh  return
24da57895fSdrh}
25da57895fSdrh
26222a757dSdanielk1977source $testdir/malloc_common.tcl
2785c23c61Sdrh
2885c23c61Sdrhdo_malloc_test attachmalloc-1 -tclprep {
29f922d715Sshaneh  catch { db close }
3085c23c61Sdrh  for {set i 2} {$i<=4} {incr i} {
31f922d715Sshaneh    catch { db$i close }
32fda06befSmistachkin    forcedelete test$i.db
33fda06befSmistachkin    forcedelete test$i.db-journal
3485c23c61Sdrh  }
3585c23c61Sdrh} -tclbody {
3685c23c61Sdrh  if {[catch {sqlite3 db test.db}]} {
3785c23c61Sdrh    error "out of memory"
3885c23c61Sdrh  }
39e9d1c720Sdrh  sqlite3_db_config_lookaside db 0 0 0
40ae72d982Sdanielk1977  sqlite3_extended_result_codes db 1
4185c23c61Sdrh} -sqlbody {
4285c23c61Sdrh  ATTACH 'test2.db' AS two;
4385c23c61Sdrh  CREATE TABLE two.t1(x);
4485c23c61Sdrh  ATTACH 'test3.db' AS three;
4585c23c61Sdrh  CREATE TABLE three.t1(x);
4685c23c61Sdrh  ATTACH 'test4.db' AS four;
4785c23c61Sdrh  CREATE TABLE four.t1(x);
4885c23c61Sdrh}
4985c23c61Sdrh
50d207d808Sdanielk1977do_malloc_test attachmalloc-2 -tclprep {
51fda06befSmistachkin  forcedelete test2.db
52fda06befSmistachkin  forcedelete test2.db-journal
53d207d808Sdanielk1977  sqlite3 db2 test2.db
54d207d808Sdanielk1977  db2 eval {
55d207d808Sdanielk1977    CREATE TABLE t1(a, b, c);
56d207d808Sdanielk1977    CREATE INDEX i1 ON t1(a, b);
57d207d808Sdanielk1977  }
58d207d808Sdanielk1977  db2 close
59d207d808Sdanielk1977} -sqlbody {
60d207d808Sdanielk1977  CREATE TABLE t1(d, e, f);
61d207d808Sdanielk1977  ATTACH 'test2.db' AS db1;
62d207d808Sdanielk1977}
63d207d808Sdanielk1977
64*9c5e1e40Sdrhifcapable shared_cache {
6539547b41Sdan  set enable_shared_cache [sqlite3_enable_shared_cache 1]
66f922d715Sshaneh  sqlite3 dbaux test3.db
6739547b41Sdan  dbaux eval {SELECT * FROM sqlite_master}
6839547b41Sdan  do_malloc_test attachmalloc-3 -sqlbody {
6939547b41Sdan    SELECT * FROM sqlite_master;
70f922d715Sshaneh    ATTACH 'test3.db' AS three;
7139547b41Sdan  } -cleanup {
72f922d715Sshaneh    db eval { DETACH three }
7339547b41Sdan  }
7439547b41Sdan  dbaux close
7539547b41Sdan  sqlite3_enable_shared_cache $enable_shared_cache
76*9c5e1e40Sdrh}
7739547b41Sdan
7885c23c61Sdrhfinish_test
79