| OLD | NEW | 
 | (Empty) | 
|   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 ALTER TABLE statement and |  | 
|  13 # specifically out-of-memory conditions within that command. |  | 
|  14 # |  | 
|  15 # $Id: altermalloc.test,v 1.10 2008/10/30 17:21:13 danielk1977 Exp $ |  | 
|  16 # |  | 
|  17  |  | 
|  18 set testdir [file dirname $argv0] |  | 
|  19 source $testdir/tester.tcl |  | 
|  20  |  | 
|  21 # If SQLITE_OMIT_ALTERTABLE is defined, omit this file. |  | 
|  22 ifcapable !altertable||!memdebug { |  | 
|  23   finish_test |  | 
|  24   return |  | 
|  25 } |  | 
|  26  |  | 
|  27 source $testdir/malloc_common.tcl |  | 
|  28  |  | 
|  29 do_malloc_test altermalloc-1 -tclprep { |  | 
|  30   db close |  | 
|  31 } -tclbody { |  | 
|  32   if {[catch {sqlite3 db test.db}]} { |  | 
|  33     error "out of memory" |  | 
|  34   } |  | 
|  35   sqlite3_db_config_lookaside db 0 0 0 |  | 
|  36   sqlite3_extended_result_codes db 1 |  | 
|  37 } -sqlbody { |  | 
|  38   CREATE TABLE t1(a int); |  | 
|  39   ALTER TABLE t1 ADD COLUMN b INTEGER DEFAULT NULL; |  | 
|  40   ALTER TABLE t1 ADD COLUMN c TEXT DEFAULT 'default-text'; |  | 
|  41   ALTER TABLE t1 RENAME TO t2; |  | 
|  42   ALTER TABLE t2 ADD COLUMN d BLOB DEFAULT X'ABCD'; |  | 
|  43 } |  | 
|  44  |  | 
|  45 # Test malloc() failure on an ALTER TABLE on a virtual table. |  | 
|  46 # |  | 
|  47 ifcapable vtab { |  | 
|  48   do_malloc_test altermalloc-vtab -tclprep { |  | 
|  49     sqlite3 db2 test.db  |  | 
|  50     sqlite3_db_config_lookaside db2 0 0 0 |  | 
|  51     sqlite3_extended_result_codes db2 1 |  | 
|  52     register_echo_module [sqlite3_connection_pointer db2] |  | 
|  53     db2 eval { |  | 
|  54       CREATE TABLE t1(a, b VARCHAR, c INTEGER); |  | 
|  55       CREATE VIRTUAL TABLE t1echo USING echo(t1); |  | 
|  56     } |  | 
|  57     db2 close |  | 
|  58  |  | 
|  59     register_echo_module [sqlite3_connection_pointer db] |  | 
|  60   } -tclbody { |  | 
|  61     set rc [catch {db eval { ALTER TABLE t1echo RENAME TO t1_echo }} msg] |  | 
|  62     if {$msg eq "vtable constructor failed: t1echo"} { |  | 
|  63       set msg "out of memory" |  | 
|  64     } |  | 
|  65     if {$rc} { |  | 
|  66       error $msg |  | 
|  67     } |  | 
|  68   } |  | 
|  69 } |  | 
|  70  |  | 
|  71 finish_test |  | 
| OLD | NEW |