-
-
Save brunocalza/7fccffae20878694cc4cf8237af61de0 to your computer and use it in GitHub Desktop.
SQLIte Update Hook
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Index: src/main.c | |
================================================================== | |
--- src/main.c | |
+++ src/main.c | |
@@ -2240,11 +2240,11 @@ | |
** Register a callback to be invoked each time a row is updated, | |
** inserted or deleted using this database connection. | |
*/ | |
void *sqlite3_update_hook( | |
sqlite3 *db, /* Attach the hook to this database */ | |
- void (*xCallback)(void*,int,char const *,char const *,sqlite_int64), | |
+ void (*xCallback)(void*,int,char const *,char const *,sqlite_int64, char*, int), | |
void *pArg /* Argument to the function */ | |
){ | |
void *pRet; | |
#ifdef SQLITE_ENABLE_API_ARMOR | |
Index: src/sqlite.h.in | |
================================================================== | |
--- src/sqlite.h.in | |
+++ src/sqlite.h.in | |
@@ -6575,11 +6575,11 @@ | |
** See also the [sqlite3_commit_hook()], [sqlite3_rollback_hook()], | |
** and [sqlite3_preupdate_hook()] interfaces. | |
*/ | |
void *sqlite3_update_hook( | |
sqlite3*, | |
- void(*)(void *,int ,char const *,char const *,sqlite3_int64), | |
+ void(*)(void *,int ,char const *,char const *,sqlite3_int64, char *, int), | |
void* | |
); | |
/* | |
** CAPI3REF: Enable Or Disable Shared Pager Cache | |
Index: src/sqlite3ext.h | |
================================================================== | |
--- src/sqlite3ext.h | |
+++ src/sqlite3ext.h | |
@@ -141,11 +141,11 @@ | |
void (*thread_cleanup)(void); | |
int (*total_changes)(sqlite3*); | |
void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*); | |
int (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*); | |
void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*, | |
- sqlite_int64),void*); | |
+ sqlite_int64, char*, int),void*); | |
void * (*user_data)(sqlite3_context*); | |
const void * (*value_blob)(sqlite3_value*); | |
int (*value_bytes)(sqlite3_value*); | |
int (*value_bytes16)(sqlite3_value*); | |
double (*value_double)(sqlite3_value*); | |
Index: src/sqliteInt.h | |
================================================================== | |
--- src/sqliteInt.h | |
+++ src/sqliteInt.h | |
@@ -1598,11 +1598,11 @@ | |
void *pCommitArg; /* Argument to xCommitCallback() */ | |
int (*xCommitCallback)(void*); /* Invoked at every commit. */ | |
void *pRollbackArg; /* Argument to xRollbackCallback() */ | |
void (*xRollbackCallback)(void*); /* Invoked at every commit. */ | |
void *pUpdateArg; | |
- void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64); | |
+ void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64, char*, int); | |
void *pAutovacPagesArg; /* Client argument to autovac_pages */ | |
void (*xAutovacDestr)(void*); /* Destructor for pAutovacPAgesArg */ | |
unsigned int (*xAutovacPages)(void*,const char*,u32,u32,u32); | |
Parse *pParse; /* Current parse */ | |
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK | |
Index: src/tclsqlite.c | |
================================================================== | |
--- src/tclsqlite.c | |
+++ src/tclsqlite.c | |
@@ -1908,11 +1908,11 @@ | |
} | |
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK | |
sqlite3_preupdate_hook(db, (pDb->pPreUpdateHook?DbPreUpdateHandler:0), pDb); | |
#endif | |
- sqlite3_update_hook(db, (pDb->pUpdateHook?DbUpdateHandler:0), pDb); | |
+ //sqlite3_update_hook(db, (pDb->pUpdateHook?DbUpdateHandler:0), pDb); | |
sqlite3_rollback_hook(db, (pDb->pRollbackHook?DbRollbackHandler:0), pDb); | |
sqlite3_wal_hook(db, (pDb->pWalHook?DbWalHandler:0), pDb); | |
} | |
/* | |
Index: src/vdbe.c | |
================================================================== | |
--- src/vdbe.c | |
+++ src/vdbe.c | |
@@ -5477,11 +5477,11 @@ | |
if( pTab ){ | |
assert( db->xUpdateCallback!=0 ); | |
assert( pTab->aCol!=0 ); | |
db->xUpdateCallback(db->pUpdateArg, | |
(pOp->p5 & OPFLAG_ISUPDATE) ? SQLITE_UPDATE : SQLITE_INSERT, | |
- zDb, pTab->zName, x.nKey); | |
+ zDb, pTab->zName, x.nKey, pData->z, pData->n); | |
} | |
break; | |
} | |
/* Opcode: RowCell P1 P2 P3 * * | |
@@ -5637,11 +5637,11 @@ | |
/* Invoke the update-hook if required. */ | |
if( opflags & OPFLAG_NCHANGE ){ | |
p->nChange++; | |
if( db->xUpdateCallback && ALWAYS(pTab!=0) && HasRowid(pTab) ){ | |
db->xUpdateCallback(db->pUpdateArg, SQLITE_DELETE, zDb, pTab->zName, | |
- pC->movetoTarget); | |
+ pC->movetoTarget, ((char*) 0), 0); | |
assert( pC->iDb>=0 ); | |
} | |
} | |
break; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment