xref: /sqlite-3.40.0/test/attachmalloc.test (revision 5d00d0a8)
1# 2005 September 19
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 testing the ATTACH statement and
13# specifically out-of-memory conditions within that command.
14#
15# $Id: attachmalloc.test,v 1.10 2008/10/22 10:45:38 danielk1977 Exp $
16#
17
18set testdir [file dirname $argv0]
19source $testdir/tester.tcl
20
21ifcapable !memdebug||!attach {
22  finish_test
23  return
24}
25
26source $testdir/malloc_common.tcl
27
28do_malloc_test attachmalloc-1 -tclprep {
29  db close
30  for {set i 2} {$i<=4} {incr i} {
31    file delete -force test$i.db
32    file delete -force test$i.db-journal
33  }
34} -tclbody {
35  if {[catch {sqlite3 db test.db}]} {
36    error "out of memory"
37  }
38  sqlite3_db_config_lookaside db 0 0 0
39  sqlite3_extended_result_codes db 1
40} -sqlbody {
41  ATTACH 'test2.db' AS two;
42  CREATE TABLE two.t1(x);
43  ATTACH 'test3.db' AS three;
44  CREATE TABLE three.t1(x);
45  ATTACH 'test4.db' AS four;
46  CREATE TABLE four.t1(x);
47}
48
49do_malloc_test attachmalloc-2 -tclprep {
50  file delete -force test2.db
51  file delete -force test2.db-journal
52  sqlite3 db2 test2.db
53  db2 eval {
54    CREATE TABLE t1(a, b, c);
55    CREATE INDEX i1 ON t1(a, b);
56  }
57  db2 close
58} -sqlbody {
59  CREATE TABLE t1(d, e, f);
60  ATTACH 'test2.db' AS db1;
61}
62
63finish_test
64