mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix a problem with sqlite3changegroup_schema() and patchsets.
FossilOrigin-Name: c4ab4200dc2538e1132d87d70fd309b26b0da8a918fede1cb09b567ea40ec889
This commit is contained in:
@ -189,44 +189,49 @@ foreach {tn sql1 at sql2} {
|
||||
INSERT INTO t4(x, y, c) VALUES(9, 10, 11);
|
||||
}
|
||||
} {
|
||||
db_restore_and_reopen
|
||||
foreach {tn2 cmd} {
|
||||
1 changeset_from_sql
|
||||
2 patchset_from_sql
|
||||
} {
|
||||
db_restore_and_reopen
|
||||
|
||||
set C1 [changeset_from_sql $sql1]
|
||||
execsql $at
|
||||
set C2 [changeset_from_sql $sql2]
|
||||
set C1 [$cmd $sql1]
|
||||
execsql $at
|
||||
set C2 [$cmd $sql2]
|
||||
|
||||
sqlite3changegroup grp
|
||||
grp schema db main
|
||||
grp add $C1
|
||||
grp add $C2
|
||||
set T1 [grp output]
|
||||
grp delete
|
||||
sqlite3changegroup grp
|
||||
grp schema db main
|
||||
grp add $C1
|
||||
grp add $C2
|
||||
set T1 [grp output]
|
||||
grp delete
|
||||
|
||||
db_restore_and_reopen
|
||||
execsql $at
|
||||
set T2 [changeset_from_sql "$sql1 ; $sql2"]
|
||||
db_restore_and_reopen
|
||||
execsql $at
|
||||
set T2 [$cmd "$sql1 ; $sql2"]
|
||||
|
||||
if {[string range $tn end end]!="*"} {
|
||||
do_test 3.1.$tn.1 { changeset_to_list $T1 } [changeset_to_list $T2]
|
||||
} else {
|
||||
set tn [string range $tn 0 end-1]
|
||||
if {[string range $tn end end]!="*"} {
|
||||
do_test 3.1.$tn.$tn2.1 { changeset_to_list $T1 } [changeset_to_list $T2]
|
||||
set testname "$tn.$tn2"
|
||||
} else {
|
||||
set testname "[string range $tn 0 end-1].$tn2"
|
||||
}
|
||||
|
||||
db_restore_and_reopen
|
||||
proc xConflict {args} { return "REPLACE" }
|
||||
sqlite3changeset_apply_v2 db $T1 xConflict
|
||||
set S1 [scksum db main]
|
||||
|
||||
db_restore_and_reopen
|
||||
sqlite3changeset_apply_v2 db $T2 xConflict
|
||||
set S2 [scksum db main]
|
||||
|
||||
# if { $tn==7 } { puts [changeset_to_list $T1] }
|
||||
|
||||
do_test 3.1.$tn.2 { set S1 } $S2
|
||||
}
|
||||
|
||||
db_restore_and_reopen
|
||||
proc xConflict {args} { return "REPLACE" }
|
||||
sqlite3changeset_apply_v2 db $T1 xConflict
|
||||
set S1 [scksum db main]
|
||||
|
||||
db_restore_and_reopen
|
||||
sqlite3changeset_apply_v2 db $T2 xConflict
|
||||
set S2 [scksum db main]
|
||||
|
||||
# if { $tn==7 } { puts [changeset_to_list $T1] }
|
||||
|
||||
do_test 3.1.$tn.2 { set S1 } $S2
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -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;
|
||||
|
15
manifest
15
manifest
@ -1,5 +1,5 @@
|
||||
C Add\sthe\ssqlite3changegroup_schema()\sAPI.\sTo\sallow\schangegroup\sobjects\sto\supgrade\sthe\sschema\sof\sa\schangeset/patchset\sunder\ssome\scircumstances.
|
||||
D 2023-10-07T16:32:02.752
|
||||
C Fix\sa\sproblem\swith\ssqlite3changegroup_schema()\sand\spatchsets.
|
||||
D 2023-10-07T17:29:10.275
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -529,7 +529,7 @@ F ext/session/sessionG.test 3efe388282d641b65485b5462e67851002cd91a282dc95b685d0
|
||||
F ext/session/sessionH.test 71bbff6b1abb2c4ac62b84dee53273c37e0b21e5fde3aed80929403e091ef859
|
||||
F ext/session/session_common.tcl e5598096425486b363718e2cda48ee85d660c96b4f8ea9d9d7a4c3ef514769da
|
||||
F ext/session/session_speed_test.c dcf0ef58d76b70c8fbd9eab3be77cf9deb8bc1638fed8be518b62d6cbdef88b3
|
||||
F ext/session/sessionalter.test 06ac2da2f14fd722409b91d865c840caea4d7670eb759eeb6b64581f37737f4f
|
||||
F ext/session/sessionalter.test 72722f6f971c7cb6302a1a3c43ff256c0db1aaf19ae625ecdf710d53f08b1237
|
||||
F ext/session/sessionat.test 00c8badb35e43a2f12a716d2734a44d614ff62361979b6b85419035bc04b45ee
|
||||
F ext/session/sessionbig.test 47c381e7acfabeef17d98519a3080d69151723354d220afa2053852182ca7adf
|
||||
F ext/session/sessiondiff.test ad13dd65664bae26744e1f18eb3cbd5588349b7e9118851d8f9364248d67bcec
|
||||
@ -545,7 +545,7 @@ F ext/session/sessionrowid.test 85187c2f1b38861a5844868126f69f9ec62223a03449a98a
|
||||
F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795
|
||||
F ext/session/sessionstat1.test b039e38e2ba83767b464baf39b297cc0b1cc6f3292255cb467ea7e12d0d0280c
|
||||
F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
|
||||
F ext/session/sqlite3session.c a371d74dd1b545d43c40363ecfc52cece93521db61a90c152034b47f125de451
|
||||
F ext/session/sqlite3session.c ea28d07a280dc82efd4e98417a10b582058dc11a0f2a6ac3b194aa20d233d758
|
||||
F ext/session/sqlite3session.h 4d1f69f1d8bfd4798e8f6431de301d17bb2e4097de2f77ca4dad494bb6c60dc0
|
||||
F ext/session/test_session.c 0b4bc954e5e411baa723e52abd46380ca428797dff39ed62c610001777a2b70f
|
||||
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
||||
@ -2125,9 +2125,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P f99ff655d09763c4a22d065041644ece793d84c82c644931e89ccf50c4f4564a 1f9d10235ff32e72074be695049567135b02e681068ce117b66adc14a6214449
|
||||
R d865b9cfb63e018f64f1f6aad13ad521
|
||||
T +closed 1f9d10235ff32e72074be695049567135b02e681068ce117b66adc14a6214449
|
||||
P 03f9e50b15c9c2fb4636dee24c1491c45322578b9fed08c6f4360be07c5c3830
|
||||
R 557213144d25aabc74ea3d95f8466dc7
|
||||
U dan
|
||||
Z a0859a12944656342c5d9a33e3014cec
|
||||
Z 4ef2a0ed12272e0a936ee099de80bb27
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@ -1 +1 @@
|
||||
03f9e50b15c9c2fb4636dee24c1491c45322578b9fed08c6f4360be07c5c3830
|
||||
c4ab4200dc2538e1132d87d70fd309b26b0da8a918fede1cb09b567ea40ec889
|
Reference in New Issue
Block a user