aboutsummaryrefslogtreecommitdiff
path: root/ext/session/sqlite3session.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2023-05-02 20:34:15 +0000
committerdan <Dan Kennedy>2023-05-02 20:34:15 +0000
commit9cf09b56728cb32b62b1098cf082895d72fabc84 (patch)
treefd744a2515e6a49900d406b4a981f0456e2fe6f2 /ext/session/sqlite3session.c
parent8594f02c5d9ba5385f0230267002b7b38bac3350 (diff)
downloadsqlite-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.c10
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;