diff options
author | drh <drh@noemail.net> | 2014-08-19 20:27:40 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2014-08-19 20:27:40 +0000 |
commit | 2c7946a485b6e19072506e40203af4cc10b0848d (patch) | |
tree | 5bab5952949c545611ba9c99c840460e45dd7585 /src | |
parent | 4b2590e44b422eb0445220624c2438d74d17ed06 (diff) | |
download | sqlite-2c7946a485b6e19072506e40203af4cc10b0848d.tar.gz sqlite-2c7946a485b6e19072506e40203af4cc10b0848d.zip |
Make sure the sqlite3_trace() callback is invoked, even if the prepared
statement was marked "expired" before it ever entered sqlite3_step().
Ticket [11d5aa455e0d98f3c1e6a08].
FossilOrigin-Name: 0d4d3df4bc5e75ce1543b5539a1e9e279d2a062f
Diffstat (limited to 'src')
-rw-r--r-- | src/vdbeapi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/vdbeapi.c b/src/vdbeapi.c index 5e5bb8136..568f67296 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -513,10 +513,12 @@ int sqlite3_step(sqlite3_stmt *pStmt){ sqlite3_mutex_enter(db->mutex); v->doingRerun = 0; while( (rc = sqlite3Step(v))==SQLITE_SCHEMA - && cnt++ < SQLITE_MAX_SCHEMA_RETRY - && (rc2 = rc = sqlite3Reprepare(v))==SQLITE_OK ){ + && cnt++ < SQLITE_MAX_SCHEMA_RETRY ){ + int savedPc = v->pc; + rc2 = rc = sqlite3Reprepare(v); + if( rc!=SQLITE_OK) break; sqlite3_reset(pStmt); - v->doingRerun = 1; + v->doingRerun = savedPc>=0; assert( v->expired==0 ); } if( rc2!=SQLITE_OK ){ |