mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Tease apart the two phases of pager commit. (CVS 3763)
FossilOrigin-Name: e5f17078a28b6a47d6943d40c526390c36258392
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Refactoring\sthe\sbtree\sand\spager\sroutines\sinto\sdistinct\stwo-phase\scommit\nroutines.\s\sWe've\salways\sdone\sa\stwo-phase\scommit\s-\sthis\schange\sis\sjust\nmaking\sthat\smore\sapparent\sin\sthe\scode.\s(CVS\s3762)
|
C Tease\sapart\sthe\stwo\sphases\sof\spager\scommit.\s(CVS\s3763)
|
||||||
D 2007-03-30T14:06:34
|
D 2007-03-30T14:46:01
|
||||||
F Makefile.in 2f2c3bf69faf0ae7b8e8af4f94f1986849034530
|
F Makefile.in 2f2c3bf69faf0ae7b8e8af4f94f1986849034530
|
||||||
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
||||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||||
@@ -86,7 +86,7 @@ F src/os_unix.c 4291be23eec73d1ec04010ae702364b781b5f773
|
|||||||
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
|
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
|
||||||
F src/os_win.c c3a8403ea28bbb89d6507fa984c5919bd3fe7539
|
F src/os_win.c c3a8403ea28bbb89d6507fa984c5919bd3fe7539
|
||||||
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
|
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
|
||||||
F src/pager.c f9131543cc602202de8a436ca9207e4c28b3f41e
|
F src/pager.c 08e997b91657fd82dc19c1d06f965eeaaa2de7f5
|
||||||
F src/pager.h e79a24cf200b8771366217f5bca414f5b7823f42
|
F src/pager.h e79a24cf200b8771366217f5bca414f5b7823f42
|
||||||
F src/parse.y 207ab04273ae13aa4a729b96008d294d5f334ab3
|
F src/parse.y 207ab04273ae13aa4a729b96008d294d5f334ab3
|
||||||
F src/pragma.c 8fd4f98822007a8d2c34e235ad3c35f1d77b3e51
|
F src/pragma.c 8fd4f98822007a8d2c34e235ad3c35f1d77b3e51
|
||||||
@@ -447,7 +447,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
|||||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||||
P 70c8c7e2ce5213778e63c200a6637849920deea6
|
P 66b3ad09ea657d25d48cb75ec2671ea2dc1b6005
|
||||||
R a5a112b3409ee86a088223323643c5e6
|
R 87f3fb17b92b06ba0363d652e2c2e851
|
||||||
U drh
|
U drh
|
||||||
Z 49017f06f92594291d8addf7b78eb7c9
|
Z a7a4533761023a234a1b0962226a7a23
|
||||||
|
@@ -1 +1 @@
|
|||||||
66b3ad09ea657d25d48cb75ec2671ea2dc1b6005
|
e5f17078a28b6a47d6943d40c526390c36258392
|
16
src/pager.c
16
src/pager.c
@@ -18,7 +18,7 @@
|
|||||||
** file simultaneously, or one process from reading the database while
|
** file simultaneously, or one process from reading the database while
|
||||||
** another is writing.
|
** another is writing.
|
||||||
**
|
**
|
||||||
** @(#) $Id: pager.c,v 1.307 2007/03/30 14:06:34 drh Exp $
|
** @(#) $Id: pager.c,v 1.308 2007/03/30 14:46:01 drh Exp $
|
||||||
*/
|
*/
|
||||||
#ifndef SQLITE_OMIT_DISKIO
|
#ifndef SQLITE_OMIT_DISKIO
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
@@ -3707,6 +3707,7 @@ int sqlite3PagerCommitPhaseOne(Pager *pPager, const char *zMaster, Pgno nTrunc){
|
|||||||
pPg = pager_get_all_dirty_pages(pPager);
|
pPg = pager_get_all_dirty_pages(pPager);
|
||||||
rc = pager_write_pagelist(pPg);
|
rc = pager_write_pagelist(pPg);
|
||||||
if( rc!=SQLITE_OK ) goto sync_exit;
|
if( rc!=SQLITE_OK ) goto sync_exit;
|
||||||
|
pPager->pDirty = 0;
|
||||||
|
|
||||||
/* Sync the database file. */
|
/* Sync the database file. */
|
||||||
if( !pPager->noSync ){
|
if( !pPager->noSync ){
|
||||||
@@ -3766,18 +3767,9 @@ int sqlite3PagerCommitPhaseTwo(Pager *pPager){
|
|||||||
pPager->state = PAGER_SHARED;
|
pPager->state = PAGER_SHARED;
|
||||||
return SQLITE_OK;
|
return SQLITE_OK;
|
||||||
}
|
}
|
||||||
if( pPager->dirtyCache==0 ){
|
assert( pPager->journalOpen || !pPager->dirtyCache );
|
||||||
/* Exit early (without doing the time-consuming sqlite3OsSync() calls)
|
assert( pPager->state==PAGER_SYNCED || !pPager->dirtyCache );
|
||||||
** if there have been no changes to the database file. */
|
|
||||||
assert( pPager->needSync==0 );
|
|
||||||
rc = pager_end_transaction(pPager);
|
rc = pager_end_transaction(pPager);
|
||||||
}else{
|
|
||||||
assert( pPager->journalOpen );
|
|
||||||
rc = sqlite3PagerCommitPhaseOne(pPager, 0, 0);
|
|
||||||
if( rc==SQLITE_OK ){
|
|
||||||
rc = pager_end_transaction(pPager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pager_error(pPager, rc);
|
return pager_error(pPager, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user