Make REINDEX robust in the face of malloc() errors. (CVS 3990)

FossilOrigin-Name: dbe417745d3d4ed875715ad7083d7345d1b6a56f
This commit is contained in:
drh 2007-05-12 15:00:14 +00:00
parent cf1be45fe2
commit 84f31128b2
4 changed files with 24 additions and 11 deletions

View File

@ -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

View File

@ -1 +1 @@
c08658e1f8598941ebddddb98942b98cfcb86e7a
dbe417745d3d4ed875715ad7083d7345d1b6a56f

View File

@ -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 <ctype.h>
@ -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 ){

View File

@ -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 {