aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c16
-rw-r--r--src/sqliteInt.h16
-rw-r--r--src/test1.c32
-rw-r--r--src/util.c16
-rw-r--r--src/vtab.c3
5 files changed, 26 insertions, 57 deletions
diff --git a/src/main.c b/src/main.c
index a37301a64..c34fbcc6c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1242,7 +1242,7 @@ static int sqlite3Close(sqlite3 *db, int forceZombie){
/* Convert the connection into a zombie and then close it.
*/
- db->magic = SQLITE_MAGIC_ZOMBIE;
+ db->eOpenState = SQLITE_STATE_ZOMBIE;
sqlite3LeaveMutexAndCloseZombie(db);
return SQLITE_OK;
}
@@ -1306,7 +1306,7 @@ void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
** or if the connection has not yet been closed by sqlite3_close_v2(),
** then just leave the mutex and return.
*/
- if( db->magic!=SQLITE_MAGIC_ZOMBIE || connectionIsBusy(db) ){
+ if( db->eOpenState!=SQLITE_STATE_ZOMBIE || connectionIsBusy(db) ){
sqlite3_mutex_leave(db->mutex);
return;
}
@@ -1392,7 +1392,7 @@ void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
sqlite3_free(db->auth.zAuthPW);
#endif
- db->magic = SQLITE_MAGIC_ERROR;
+ db->eOpenState = SQLITE_STATE_ERROR;
/* The temp-database schema is allocated differently from the other schema
** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
@@ -1402,7 +1402,7 @@ void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
*/
sqlite3DbFree(db, db->aDb[1].pSchema);
sqlite3_mutex_leave(db->mutex);
- db->magic = SQLITE_MAGIC_CLOSED;
+ db->eOpenState = SQLITE_STATE_CLOSED;
sqlite3_mutex_free(db->mutex);
assert( sqlite3LookasideUsed(db,0)==0 );
if( db->lookaside.bMalloced ){
@@ -1790,7 +1790,7 @@ int sqlite3_busy_timeout(sqlite3 *db, int ms){
*/
void sqlite3_interrupt(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
- if( !sqlite3SafetyCheckOk(db) && (db==0 || db->magic!=SQLITE_MAGIC_ZOMBIE) ){
+ if( !sqlite3SafetyCheckOk(db) && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE) ){
(void)SQLITE_MISUSE_BKPT;
return;
}
@@ -3193,7 +3193,7 @@ static int openDatabase(
sqlite3_mutex_enter(db->mutex);
db->errMask = 0xff;
db->nDb = 2;
- db->magic = SQLITE_MAGIC_BUSY;
+ db->eOpenState = SQLITE_STATE_BUSY;
db->aDb = db->aDbStatic;
db->lookaside.bDisable = 1;
db->lookaside.sz = 0;
@@ -3353,7 +3353,7 @@ static int openDatabase(
db->aDb[1].zDbSName = "temp";
db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;
- db->magic = SQLITE_MAGIC_OPEN;
+ db->eOpenState = SQLITE_STATE_OPEN;
if( db->mallocFailed ){
goto opendb_out;
}
@@ -3420,7 +3420,7 @@ opendb_out:
sqlite3_close(db);
db = 0;
}else if( rc!=SQLITE_OK ){
- db->magic = SQLITE_MAGIC_SICK;
+ db->eOpenState = SQLITE_STATE_SICK;
}
*ppDb = db;
#ifdef SQLITE_ENABLE_SQLLOG
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index eee58d00e..b2d09ff0a 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -1533,8 +1533,8 @@ struct sqlite3 {
u8 mTrace; /* zero or more SQLITE_TRACE flags */
u8 noSharedCache; /* True if no shared-cache backends */
u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
+ u8 eOpenState; /* Current condition of the connection */
int nextPagesize; /* Pagesize after VACUUM if >0 */
- u32 magic; /* Magic number for detect library misuse */
i64 nChange; /* Value returned by sqlite3_changes() */
i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
int aLimit[SQLITE_N_LIMIT]; /* Limits */
@@ -1762,16 +1762,16 @@ struct sqlite3 {
#define ConstFactorOk(P) ((P)->okConstFactor)
/*
-** Possible values for the sqlite.magic field.
+** Possible values for the sqlite.eOpenState field.
** The numbers are obtained at random and have no special meaning, other
** than being distinct from one another.
*/
-#define SQLITE_MAGIC_OPEN 0xa029a697 /* Database is open */
-#define SQLITE_MAGIC_CLOSED 0x9f3c2d33 /* Database is closed */
-#define SQLITE_MAGIC_SICK 0x4b771290 /* Error and awaiting close */
-#define SQLITE_MAGIC_BUSY 0xf03b7906 /* Database currently in use */
-#define SQLITE_MAGIC_ERROR 0xb5357930 /* An SQLITE_MISUSE error occurred */
-#define SQLITE_MAGIC_ZOMBIE 0x64cffc7f /* Close with last statement close */
+#define SQLITE_STATE_OPEN 0xa0 /* Database is open */
+#define SQLITE_STATE_CLOSED 0x9f /* Database is closed */
+#define SQLITE_STATE_SICK 0x4b /* Error and awaiting close */
+#define SQLITE_STATE_BUSY 0xf0 /* Database currently in use */
+#define SQLITE_STATE_ERROR 0xb5 /* An SQLITE_MISUSE error occurred */
+#define SQLITE_STATE_ZOMBIE 0x64 /* Close with last statement close */
/*
** Each SQL function is defined by an instance of the following
diff --git a/src/test1.c b/src/test1.c
index 7cb56d3be..ceafbe503 100644
--- a/src/test1.c
+++ b/src/test1.c
@@ -5348,37 +5348,6 @@ static int SQLITE_TCLAPI test_stmt_int(
return TCL_OK;
}
-/*
-** Usage: sqlite_set_magic DB MAGIC-NUMBER
-**
-** Set the db->magic value. This is used to test error recovery logic.
-*/
-static int SQLITE_TCLAPI sqlite_set_magic(
- void * clientData,
- Tcl_Interp *interp,
- int argc,
- char **argv
-){
- sqlite3 *db;
- if( argc!=3 ){
- Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
- " DB MAGIC", 0);
- return TCL_ERROR;
- }
- if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
- if( strcmp(argv[2], "SQLITE_MAGIC_OPEN")==0 ){
- db->magic = SQLITE_MAGIC_OPEN;
- }else if( strcmp(argv[2], "SQLITE_MAGIC_CLOSED")==0 ){
- db->magic = SQLITE_MAGIC_CLOSED;
- }else if( strcmp(argv[2], "SQLITE_MAGIC_BUSY")==0 ){
- db->magic = SQLITE_MAGIC_BUSY;
- }else if( strcmp(argv[2], "SQLITE_MAGIC_ERROR")==0 ){
- db->magic = SQLITE_MAGIC_ERROR;
- }else if( Tcl_GetInt(interp, argv[2], (int*)&db->magic) ){
- return TCL_ERROR;
- }
- return TCL_OK;
-}
/*
** Usage: sqlite3_interrupt DB
@@ -8319,7 +8288,6 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
{ "breakpoint", (Tcl_CmdProc*)test_breakpoint },
{ "sqlite3_key", (Tcl_CmdProc*)test_key },
{ "sqlite3_rekey", (Tcl_CmdProc*)test_rekey },
- { "sqlite_set_magic", (Tcl_CmdProc*)sqlite_set_magic },
{ "sqlite3_interrupt", (Tcl_CmdProc*)test_interrupt },
{ "sqlite_delete_function", (Tcl_CmdProc*)delete_function },
{ "sqlite_delete_collation", (Tcl_CmdProc*)delete_collation },
diff --git a/src/util.c b/src/util.c
index fc838023c..89e3e56f1 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1399,13 +1399,13 @@ static void logBadConnection(const char *zType){
** used as an argument to sqlite3_errmsg() or sqlite3_close().
*/
int sqlite3SafetyCheckOk(sqlite3 *db){
- u32 magic;
+ u8 eOpenState;
if( db==0 ){
logBadConnection("NULL");
return 0;
}
- magic = db->magic;
- if( magic!=SQLITE_MAGIC_OPEN ){
+ eOpenState = db->eOpenState;
+ if( eOpenState!=SQLITE_STATE_OPEN ){
if( sqlite3SafetyCheckSickOrOk(db) ){
testcase( sqlite3GlobalConfig.xLog!=0 );
logBadConnection("unopened");
@@ -1416,11 +1416,11 @@ int sqlite3SafetyCheckOk(sqlite3 *db){
}
}
int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
- u32 magic;
- magic = db->magic;
- if( magic!=SQLITE_MAGIC_SICK &&
- magic!=SQLITE_MAGIC_OPEN &&
- magic!=SQLITE_MAGIC_BUSY ){
+ u8 eOpenState;
+ eOpenState = db->eOpenState;
+ if( eOpenState!=SQLITE_STATE_SICK &&
+ eOpenState!=SQLITE_STATE_OPEN &&
+ eOpenState!=SQLITE_STATE_BUSY ){
testcase( sqlite3GlobalConfig.xLog!=0 );
logBadConnection("invalid");
return 0;
diff --git a/src/vtab.c b/src/vtab.c
index c66a15467..86e13d313 100644
--- a/src/vtab.c
+++ b/src/vtab.c
@@ -205,7 +205,8 @@ void sqlite3VtabUnlock(VTable *pVTab){
assert( db );
assert( pVTab->nRef>0 );
- assert( db->magic==SQLITE_MAGIC_OPEN || db->magic==SQLITE_MAGIC_ZOMBIE );
+ assert( db->eOpenState==SQLITE_STATE_OPEN
+ || db->eOpenState==SQLITE_STATE_ZOMBIE );
pVTab->nRef--;
if( pVTab->nRef==0 ){