aboutsummaryrefslogtreecommitdiff
path: root/src/vdbeapi.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2014-08-21 16:09:36 +0000
committerdrh <drh@noemail.net>2014-08-21 16:09:36 +0000
commit2571e4eddd05dceb9c707e8356153d0836d84228 (patch)
tree323ddb8b65cd40629b860f2b64cd1fb71efd023a /src/vdbeapi.c
parent3a432b0b475fa5ae550a1ab35279c2647344138c (diff)
parentb6b4b79f344096791542265763467fc90f139c2e (diff)
downloadsqlite-2571e4eddd05dceb9c707e8356153d0836d84228.tar.gz
sqlite-2571e4eddd05dceb9c707e8356153d0836d84228.zip
Merge all recent trunk changes, especially the fix for
ticket [369d57fb8e5ccdff06f1], but also the skip-scan improvement and performance improvements in the b-tree code. FossilOrigin-Name: 0b9e2c3269695713b538561d999c68097db70f0c
Diffstat (limited to 'src/vdbeapi.c')
-rw-r--r--src/vdbeapi.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/vdbeapi.c b/src/vdbeapi.c
index 46f53afa2..0631fce87 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;
+ if( savedPc>=0 ) v->doingRerun = 1;
assert( v->expired==0 );
}
if( rc2!=SQLITE_OK ){