Merge latest begin-concurrent changes with this branch.
FossilOrigin-Name: 1625887c0240eb1cb37e41d79e789c4ff311352c5708e6a2d3ed1b223ff382e3
This commit is contained in:
commit
d080e84c81
@ -336,6 +336,19 @@ int sqlite3session_fullchangeset(
|
||||
void **ppChangeset /* OUT: Buffer containing changeset */
|
||||
);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Generate A Full Changeset From A Session Object
|
||||
**
|
||||
** This function is similar to sqlite3session_changeset(), except that for
|
||||
** each row affected by an UPDATE statement, all old.* values are recorded
|
||||
** as part of the changeset, not just those modified.
|
||||
*/
|
||||
int sqlite3session_fullchangeset(
|
||||
sqlite3_session *pSession, /* Session object */
|
||||
int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
|
||||
void **ppChangeset /* OUT: Buffer containing changeset */
|
||||
);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Load The Difference Between Tables Into A Session
|
||||
** METHOD: sqlite3_session
|
||||
|
20
manifest
20
manifest
@ -1,5 +1,5 @@
|
||||
C Increase\scoverage\sprovided\sby\spermutation\s"coverage-wal"\son\sthis\sbranch.
|
||||
D 2018-12-29T16:34:22.239
|
||||
C Merge\slatest\sbegin-concurrent\schanges\swith\sthis\sbranch.
|
||||
D 2018-12-29T20:47:45.530
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F Makefile.in d8b254f8bb81bab43c340d70d17dc3babab40fcc8a348c8255881f780a45fee6
|
||||
@ -429,7 +429,7 @@ F ext/session/sessionwor.test 07f0b304dc4df5454906069140bf6ec67edcaa3c548f368335
|
||||
F ext/session/sqlite3changebatch.c d5553b79e012ee2cb06c0a96bdf9dfe19e66354390ea0036cc46c4953142d517
|
||||
F ext/session/sqlite3changebatch.h e72016998c9a22d439ddfd547b69e1ebac810c24
|
||||
F ext/session/sqlite3session.c 994b1b691f3e1ab72a9d3949c2ca7dca4db3d9dd5ece5e34f74953411b8d36f9
|
||||
F ext/session/sqlite3session.h fd5d353901575b587c877b957918ff9f2d8e0ff40a96b210cf79459c0e17d3b7
|
||||
F ext/session/sqlite3session.h ef72e7738edcaf8d1a29e74480cac3b3171781870d248160b2d9147b8dac0d6b
|
||||
F ext/session/test_session.c 60e15d5db8ae7a0f521e70a7504ba1f74fc50548a25a5397808f487bc6a92b5d
|
||||
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
||||
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
|
||||
@ -502,7 +502,7 @@ F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
|
||||
F src/os_unix.c 1aa113b261a0ad44fd410a001f6e39bfc1ebd4279b2fb8c2d636a7620d76a45a
|
||||
F src/os_win.c 85d9e532d0444ab6c16d7431490c2e279e282aa0917b0e988996b1ae0de5c5a0
|
||||
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
|
||||
F src/pager.c bd11bf6971789994b4c1972019f16caf6e5ed5a59165d65f0147535aab191703
|
||||
F src/pager.c 24dbb25d447629bc8167dcf16dcb449a6eb2067393935d97ff42377798e44979
|
||||
F src/pager.h d8cf37b3415c742d1f267ae2e0e6495826a72d403cbdbefdab2e2f5ff2a1dde7
|
||||
F src/parse.y 8206217fe7fa96652aa1b8a797246e23b30a9d4c1a5175d9c12b13750f51dc2f
|
||||
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
|
||||
@ -597,8 +597,8 @@ F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7
|
||||
F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
|
||||
F src/vtab.c 70188a745dc4e57d26e942681ff4b2912b7c8249ad5de3f60f0677b4337bcfaa
|
||||
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||
F src/wal.c 598891224a5b45d984b8cf24517aa907c47b03d46578bed58f74b7e28b8d3250
|
||||
F src/wal.h c398e0269e8f37495cedb63b5e288c2aac6f6d103d05fb55f4affec21311615d
|
||||
F src/wal.c d1908ffa514275dc6f27c4b27abc6d5a2ce18c89e98dce10925972266b960f37
|
||||
F src/wal.h 86a71244ad934135743cb50dd00cd380763ec5dca5b68012ea394731a369b741
|
||||
F src/walker.c fb94aadc9099ff9c6506d0a8b88d51266005bcaa265403f3d7caf732a562eb66
|
||||
F src/where.c 3818e8a736a05d2cb194e64399af707e367fbcc5c251d785804d02eaf121288e
|
||||
F src/whereInt.h f125f29fca80890768e0b2caa14f95db74b2dacd3a122a168f97aa7b64d6968f
|
||||
@ -735,7 +735,7 @@ F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151eca
|
||||
F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1
|
||||
F test/colname.test fb28b3687e03625425bc216edf8b186ce974aa71008e2aa1f426a7dcb75a601d
|
||||
F test/concfault.test 500f17c3fcfe7705114422bcc6ddd3c740001a43
|
||||
F test/concfault2.test 0c4094db632e585244ca3b1cbfb74b794dd93629bf699bd1a2b511055c52c0bc
|
||||
F test/concfault2.test 34b3fd258836aa305475d00e804c7450ade92f0de0bf9fa620e701446669bb12
|
||||
F test/concurrent.test 86661967a680670127a62a819e60dc93c2d3d49043ac95b26dfa70d3e60dbde5
|
||||
F test/concurrent2.test f447dfae67e4d80a2b61e2796c2c081564a8126cf96c39a14780e89c8c53eff5
|
||||
F test/concurrent3.test 530671ac706f6a1d0f4992dbdd33a86408330d03cd90fb9e82ecb1b27f5fd081
|
||||
@ -1821,7 +1821,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P ea96001e801fbf228d1fb63b9d3c73fd9da54994d3cfe383ea76edfa6da83b8d
|
||||
R 42c4829d3c89025ea70567a057d519f0
|
||||
P f664f940a7eb6938b1ee171143a691e2f497aec921f979be63ef844d38053f56 48ca30f9d7817d87a5e9a069fdc51b1a34e00585f8a35771895dd743c7bfe07c
|
||||
R 96b75411a5a80fefb4035842cde30725
|
||||
U dan
|
||||
Z 4b3d49cde64b9c3f6154999717a75fb6
|
||||
Z c4caebd173a274144c3a15ad58f87055
|
||||
|
@ -1 +1 @@
|
||||
f664f940a7eb6938b1ee171143a691e2f497aec921f979be63ef844d38053f56
|
||||
1625887c0240eb1cb37e41d79e789c4ff311352c5708e6a2d3ed1b223ff382e3
|
@ -3203,7 +3203,13 @@ static int pagerRollbackWal(Pager *pPager){
|
||||
** + Reload page content from the database (if refcount>0).
|
||||
*/
|
||||
pPager->dbSize = pPager->dbOrigSize;
|
||||
rc = sqlite3WalUndo(pPager->pWal, pagerUndoCallback, (void *)pPager);
|
||||
rc = sqlite3WalUndo(pPager->pWal, pagerUndoCallback, (void *)pPager,
|
||||
#ifdef SQLITE_OMIT_CONCURRENT
|
||||
0
|
||||
#else
|
||||
pPager->pAllRead!=0
|
||||
#endif
|
||||
);
|
||||
pList = sqlite3PcacheDirtyList(pPager->pPCache);
|
||||
|
||||
#ifndef SQLITE_OMIT_CONCURRENT
|
||||
|
12
src/wal.c
12
src/wal.c
@ -4032,7 +4032,12 @@ int sqlite3WalEndWriteTransaction(Wal *pWal){
|
||||
** Otherwise, if the callback function does not return an error, this
|
||||
** function returns SQLITE_OK.
|
||||
*/
|
||||
int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx){
|
||||
int sqlite3WalUndo(
|
||||
Wal *pWal,
|
||||
int (*xUndo)(void *, Pgno),
|
||||
void *pUndoCtx,
|
||||
int bConcurrent /* True if this is a CONCURRENT transaction */
|
||||
){
|
||||
int rc = SQLITE_OK;
|
||||
if( pWal->writeLock ){
|
||||
int iWal = walidxGetFile(&pWal->hdr);
|
||||
@ -4063,8 +4068,11 @@ int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx){
|
||||
** occurred in WalLockForCommit(), before any pages were written
|
||||
** to the database file. In this case return early. */
|
||||
#ifndef SQLITE_OMIT_CONCURRENT
|
||||
if( bConcurrent ){
|
||||
pWal->hdr.aCksum[0]++;
|
||||
}
|
||||
if( walidxGetFile(&pWal->hdr)!=iWal ){
|
||||
assert( isWalMode2(pWal) );
|
||||
assert( bConcurrent && isWalMode2(pWal) );
|
||||
return SQLITE_OK;
|
||||
}
|
||||
#endif
|
||||
|
@ -34,7 +34,7 @@
|
||||
# define sqlite3WalDbsize(y) 0
|
||||
# define sqlite3WalBeginWriteTransaction(y) 0
|
||||
# define sqlite3WalEndWriteTransaction(x) 0
|
||||
# define sqlite3WalUndo(x,y,z) 0
|
||||
# define sqlite3WalUndo(w,x,y,z) 0
|
||||
# define sqlite3WalSavepoint(y,z)
|
||||
# define sqlite3WalSavepointUndo(y,z) 0
|
||||
# define sqlite3WalFrames(u,v,w,x,y,z) 0
|
||||
@ -84,7 +84,7 @@ int sqlite3WalBeginWriteTransaction(Wal *pWal);
|
||||
int sqlite3WalEndWriteTransaction(Wal *pWal);
|
||||
|
||||
/* Undo any frames written (but not committed) to the log */
|
||||
int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx);
|
||||
int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx, int);
|
||||
|
||||
/* Return an integer that records the current (uncommitted) write
|
||||
** position in the WAL */
|
||||
|
@ -45,6 +45,7 @@ faultsim_save_and_close
|
||||
do_faultsim_test 1 -prep {
|
||||
faultsim_restore_and_reopen
|
||||
execsql {
|
||||
SELECT * FROM t1;
|
||||
BEGIN CONCURRENT;
|
||||
INSERT INTO t2 VALUES(1, 2);
|
||||
}
|
||||
@ -59,7 +60,10 @@ do_faultsim_test 1 -prep {
|
||||
} -test {
|
||||
faultsim_test_result {0 {}}
|
||||
catchsql { ROLLBACK }
|
||||
set res [catchsql { SELECT count(*) FROM t1 }]
|
||||
if {$res!="0 9"} { error "expected {0 9} got {$res}" }
|
||||
faultsim_integrity_check
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user