From: drh Date: Sat, 12 May 2007 15:00:14 +0000 (+0000) Subject: Make REINDEX robust in the face of malloc() errors. (CVS 3990) X-Git-Tag: version-3.4.0~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84f31128b2d09479663df3597f83251cba59ab39;p=thirdparty%2Fsqlite.git Make REINDEX robust in the face of malloc() errors. (CVS 3990) FossilOrigin-Name: dbe417745d3d4ed875715ad7083d7345d1b6a56f --- diff --git a/manifest b/manifest index 04150e8fd3..b2d0924d9d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\sthe\sANALYZE\scommand\srobust\sin\sthe\sface\sof\smalloc()\sfailures.\s(CVS\s3989) -D 2007-05-12T12:08:51 +C Make\sREINDEX\srobust\sin\sthe\sface\sof\smalloc()\serrors.\s(CVS\s3990) +D 2007-05-12T15:00:15 F Makefile.in 87b200ad9970907f76df734d29dff3d294c10935 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -64,7 +64,7 @@ F src/auth.c 902f4722661c796b97f007d9606bd7529c02597f F src/btree.c 0c2f9b06c90d7c59925c03153c9d47fd739c8ca5 F src/btree.h 1d527bf61ed176f980c34999d5793a0fd45dcf8c F src/btreeInt.h cb3c0e9eb842d06079a62cdf3492c90c5db7ba75 -F src/build.c 5789303291d40a1d37bfede83c1c769be22c88ab +F src/build.c 8e744caf66d4411143985863108736887096d634 F src/callback.c 9c12535669a638f90a67e10440b99c7b93c0fbf4 F src/complete.c 7d1a44be8f37de125fcafd3d3a018690b3799675 F src/date.c 6049db7d5a8fdf2c677ff7d58fa31d4f6593c988 @@ -296,7 +296,7 @@ F test/malloc6.test 025ae0b78542e0ddd000d23f79d93e9be9ba0f15 F test/malloc7.test 1cf52834509eac7ebeb92105dacd4669f9ca9869 F test/malloc8.test e4054ca2a87ab1d42255bec009b177ba20b5a487 F test/malloc9.test 8381041fd89c31fba60c8a1a1c776bb022108572 -F test/mallocA.test d8b8de87bf2e605e6d4507f96b87fa1d891693e2 +F test/mallocA.test 525674e6e0775a9bf85a33f1da1c6bbddc712c30 F test/manydb.test 8de36b8d33aab5ef295b11d9e95310aeded31af8 F test/memdb.test a67bda4ff90a38f2b19f6c7f95aa7289e051d893 F test/memleak.test d2d2a1ff7105d32dc3fdf691458cf6cba58c7217 @@ -490,7 +490,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P 260338c4b2b18c9f4da8bc7fe3eda306dcaa4e38 -R f6d6bb84867a23616a67a2ab24e70c0a +P c08658e1f8598941ebddddb98942b98cfcb86e7a +R 72a1de25bc540615c732aa41aeba85b0 U drh -Z 29e801396d63998d48f02963b7838607 +Z 5ad3bb426ed54207061f91dbb90ceab1 diff --git a/manifest.uuid b/manifest.uuid index abd9bcc1ef..288f9db600 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c08658e1f8598941ebddddb98942b98cfcb86e7a \ No newline at end of file +dbe417745d3d4ed875715ad7083d7345d1b6a56f \ No newline at end of file diff --git a/src/build.c b/src/build.c index a96a8faf2e..4d4a30e803 100644 --- a/src/build.c +++ b/src/build.c @@ -22,7 +22,7 @@ ** 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 @@ -3306,6 +3306,7 @@ void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){ 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 ){ diff --git a/test/mallocA.test b/test/mallocA.test index 507b90727e..be2b816610 100644 --- a/test/mallocA.test +++ b/test/mallocA.test @@ -10,7 +10,7 @@ #*********************************************************************** # 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 @@ -118,7 +118,7 @@ proc do_malloc_test {tn args} { # 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); @@ -134,6 +134,18 @@ 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 {