1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

First cut at implementing the new sqlite3_trace_v2() interface.

FossilOrigin-Name: cb0062feb018f52689938a58cb76886d431c33f0
This commit is contained in:
drh
2016-07-13 22:55:01 +00:00
parent ed916ba025
commit 3d2a529df6
9 changed files with 98 additions and 31 deletions

View File

@@ -1383,6 +1383,10 @@ case OP_ResultRow: {
}
if( db->mallocFailed ) goto no_mem;
if( db->mTrace & SQLITE_TRACE_ROW ){
db->xTrace(SQLITE_TRACE_ROW, db->pTraceArg, p, 0);
}
/* Return SQLITE_ROW
*/
p->pc = (int)(pOp - aOp) + 1;
@@ -6781,13 +6785,27 @@ case OP_Init: { /* jump */
char *z;
#ifndef SQLITE_OMIT_TRACE
if( db->xTrace
if( (db->mTrace & (SQLITE_TRACE_SQL|SQLITE_TRACE_STMT|SQLITE_TRACE_LEGACY))!=0
&& !p->doingRerun
&& (zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql))!=0
){
z = sqlite3VdbeExpandSql(p, zTrace);
db->xTrace(db->pTraceArg, z);
sqlite3DbFree(db, z);
if( db->mTrace & (SQLITE_TRACE_SQL|SQLITE_TRACE_LEGACY) ){
z = sqlite3VdbeExpandSql(p, zTrace);
#ifndef SQLITE_OMIT_DEPRECATED
if( SQLITE_TRACE_LEGACY ){
void (*x)(void*,const char*);
x = (void(*)(void*,const char*))db->xTrace;
x(db->pTraceArg, z);
}else
#endif
{
db->xTrace(SQLITE_TRACE_SQL,db->pTraceArg,z,0);
}
sqlite3DbFree(db, z);
}
if( db->mTrace & SQLITE_TRACE_STMT ){
(void)db->xTrace(SQLITE_TRACE_STMT,db->pTraceArg,p,0);
}
}
#ifdef SQLITE_USE_FCNTL_TRACE
zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql);