When loading a database schema, do not clear the SQLITE_InternChanges flag. This fixes the problem illustrated by (4211). (CVS 4213)

FossilOrigin-Name: 540a7b28bc37709056cfdb13286274ec5bdd8423
This commit is contained in:
danielk1977 2007-08-13 14:41:19 +00:00
parent b403574a2d
commit 5814c1a9fc
3 changed files with 11 additions and 13 deletions

View File

@ -1,5 +1,5 @@
C Fix\sthe\stest\slabels\sin\smallocC.test.\s(CVS\s4212)
D 2007-08-13T12:58:18
C When\sloading\sa\sdatabase\sschema,\sdo\snot\sclear\sthe\sSQLITE_InternChanges\sflag.\sThis\sfixes\sthe\sproblem\sillustrated\sby\s(4211).\s(CVS\s4213)
D 2007-08-13T14:41:19
F Makefile.in 0c0e53720f658c7a551046442dd7afba0b72bfbe
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -103,7 +103,7 @@ F src/pager.c cdf561d3ae4009be902df714da4518dc3522e206
F src/pager.h 94110a5570dca30d54a883e880a3633b2e4c05ae
F src/parse.y ad2ce25665be7f7303137f774a4e3e72e0d036ff
F src/pragma.c 7914a6b9ea05f158800116dfcae11e52ab8e39c4
F src/prepare.c 609bb27860ce98ab39889fecc0998dfd8220891b
F src/prepare.c 3257b63db949aee338a16ad23e09df8d56c1c36f
F src/printf.c 9b3048d270e8bb2f8b910b491ac3aadece6cfab2
F src/random.c 6119474a6f6917f708c1dee25b9a8e519a620e88
F src/select.c 3b167744fc375bddfddcef87feb18f5171737677
@ -525,7 +525,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P be50387e658a9a73e12b07ca89ae75e871489f16
R fdaa1b644a67c60415028c6d452b9b0d
U drh
Z 9139cdcd5ab7595954bd78c2fc6145da
P 7d4cdff444b98b76a34bd85d0a43cda28e7dffe4
R 67369a53b9b79d6642304c8698e2f200
U danielk1977
Z 3331cfbcfcebf80726e0c74ecb2e7084

View File

@ -1 +1 @@
7d4cdff444b98b76a34bd85d0a43cda28e7dffe4
540a7b28bc37709056cfdb13286274ec5bdd8423

View File

@ -13,7 +13,7 @@
** interface, and routines that contribute to loading the database schema
** from disk.
**
** $Id: prepare.c,v 1.51 2007/06/24 10:14:00 danielk1977 Exp $
** $Id: prepare.c,v 1.52 2007/08/13 14:41:19 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
@ -337,7 +337,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
*/
int sqlite3Init(sqlite3 *db, char **pzErrMsg){
int i, rc;
int called_initone = 0;
int commit_internal = !(db->flags&SQLITE_InternChanges);
if( db->init.busy ) return SQLITE_OK;
rc = SQLITE_OK;
@ -348,7 +348,6 @@ int sqlite3Init(sqlite3 *db, char **pzErrMsg){
if( rc ){
sqlite3ResetInternalSchema(db, i);
}
called_initone = 1;
}
/* Once all the other databases have been initialised, load the schema
@ -361,12 +360,11 @@ int sqlite3Init(sqlite3 *db, char **pzErrMsg){
if( rc ){
sqlite3ResetInternalSchema(db, 1);
}
called_initone = 1;
}
#endif
db->init.busy = 0;
if( rc==SQLITE_OK && called_initone ){
if( rc==SQLITE_OK && commit_internal ){
sqlite3CommitInternalChanges(db);
}