CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
mallocA.test128 linesDownload Raw Back to test
1# 2007 April 302#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# This file contains additional out-of-memory checks (see malloc.tcl).12#13# $Id: mallocA.test,v 1.8 2008/02/18 22:24:58 drh Exp $14 15set testdir [file dirname $argv0]16source $testdir/tester.tcl17source $testdir/malloc_common.tcl18set testprefix mallocA19 20# Only run these tests if memory debugging is turned on.21#22if {!$MEMDEBUG} {23   puts "Skipping mallocA tests: not compiled with -DSQLITE_MEMDEBUG..."24   finish_test25   return26}27 28# Construct a test database29#30forcedelete test.db.bu31db eval {32  CREATE TABLE t1(a COLLATE NOCASE,b,c);33  INSERT INTO t1 VALUES(1,2,3);34  INSERT INTO t1 VALUES(1,2,4);35  INSERT INTO t1 VALUES(2,3,4);36  CREATE INDEX t1i1 ON t1(a);37  CREATE INDEX t1i2 ON t1(b,c);38  CREATE TABLE t2(x,y,z);39}40db close41copy_file test.db test.db.bu42 43do_malloc_test mallocA-1 -testdb test.db.bu -sqlbody {44  ANALYZE45}46do_malloc_test mallocA-1.1 -testdb test.db.bu -sqlbody {47  ANALYZE t148}49do_malloc_test mallocA-1.2 -testdb test.db.bu -sqlbody {50  ANALYZE main51}52do_malloc_test mallocA-1.3 -testdb test.db.bu -sqlbody {53  ANALYZE main.t154}55 56ifcapable reindex {57  do_malloc_test mallocA-2 -testdb test.db.bu -sqlbody {58    REINDEX;59  }60  do_malloc_test mallocA-3 -testdb test.db.bu -sqlbody {61    REINDEX t1;62  }63  do_malloc_test mallocA-4 -testdb test.db.bu -sqlbody {64    REINDEX main.t1;65  }66  do_malloc_test mallocA-5 -testdb test.db.bu -sqlbody {67    REINDEX nocase;68  }69}70 71reset_db72sqlite3_db_config_lookaside db 0 0 073do_execsql_test 6-prep {74  CREATE TABLE t1(a, b);75  CREATE INDEX i1 ON t1(a, b);76  INSERT INTO t1 VALUES('abc', 'w'); -- rowid=177  INSERT INTO t1 VALUES('abc', 'x'); -- rowid=278  INSERT INTO t1 VALUES('abc', 'y'); -- rowid=379  INSERT INTO t1 VALUES('abc', 'z'); -- rowid=480 81  INSERT INTO t1 VALUES('def', 'w'); -- rowid=582  INSERT INTO t1 VALUES('def', 'x'); -- rowid=683  INSERT INTO t1 VALUES('def', 'y'); -- rowid=784  INSERT INTO t1 VALUES('def', 'z'); -- rowid=885 86  ANALYZE;87}88 89do_faultsim_test 6.1 -faults oom* -body {90  execsql { SELECT rowid FROM t1 WHERE a='abc' AND b='x' }91} -test {92  faultsim_test_result [list 0 2]93}94do_faultsim_test 6.2 -faults oom* -body {95  execsql { SELECT rowid FROM t1 WHERE a='abc' AND b<'y' }96} -test {97  faultsim_test_result [list 0 {1 2}]98}99 100do_execsql_test 7.0 {101  PRAGMA cache_size = 5;102}103do_faultsim_test 7 -faults oom-trans* -prep {104} -body {105  execsql {106    WITH r(x,y) AS (107      SELECT 1, randomblob(100)108      UNION ALL109      SELECT x+1, randomblob(100) FROM r110      LIMIT 1000111    )112    SELECT count(x), length(y) FROM r GROUP BY (x%5)113  }114} -test {115  set res [list 200 100 200 100 200 100 200 100 200 100]116  faultsim_test_result [list 0 $res]117}118 119 120# Ensure that no file descriptors were leaked.121do_test malloc-99.X {122  catch {db close}123  set sqlite_open_file_count124} {0}125 126forcedelete test.db.bu127finish_test128