mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix a problem with the sqlite3changeset_size() API and rowid tables.
FossilOrigin-Name: 92ade220dcf5c1b76a5db605b1467a01051271957cd26f790755904fd82772eb
This commit is contained in:
@ -1249,15 +1249,15 @@ static int sessionUpdateMaxSize(
|
|||||||
int ii;
|
int ii;
|
||||||
u8 *pCsr = pC->aRecord;
|
u8 *pCsr = pC->aRecord;
|
||||||
if( pTab->bRowid ){
|
if( pTab->bRowid ){
|
||||||
nNew += 9;
|
nNew += 9 + 1;
|
||||||
pCsr += 9;
|
pCsr += 9;
|
||||||
}
|
}
|
||||||
for(ii=0; ii<(pTab->nCol-pTab->bRowid); ii++){
|
for(ii=pTab->bRowid; ii<pTab->nCol; ii++){
|
||||||
int bChanged = 1;
|
int bChanged = 1;
|
||||||
int nOld = 0;
|
int nOld = 0;
|
||||||
int eType;
|
int eType;
|
||||||
sqlite3_value *p = 0;
|
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 ){
|
if( p==0 ){
|
||||||
return SQLITE_NOMEM;
|
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 at least one field has been modified, this is not a no-op. */
|
||||||
if( bChanged ) bNoop = 0;
|
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. */
|
** currently generating a patchset. */
|
||||||
if( bPatchset==0 ){
|
if( bPatchset==0 ){
|
||||||
if( bChanged || abPK[i] ){
|
if( bChanged || abPK[i] ){
|
||||||
@ -2847,7 +2847,7 @@ int sqlite3session_changeset(
|
|||||||
|
|
||||||
if( pnChangeset==0 || ppChangeset==0 ) return SQLITE_MISUSE;
|
if( pnChangeset==0 || ppChangeset==0 ) return SQLITE_MISUSE;
|
||||||
rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset, ppChangeset);
|
rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset, ppChangeset);
|
||||||
assert( 1 || rc || pnChangeset==0
|
assert( rc || pnChangeset==0
|
||||||
|| pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize
|
|| pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize
|
||||||
);
|
);
|
||||||
return rc;
|
return rc;
|
||||||
|
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
|||||||
C Cure\sCLI\shang\son\s.import\swith\shigh-ASCII\scolumn\sseparator.
|
C Fix\sa\sproblem\swith\sthe\ssqlite3changeset_size()\sAPI\sand\srowid\stables.
|
||||||
D 2023-05-02T18:03:25.907
|
D 2023-05-02T20:34:15.093
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -472,7 +472,7 @@ F ext/session/sessionrowid.test 6323ba831721205fd729929745038fd54e9d128c66c654b8
|
|||||||
F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795
|
F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795
|
||||||
F ext/session/sessionstat1.test b039e38e2ba83767b464baf39b297cc0b1cc6f3292255cb467ea7e12d0d0280c
|
F ext/session/sessionstat1.test b039e38e2ba83767b464baf39b297cc0b1cc6f3292255cb467ea7e12d0d0280c
|
||||||
F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
|
F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
|
||||||
F ext/session/sqlite3session.c d14d3043d4e04b080090d92b46e7b01ed25f49985161c8cb4fba05eefaf85850
|
F ext/session/sqlite3session.c e50a9218ee360db0a25298adc6614162d80ebe65d3f6a5b0a021e0902f6536a1
|
||||||
F ext/session/sqlite3session.h 653e9d49c4edae231df8a4c8d69c2145195aedb32462d4b44229dbee7d2680fb
|
F ext/session/sqlite3session.h 653e9d49c4edae231df8a4c8d69c2145195aedb32462d4b44229dbee7d2680fb
|
||||||
F ext/session/test_session.c 5285482f83cd92b4c1fe12fcf88210566a18312f4f2aa110f6399dae46aeccbb
|
F ext/session/test_session.c 5285482f83cd92b4c1fe12fcf88210566a18312f4f2aa110f6399dae46aeccbb
|
||||||
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
||||||
@ -2068,8 +2068,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 6bee0a19e2efb6e39097fb22602556791d3d3962c50a1a0471c39a0c61db632e
|
P aac8ac631de5c5b439c48c13f5fd271d76c11b1a5fd0919dfe4506ef7725f5ab
|
||||||
R cedc5713e8adb684ab4577dbf72daabf
|
R 61d9a9d2668f7db76ae5cd18e6e09935
|
||||||
U larrybr
|
U dan
|
||||||
Z 10156d687667290729862638bd5abda0
|
Z 12f32504ba9b59579e904b79780ed5db
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
aac8ac631de5c5b439c48c13f5fd271d76c11b1a5fd0919dfe4506ef7725f5ab
|
92ade220dcf5c1b76a5db605b1467a01051271957cd26f790755904fd82772eb
|
Reference in New Issue
Block a user