1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-18 10:21:03 +03:00

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

@@ -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);
}