aboutsummaryrefslogtreecommitdiff
path: root/ext/session/sqlite3session.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2017-05-22 18:09:00 +0000
committerdan <dan@noemail.net>2017-05-22 18:09:00 +0000
commit07d0f15e9354e668510095fd85fa83ac36dd82d2 (patch)
tree1877d313a0bed27e43f7160e8f44496187e9bf2d /ext/session/sqlite3session.c
parent453ca043a250bdfcf5d1d6971b663d1c587e482b (diff)
downloadsqlite-07d0f15e9354e668510095fd85fa83ac36dd82d2.tar.gz
sqlite-07d0f15e9354e668510095fd85fa83ac36dd82d2.zip
Fix incompatibilities between the "sqldiff --changeset" command and the
sessions module. Specifically, allow sessions to process changesets containing tables with zero operations on them and have sqldiff output the expected output for tables with multi-column primary keys. FossilOrigin-Name: 0bb23c48064cc64134697469f3f4d2d3610b9e6c7a0dc54a3c47a00bd6c2a860
Diffstat (limited to 'ext/session/sqlite3session.c')
-rw-r--r--ext/session/sqlite3session.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c
index 8dde8501a..d5cb46737 100644
--- a/ext/session/sqlite3session.c
+++ b/ext/session/sqlite3session.c
@@ -2836,11 +2836,12 @@ static int sessionChangesetNext(
p->in.iCurrent = p->in.iNext;
op = p->in.aData[p->in.iNext++];
- if( op=='T' || op=='P' ){
+ while( op=='T' || op=='P' ){
p->bPatchset = (op=='P');
if( sessionChangesetReadTblhdr(p) ) return p->rc;
if( (p->rc = sessionInputBuffer(&p->in, 2)) ) return p->rc;
p->in.iCurrent = p->in.iNext;
+ if( p->in.iNext>=p->in.nData ) return SQLITE_DONE;
op = p->in.aData[p->in.iNext++];
}