| Index: third_party/sqlite/sqlite-src-3080704/test/mallocI.test | 
| diff --git a/third_party/sqlite/sqlite-src-3080704/test/mallocI.test b/third_party/sqlite/sqlite-src-3080704/test/mallocI.test | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..122945550516863d9fde3e7522944fca44f06ed3 | 
| --- /dev/null | 
| +++ b/third_party/sqlite/sqlite-src-3080704/test/mallocI.test | 
| @@ -0,0 +1,64 @@ | 
| +# 2008 August 01 | 
| +# | 
| +# The author disclaims copyright to this source code.  In place of | 
| +# a legal notice, here is a blessing: | 
| +# | 
| +#    May you do good and not evil. | 
| +#    May you find forgiveness for yourself and forgive others. | 
| +#    May you share freely, never taking more than you give. | 
| +# | 
| +#*********************************************************************** | 
| +# | 
| +# This test script checks malloc failures in various obscure operations. | 
| +# | 
| +# $Id: mallocI.test,v 1.3 2009/08/10 04:26:39 danielk1977 Exp $ | 
| + | 
| +set testdir [file dirname $argv0] | 
| +source $testdir/tester.tcl | 
| +source $testdir/malloc_common.tcl | 
| + | 
| +# Malloc failures in a view. | 
| +# | 
| +do_malloc_test mallocI-1 -sqlprep { | 
| +  CREATE TABLE t1(a,b,c,d); | 
| +  CREATE VIEW v1 AS SELECT a*b, c*d FROM t1 ORDER BY b-d; | 
| +} -sqlbody { | 
| +  SELECT * FROM v1 | 
| +} | 
| + | 
| +# Malloc failure while trying to service a pragma on a TEMP database. | 
| +# | 
| +do_malloc_test mallocI-2 -sqlbody { | 
| +  PRAGMA temp.page_size | 
| +} | 
| + | 
| +# Malloc failure while creating a table from a SELECT statement. | 
| +# | 
| +do_malloc_test mallocI-3 -sqlprep { | 
| +  CREATE TABLE t1(a,b,c); | 
| +} -sqlbody { | 
| +  CREATE TABLE t2 AS SELECT b,c FROM t1; | 
| +} | 
| + | 
| +# This tests that a malloc failure that occurs while passing the schema | 
| +# does not result in a SHARED lock being left on the database file. | 
| +# | 
| +do_malloc_test mallocI-4 -tclprep { | 
| +  sqlite3 db2 test.db | 
| +  db2 eval { | 
| +    CREATE TABLE t1(a, b, c); | 
| +    CREATE TABLE t2(a, b, c); | 
| +  } | 
| +} -sqlbody { | 
| +  SELECT * FROM t1 | 
| +} -cleanup { | 
| +  do_test mallocI-4.$::n.2 { | 
| +    # If this INSERT is possible then [db] does not hold a shared lock | 
| +    # on the database file. | 
| +    catchsql { INSERT INTO t1 VALUES(1, 2, 3) } db2 | 
| +  } {0 {}} | 
| +  catch {db2 close} | 
| +} | 
| +catch { db2 close } | 
| + | 
| +finish_test | 
|  |