-C Revised\sman\spage\sfrom\sBill\sBumgarner.\s(CVS\s2360)
-D 2005-02-24T04:51:51
+C Fix\san\sassertion\sfault\sthat\scan\soccur\swhile\sautovacuuming\sa\scorrupt\sdatabase\nfile.\s\sAdd\sthe\sSQLITE_OMIT_COMPLETE\scompile-time\sparameter.\s(CVS\s2361)
+D 2005-02-26T17:31:27
F Makefile.in 76443a83549d1539105e12d13bd0054a05ab2214
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
F src/alter.c 6dab3d91aa4bf5c24e874145a2a547070c8c1883
F src/attach.c f78f76bc6a8e5e487ca53636e21ccba2484a9a61
F src/auth.c 18c5a0befe20f3a58a41e3ddd78f372faeeefe1f
-F src/btree.c 5c6e81855deec3d1eac5ae03e4c8db6c2595421f
+F src/btree.c 2a9c2c8a9f5a2762f0c770bc9c3f69c689d79d81
F src/btree.h 2e2cc923224649337d7217df0dd32b06673ca180
F src/build.c a8792b2f866c1ccc32f4977f4ff61d787d60ddfb
F src/date.c f3d1f5cd1503dabf426a198f3ebef5afbc122a7f
F src/sqlite.h.in c85f6bad9ca7de29f505fe886646cfff7df4c55e
F src/sqliteInt.h f95cc4becd7b27293aae8f8c4ed2f6ef44830fbb
F src/table.c 25b3ff2b39b7d87e8d4a5da0713d68dfc06cbee9
-F src/tclsqlite.c 101994a2c4c0eaa69f1de9bfe4a02167f6049e7d
-F src/test1.c 8b3c7c1765920d8f313c1d74015a6a67c0cd3111
+F src/tclsqlite.c 29e56ecdb94c4066dbe6b088d12cc2404bc9597e
+F src/test1.c 99bfdba919ae278933178a52769115feb20557d9
F src/test2.c 7f0ef466706ac01414e1136b96e5d8a65cb97545
F src/test3.c 683e1e3819152ffd35da2f201e507228921148d0
F src/test4.c 7c6b9fc33dd1f3f93c7f1ee6e5e6d016afa6c1df
F src/test5.c 64f08b2a50ef371a1bd68ff206829e7b1b9997f5
-F src/tokenize.c bbeee5e30019261fe2d36330d2bf70d9d7c3eee9
+F src/tokenize.c 103cbaa932c790f540f8eceb63cd3010e117bdff
F src/trigger.c 038c8e128d4551cd016426cd11bbf5c478816481
F src/update.c b6f4668c11059f86b71581187d09197fa28ec4be
F src/utf.c bda5eb85039ef16f2d17004c1e18c96e1ab0a80c
F test/delete2.test e382b6a97787197eb8b93dd4ccd37797c3725ea3
F test/diskfull.test e2f6cfd868713ead06dc82b84a4938e868128fc0
F test/enc.test 7a03417a1051fe8bc6c7641cf4c8c3f7e0066d52
-F test/enc2.test af13bb35708413ee86d6dd95032634c5bbfb8466
+F test/enc2.test d1ab077b84f4d3099246915422b1ab6b81481e0a
F test/enc3.test f6a5f0b7b7f3a88f030d3143729b87cd5c86d837
F test/expr.test 54d9d1cc05eb731fa62daa70f2d7163f8a03c54d
F test/fkey1.test 81bb13caaa78f58d7d191d7f535529f7c91d821a
F test/lock.test a19aab9a963273fe61c1058e3d1b648d6a0a2425
F test/lock2.test 59c3dd7d9b24d1bf7ec91b2d1541c37e97939d5f
F test/lock3.test 615111293cf32aa2ed16d01c6611737651c96fb9
-F test/main.test a60a1d234b5f5784097973bd395514ca56003ef1
+F test/main.test febb69416071134dc38b9b1971c0c2e5b0ca3ff8
F test/malloc.test b7bc72bb1627e09d6003f58de9bcd6e4be839753
F test/memdb.test 1860e060be810bf0775bc57408a5b7c4954bcaea
F test/memleak.test c0af09191af44a7501ec2494fdd079ac538a256c
F test/subselect.test 3f3f7a940dc3195c3139f4d530385cb54665d614
F test/table.test a2a58cae70ef2511cbf27d40fb8f570106a2677e
F test/tableapi.test 6a66d58b37d46dc0f2b3c7d4bd2617d209399bd1
-F test/tclsqlite.test 4b26cad242ef5c634fd52e0465c723d9e0c00901
+F test/tclsqlite.test 4ac312b47632596516353948b59089b02312aed7
F test/temptable.test 63a16e3ad19adf073cfbcdf7624c92ac5236522c
F test/tester.tcl 69c0dc1accaf0ff26bff62b33e13590a4ecba17d
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl 3e522a06ad41992023c80ca29a048ae2331ca5bd
-P 4ae1a9fc2c484e59ef1e58972aa25772cede1187
-R c802c0e424f21e7076793d055c12815a
+P 5c99bea5a480edc7b15ae80be952b212e730d452
+R 9aed6907317152f4462ba568d557eca0
U drh
-Z 324630e2f2ee77b9bd66c6a7c14bc93a
+Z c94cdcca709d3e72a871ddb7b503aa8a
-5c99bea5a480edc7b15ae80be952b212e730d452
\ No newline at end of file
+bb0e7e3857a06347b08d93553ac603e737322262
\ No newline at end of file
** May you share freely, never taking more than you give.
**
*************************************************************************
-** $Id: btree.c,v 1.248 2005/02/15 16:23:02 drh Exp $
+** $Id: btree.c,v 1.249 2005/02/26 17:31:27 drh Exp $
**
** This file implements a external (disk-based) database using BTrees.
** For a detailed discussion of BTrees, refer to
rc = ptrmapGet(pBt, iDbPage, &eType, &iPtrPage);
if( rc!=SQLITE_OK ) goto autovacuum_out;
- assert( eType!=PTRMAP_ROOTPAGE );
+ if( eType==PTRMAP_ROOTPAGE ){
+ rc = SQLITE_CORRUPT;
+ goto autovacuum_out;
+ }
/* If iDbPage is free, do not swap it. */
if( eType==PTRMAP_FREEPAGE ){
return rc;
}
rc = ptrmapGet(pBt, pgnoRoot, &eType, &iPtrPage);
- assert( eType!=PTRMAP_ROOTPAGE );
- assert( eType!=PTRMAP_FREEPAGE );
- if( rc!=SQLITE_OK ){
+ if( rc!=SQLITE_OK || eType==PTRMAP_ROOTPAGE || eType==PTRMAP_FREEPAGE ){
releasePage(pRoot);
return rc;
}
+ assert( eType!=PTRMAP_ROOTPAGE );
+ assert( eType!=PTRMAP_FREEPAGE );
rc = relocatePage(pBt, pRoot, eType, iPtrPage, pgnoMove);
releasePage(pRoot);
if( rc!=SQLITE_OK ){
*************************************************************************
** A TCL Interface to SQLite
**
-** $Id: tclsqlite.c,v 1.118 2005/01/25 04:27:55 danielk1977 Exp $
+** $Id: tclsqlite.c,v 1.119 2005/02/26 17:31:27 drh Exp $
*/
#ifndef NO_TCL /* Omit this whole file if TCL is unavailable */
** built-in "info complete" command of Tcl.
*/
case DB_COMPLETE: {
+#ifndef SQLITE_OMIT_COMPLETE
Tcl_Obj *pResult;
int isComplete;
if( objc!=3 ){
isComplete = sqlite3_complete( Tcl_GetStringFromObj(objv[2], 0) );
pResult = Tcl_GetObjResult(interp);
Tcl_SetBooleanObj(pResult, isComplete);
+#endif
break;
}
** is not included in the SQLite library. It is used for automated
** testing of the SQLite library.
**
-** $Id: test1.c,v 1.130 2005/02/17 00:03:07 drh Exp $
+** $Id: test1.c,v 1.131 2005/02/26 17:31:27 drh Exp $
*/
#include "sqliteInt.h"
#include "tcl.h"
int objc,
Tcl_Obj *CONST objv[]
){
-#ifndef SQLITE_OMIT_UTF16
+#if !defined(SQLITE_OMIT_COMPLETE) && !defined(SQLITE_OMIT_UTF16)
char *zBuf;
if( objc!=2 ){
zBuf = Tcl_GetByteArrayFromObj(objv[1], 0);
Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_complete16(zBuf)));
-#endif /* SQLITE_OMIT_UTF16 */
+#endif /* SQLITE_OMIT_COMPLETE && SQLITE_OMIT_UTF16 */
return TCL_OK;
}
Tcl_SetVar2(interp, "sqlite_options", "bloblit", "1", TCL_GLOBAL_ONLY);
#endif
+#ifdef SQLITE_OMIT_COMPLETE
+ Tcl_SetVar2(interp, "sqlite_options", "complete", "0", TCL_GLOBAL_ONLY);
+#else
+ Tcl_SetVar2(interp, "sqlite_options", "complete", "1", TCL_GLOBAL_ONLY);
+#endif
+
#ifdef SQLITE_OMIT_COMPOUND_SELECT
Tcl_SetVar2(interp, "sqlite_options", "compound", "0", TCL_GLOBAL_ONLY);
#else
** individual tokens and sends those tokens one-by-one over to the
** parser for analysis.
**
-** $Id: tokenize.c,v 1.100 2005/01/31 12:42:29 danielk1977 Exp $
+** $Id: tokenize.c,v 1.101 2005/02/26 17:31:27 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
return nErr;
}
+/* The sqlite3_complete() API may be omitted (to save code space) by
+** defining the following symbol.
+*/
+#ifndef SQLITE_OMIT_COMPLETE
+
/*
** Token types used by the sqlite3_complete() routine. See the header
** comments on that procedure for additional information.
return rc;
}
#endif /* SQLITE_OMIT_UTF16 */
+#endif /* SQLITE_OMIT_COMPLETE */
# various suported unicode encodings (UTF-8, UTF-16, UTF-16le and
# UTF-16be).
#
-# $Id: enc2.test,v 1.21 2005/02/13 23:34:25 drh Exp $
+# $Id: enc2.test,v 1.22 2005/02/26 17:31:28 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
append utf16 "\x00\x00"
return $utf16
}
-do_test enc2-8.1 {
- sqlite3_complete16 [utf16 "SELECT * FROM t1;"]
-} {1}
-do_test enc2-8.2 {
- sqlite3_complete16 [utf16 "SELECT * FROM"]
-} {0}
+ifcapable {complete} {
+ do_test enc2-8.1 {
+ sqlite3_complete16 [utf16 "SELECT * FROM t1;"]
+ } {1}
+ do_test enc2-8.2 {
+ sqlite3_complete16 [utf16 "SELECT * FROM"]
+ } {0}
+}
finish_test
# This file implements regression tests for SQLite library. The
# focus of this file is exercising the code in main.c.
#
-# $Id: main.test,v 1.19 2005/01/11 17:46:42 drh Exp $
+# $Id: main.test,v 1.20 2005/02/26 17:31:28 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
+# Only do the next group of tests if the sqlite3_complete API is available
+#
+ifcapable {complete} {
+
# Tests of the sqlite_complete() function.
#
do_test main-1.1 {
db complete {hi there/***/;}
} {1}
+} ;# end ifcapable {complete}
+
# Try to open a database with a corrupt database file.
#
# interface is pretty well tested. This file contains some addition
# tests for fringe issues that the main test suite does not cover.
#
-# $Id: tclsqlite.test,v 1.37 2005/01/24 00:28:43 drh Exp $
+# $Id: tclsqlite.test,v 1.38 2005/02/26 17:31:28 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set v [catch {db commit_hook a b c} msg]
lappend v $msg
} {1 {wrong # args: should be "db commit_hook ?CALLBACK?"}}
-do_test tcl-1.13 {
- set v [catch {db complete} msg]
- lappend v $msg
-} {1 {wrong # args: should be "db complete SQL"}}
+ifcapable {complete} {
+ do_test tcl-1.13 {
+ set v [catch {db complete} msg]
+ lappend v $msg
+ } {1 {wrong # args: should be "db complete SQL"}}
+}
do_test tcl-1.14 {
set v [catch {db eval} msg]
lappend v $msg