Index: src/build.c ================================================================== --- src/build.c +++ src/build.c @@ -20,11 +20,11 @@ ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** -** $Id: build.c,v 1.429 2007/05/08 20:59:49 drh Exp $ +** $Id: build.c,v 1.430 2007/05/12 15:00:15 drh Exp $ */ #include "sqliteInt.h" #include /* @@ -3304,10 +3304,11 @@ } } iDb = sqlite3TwoPartName(pParse, pName1, pName2, &pObjName); if( iDb<0 ) return; z = sqlite3NameFromToken(pObjName); + if( z==0 ) return; zDb = db->aDb[iDb].zName; pTab = sqlite3FindTable(db, z, zDb); if( pTab ){ reindexTable(pParse, pTab, 0); sqliteFree(z); Index: test/mallocA.test ================================================================== --- test/mallocA.test +++ test/mallocA.test @@ -8,11 +8,11 @@ # May you share freely, never taking more than you give. # #*********************************************************************** # This file contains additional out-of-memory checks (see malloc.tcl). # -# $Id: mallocA.test,v 1.1 2007/05/12 12:08:51 drh Exp $ +# $Id: mallocA.test,v 1.2 2007/05/12 15:00:15 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only run these tests if memory debugging is turned on. @@ -116,11 +116,11 @@ # Construct a test database # file delete -force test.db.bu db eval { - CREATE TABLE t1(a,b,c); + CREATE TABLE t1(a COLLATE NOCASE,b,c); INSERT INTO t1 VALUES(1,2,3); INSERT INTO t1 VALUES(1,2,4); INSERT INTO t1 VALUES(2,3,4); CREATE INDEX t1i1 ON t1(a); CREATE INDEX t1i2 ON t1(b,c); @@ -131,10 +131,22 @@ sqlite3 db test.db do_malloc_test 1 -sqlbody { ANALYZE +} +do_malloc_test 2 -sqlbody { + REINDEX; +} +do_malloc_test 3 -sqlbody { + REINDEX t1; +} +do_malloc_test 4 -sqlbody { + REINDEX main.t1; +} +do_malloc_test 5 -sqlbody { + REINDEX nocase; } # Ensure that no file descriptors were leaked. do_test malloc-99.X { catch {db close}