1
0
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:
drh
2007-03-30 14:46:01 +00:00
parent 80e35f4640
commit 3cdd7d37c6
3 changed files with 12 additions and 20 deletions

View File

@@ -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

View File

@@ -1 +1 @@
66b3ad09ea657d25d48cb75ec2671ea2dc1b6005 e5f17078a28b6a47d6943d40c526390c36258392

View File

@@ -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);
} }