diff options
author | dan <Dan Kennedy> | 2023-05-02 20:34:15 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2023-05-02 20:34:15 +0000 |
commit | 9cf09b56728cb32b62b1098cf082895d72fabc84 (patch) | |
tree | fd744a2515e6a49900d406b4a981f0456e2fe6f2 /ext/session/sqlite3session.c | |
parent | 8594f02c5d9ba5385f0230267002b7b38bac3350 (diff) | |
download | sqlite-9cf09b56728cb32b62b1098cf082895d72fabc84.tar.gz sqlite-9cf09b56728cb32b62b1098cf082895d72fabc84.zip |
Fix a problem with the sqlite3changeset_size() API and rowid tables.
FossilOrigin-Name: 92ade220dcf5c1b76a5db605b1467a01051271957cd26f790755904fd82772eb
Diffstat (limited to 'ext/session/sqlite3session.c')
-rw-r--r-- | ext/session/sqlite3session.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c index c74c6b457..679408849 100644 --- a/ext/session/sqlite3session.c +++ b/ext/session/sqlite3session.c @@ -1249,15 +1249,15 @@ static int sessionUpdateMaxSize( int ii; u8 *pCsr = pC->aRecord; if( pTab->bRowid ){ - nNew += 9; + nNew += 9 + 1; pCsr += 9; } - for(ii=0; ii<(pTab->nCol-pTab->bRowid); ii++){ + for(ii=pTab->bRowid; ii<pTab->nCol; ii++){ int bChanged = 1; int nOld = 0; int eType; sqlite3_value *p = 0; - pSession->hook.xNew(pSession->hook.pCtx, ii, &p); + pSession->hook.xNew(pSession->hook.pCtx, ii-pTab->bRowid, &p); if( p==0 ){ return SQLITE_NOMEM; } @@ -2405,7 +2405,7 @@ static int sessionAppendUpdate( /* If at least one field has been modified, this is not a no-op. */ if( bChanged ) bNoop = 0; - /* Add a field to the old.* record. This is omitted if this modules is + /* Add a field to the old.* record. This is omitted if this module is ** currently generating a patchset. */ if( bPatchset==0 ){ if( bChanged || abPK[i] ){ @@ -2847,7 +2847,7 @@ int sqlite3session_changeset( if( pnChangeset==0 || ppChangeset==0 ) return SQLITE_MISUSE; rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset, ppChangeset); - assert( 1 || rc || pnChangeset==0 + assert( rc || pnChangeset==0 || pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize ); return rc; |