From 7bb481fda9ecb134804b49c2ce77ca28f7eea583 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 30 Mar 2012 20:42:12 -0400 Subject: Imported Upstream version 2.0.3 --- test/mallocI.test | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 test/mallocI.test (limited to 'test/mallocI.test') diff --git a/test/mallocI.test b/test/mallocI.test new file mode 100644 index 0000000..1229455 --- /dev/null +++ b/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 -- cgit v1.2.3