aboutsummaryrefslogtreecommitdiff
path: root/ext/session/sqlite3session.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2023-10-07 17:29:10 +0000
committerdan <Dan Kennedy>2023-10-07 17:29:10 +0000
commit3b381b4afccd90e1c2cdd5cd5ea3ba9f15ba358b (patch)
tree74f0aa1c00c3f23c6f3d9ef7a9d8862a33138232 /ext/session/sqlite3session.c
parent4bdcfc6666a99a9710cb94541afadf49e84bf2bc (diff)
downloadsqlite-3b381b4afccd90e1c2cdd5cd5ea3ba9f15ba358b.tar.gz
sqlite-3b381b4afccd90e1c2cdd5cd5ea3ba9f15ba358b.zip
Fix a problem with sqlite3changegroup_schema() and patchsets.
FossilOrigin-Name: c4ab4200dc2538e1132d87d70fd309b26b0da8a918fede1cb09b567ea40ec889
Diffstat (limited to 'ext/session/sqlite3session.c')
-rw-r--r--ext/session/sqlite3session.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c
index 80783805c..7ae407154 100644
--- a/ext/session/sqlite3session.c
+++ b/ext/session/sqlite3session.c
@@ -5684,11 +5684,11 @@ static int sessionChangesetExtendRecord(
break;
}
}
- }else{
+ }else if( op==SQLITE_UPDATE ){
/* Append missing "undefined" entries to the old.* record. And, if this
** is an UPDATE, to the new.* record as well. */
int iOff = 0;
- if( op==SQLITE_UPDATE ){
+ if( pGrp->bPatch==0 ){
for(ii=0; ii<nCol; ii++){
iOff += sessionSerialLen(&aRec[iOff]);
}
@@ -5702,6 +5702,9 @@ static int sessionChangesetExtendRecord(
for(ii=0; ii<(pTab->nCol-nCol); ii++){
sessionAppendByte(pOut, 0x00, &rc);
}
+ }else{
+ assert( op==SQLITE_DELETE && pGrp->bPatch );
+ sessionAppendBlob(pOut, aRec, nRec, &rc);
}
return rc;