AryaWu/sqlite
0
1# 2008 August 012#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#12# This test script checks malloc failures in various obscure operations.13# 14# $Id: mallocI.test,v 1.3 2009/08/10 04:26:39 danielk1977 Exp $15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18source $testdir/malloc_common.tcl19 20# Malloc failures in a view.21#22do_malloc_test mallocI-1 -sqlprep {23 CREATE TABLE t1(a,b,c,d);24 CREATE VIEW v1 AS SELECT a*b, c*d FROM t1 ORDER BY b-d;25} -sqlbody {26 SELECT * FROM v127}28 29# Malloc failure while trying to service a pragma on a TEMP database.30#31do_malloc_test mallocI-2 -sqlbody {32 PRAGMA temp.page_size33}34 35# Malloc failure while creating a table from a SELECT statement.36#37do_malloc_test mallocI-3 -sqlprep {38 CREATE TABLE t1(a,b,c);39} -sqlbody {40 CREATE TABLE t2 AS SELECT b,c FROM t1;41}42 43# This tests that a malloc failure that occurs while passing the schema44# does not result in a SHARED lock being left on the database file.45#46do_malloc_test mallocI-4 -tclprep {47 sqlite3 db2 test.db48 db2 eval {49 CREATE TABLE t1(a, b, c);50 CREATE TABLE t2(a, b, c);51 }52} -sqlbody {53 SELECT * FROM t154} -cleanup {55 do_test mallocI-4.$::n.2 {56 # If this INSERT is possible then [db] does not hold a shared lock57 # on the database file.58 catchsql { INSERT INTO t1 VALUES(1, 2, 3) } db259 } {0 {}}60 catch {db2 close}61}62catch { db2 close }63 64do_faultsim_test mallocI-5 -faults oom* -prep {65 catch { db close }66 sqlite3 db test.db67 sqlite3_db_config_lookaside db 0 0 068} -body {69 db eval { Select CAST(1 AS blob) }70} -test {71 faultsim_test_result {0 1}72}73 74 75finish_test76 