diff options
author | drh <drh@noemail.net> | 2010-05-05 20:00:25 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2010-05-05 20:00:25 +0000 |
commit | 5def0843f1075f85494b63ed326c7061dd5420a8 (patch) | |
tree | 8981f28de1016fa4fe20a47825745b60a9c701e8 /src/tclsqlite.c | |
parent | ccd13d1f80b3036d63d78c3d8b8bf70a70f200ff (diff) | |
download | sqlite-5def0843f1075f85494b63ed326c7061dd5420a8.tar.gz sqlite-5def0843f1075f85494b63ed326c7061dd5420a8.zip |
Change the behavior of the sqlite3_wal_hook() callback. It should now return
SQLITE_OK or an error code and the error code is propagated back up the
stack. If a checkpoint is desired, the callback should invoke
sqlite3_wal_callback() itself.
FossilOrigin-Name: 1b14195e05fe5551992a39246ec3bcf6a33bbfac
Diffstat (limited to 'src/tclsqlite.c')
-rw-r--r-- | src/tclsqlite.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/tclsqlite.c b/src/tclsqlite.c index d9d6a7d8a..d8d0fd2b9 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -123,7 +123,7 @@ struct SqliteDb { SqlFunc *pFunc; /* List of SQL functions */ Tcl_Obj *pUpdateHook; /* Update hook script (if any) */ Tcl_Obj *pRollbackHook; /* Rollback hook script (if any) */ - Tcl_Obj *pLogHook; /* WAL hook script (if any) */ + Tcl_Obj *pWalHook; /* WAL hook script (if any) */ Tcl_Obj *pUnlockNotify; /* Unlock notify script (if any) */ SqlCollate *pCollate; /* List of SQL collation functions */ int rc; /* Return code of most recent sqlite3_exec() */ @@ -486,8 +486,8 @@ static void DbDeleteCmd(void *db){ if( pDb->pRollbackHook ){ Tcl_DecrRefCount(pDb->pRollbackHook); } - if( pDb->pLogHook ){ - Tcl_DecrRefCount(pDb->pLogHook); + if( pDb->pWalHook ){ + Tcl_DecrRefCount(pDb->pWalHook); } if( pDb->pCollateNeeded ){ Tcl_DecrRefCount(pDb->pCollateNeeded); @@ -593,19 +593,22 @@ static void DbRollbackHandler(void *clientData){ } } -static int DbLogHandler( +/* +** This procedure handles wal_hook callbacks. +*/ +static int DbWalHandler( void *clientData, sqlite3 *db, const char *zDb, int nEntry ){ - int ret = 0; + int ret = SQLITE_OK; Tcl_Obj *p; SqliteDb *pDb = (SqliteDb*)clientData; Tcl_Interp *interp = pDb->interp; - assert(pDb->pLogHook); + assert(pDb->pWalHook); - p = Tcl_DuplicateObj(pDb->pLogHook); + p = Tcl_DuplicateObj(pDb->pWalHook); Tcl_IncrRefCount(p); Tcl_ListObjAppendElement(interp, p, Tcl_NewStringObj(zDb, -1)); Tcl_ListObjAppendElement(interp, p, Tcl_NewIntObj(nEntry)); @@ -2775,7 +2778,7 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){ if( choice==DB_UPDATE_HOOK ){ ppHook = &pDb->pUpdateHook; }else if( choice==DB_WAL_HOOK ){ - ppHook = &pDb->pLogHook; + ppHook = &pDb->pWalHook; }else{ ppHook = &pDb->pRollbackHook; } @@ -2801,7 +2804,7 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){ sqlite3_update_hook(pDb->db, (pDb->pUpdateHook?DbUpdateHandler:0), pDb); sqlite3_rollback_hook(pDb->db,(pDb->pRollbackHook?DbRollbackHandler:0),pDb); - sqlite3_wal_hook(pDb->db,(pDb->pLogHook?DbLogHandler:0),pDb); + sqlite3_wal_hook(pDb->db,(pDb->pWalHook?DbWalHandler:0),pDb); break; } |