mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
When moving pages as part of autovacuum on an in-memory database, make sure
that the source location is journalled so that a ROLLBACK can occur. Part of the fix for ticket [564d412f15a00] FossilOrigin-Name: 2f42f91fe65b0b21671936013df08037091f0cc6
This commit is contained in:
24
manifest
24
manifest
@@ -1,5 +1,8 @@
|
|||||||
C Merge\sleaf\saccidentally\screated\sby\s[1c4984c62f].
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
D 2009-11-20T10:23:13
|
Hash: SHA1
|
||||||
|
|
||||||
|
C When\smoving\spages\sas\spart\sof\sautovacuum\son\san\sin-memory\sdatabase,\smake\ssure\nthat\sthe\ssource\slocation\sis\sjournalled\sso\sthat\sa\sROLLBACK\scan\soccur.\nPart\sof\sthe\sfix\sfor\sticket\s[564d412f15a00]
|
||||||
|
D 2009-11-20T18:48:36
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 7f6c6aa7feeeb5e26e01b344161d9aa1b5d64177
|
F Makefile.in 7f6c6aa7feeeb5e26e01b344161d9aa1b5d64177
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -150,7 +153,7 @@ F src/os_common.h 240c88b163b02c21a9f21f87d49678a0aa21ff30
|
|||||||
F src/os_os2.c 75a8c7b9a00a2cf1a65f9fa4afbc27d46634bb2f
|
F src/os_os2.c 75a8c7b9a00a2cf1a65f9fa4afbc27d46634bb2f
|
||||||
F src/os_unix.c bdd6ca0932dcb51c344081aff430bcc71c14db7f
|
F src/os_unix.c bdd6ca0932dcb51c344081aff430bcc71c14db7f
|
||||||
F src/os_win.c 5ffab20249a61e0625f869efe157fa009747039b
|
F src/os_win.c 5ffab20249a61e0625f869efe157fa009747039b
|
||||||
F src/pager.c 4adc8baf93d50aa8e567173d27a37ff103106dab
|
F src/pager.c 3c408c646d2a4adba5aedde9862ef69a27be68d8
|
||||||
F src/pager.h 1b32faf2e578ac3e7bcf9c9d11217128261c5c54
|
F src/pager.h 1b32faf2e578ac3e7bcf9c9d11217128261c5c54
|
||||||
F src/parse.y f785d814562a14dc19202f61abb4372845f64752
|
F src/parse.y f785d814562a14dc19202f61abb4372845f64752
|
||||||
F src/pcache.c 3b079306376e0e04c0d3df40c0a4b750a1839310
|
F src/pcache.c 3b079306376e0e04c0d3df40c0a4b750a1839310
|
||||||
@@ -772,7 +775,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 1c4984c62f393f41f9182ea82546c16d02efa46f c6ed7e2a73a7a65cfa914ffcad4f603b6b7a22a8
|
P cae949ce971ca216e0f8880b2f93866619fa05be
|
||||||
R a4c740bd2d6cd6d5d405c025a9a5ce19
|
R 2694b0c14575364b4e238f551e9978fe
|
||||||
U dan
|
U drh
|
||||||
Z 4d4aca1de07a44952499e25e5fd5b2ca
|
Z 282c516102a118903c65953429c1dd9e
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
|
iD8DBQFLBuSLoxKgR168RlERAuGTAJ9fd56Dwjiro+x2qI/XWq9kCYvkpgCeNshK
|
||||||
|
ifMBSSRy91DoqTPyE1WJ+1s=
|
||||||
|
=D02H
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
|
@@ -1 +1 @@
|
|||||||
cae949ce971ca216e0f8880b2f93866619fa05be
|
2f42f91fe65b0b21671936013df08037091f0cc6
|
10
src/pager.c
10
src/pager.c
@@ -5101,6 +5101,14 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){
|
|||||||
|
|
||||||
assert( pPg->nRef>0 );
|
assert( pPg->nRef>0 );
|
||||||
|
|
||||||
|
/* In order to be able to rollback, an in-memory database must journal
|
||||||
|
** the page we are moving from.
|
||||||
|
*/
|
||||||
|
if( MEMDB ){
|
||||||
|
rc = sqlite3PagerWrite(pPg);
|
||||||
|
if( rc ) return rc;
|
||||||
|
}
|
||||||
|
|
||||||
/* If the page being moved is dirty and has not been saved by the latest
|
/* If the page being moved is dirty and has not been saved by the latest
|
||||||
** savepoint, then save the current contents of the page into the
|
** savepoint, then save the current contents of the page into the
|
||||||
** sub-journal now. This is required to handle the following scenario:
|
** sub-journal now. This is required to handle the following scenario:
|
||||||
@@ -5119,7 +5127,7 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){
|
|||||||
** one or more savepoint bitvecs. This is the reason this function
|
** one or more savepoint bitvecs. This is the reason this function
|
||||||
** may return SQLITE_NOMEM.
|
** may return SQLITE_NOMEM.
|
||||||
*/
|
*/
|
||||||
if( pPg->flags&PGHDR_DIRTY
|
if( pPg->flags&PGHDR_DIRTY
|
||||||
&& subjRequiresPage(pPg)
|
&& subjRequiresPage(pPg)
|
||||||
&& SQLITE_OK!=(rc = subjournalPage(pPg))
|
&& SQLITE_OK!=(rc = subjournalPage(pPg))
|
||||||
){
|
){
|
||||||
|
Reference in New Issue
Block a user