pager.c File Reference

Go to the source code of this file.

Classes

struct  Pager

Defines

#define PAGERTRACE1(X)
#define PAGERTRACE2(X, Y)
#define PAGERTRACE3(X, Y, Z)
#define PAGERTRACE4(X, Y, Z, W)
#define PAGERTRACE5(X, Y, Z, W, V)
#define PAGERID(p)   ((int)(p->fd))
#define FILEHANDLEID(fd)   ((int)fd)
#define PAGER_UNLOCK   0
#define PAGER_SHARED   1
#define PAGER_RESERVED   2
#define PAGER_EXCLUSIVE   4
#define PAGER_SYNCED   5
#define SQLITE_BUSY_RESERVED_LOCK   0
#define FORCE_ALIGNMENT(X)   (((X)+7)&~7)
#define CODEC1(P, D, N, X)
#define CODEC2(P, D, N, X)   ((char*)D)
#define PAGER_INCR(v)
#define JOURNAL_PG_SZ(pPager)   ((pPager->pageSize) + 8)
#define JOURNAL_HDR_SZ(pPager)   (pPager->sectorSize)
#define MEMDB   pPager->memDb
#define PAGER_MJ_PGNO(x)   ((PENDING_BYTE/((x)->pageSize))+1)
#define PAGER_MAX_PGNO   2147483647
#define put32bits(A, B)   sqlite3Put4byte((u8*)A,B)
#define pager_datahash(X, Y)   0
#define pager_pagehash(X)   0
#define CHECK_PAGE(x)
#define disable_simulated_io_errors()
#define enable_simulated_io_errors()

Functions

static int pageInStatement (PgHdr *pPg)
static int read32bits (sqlite3_file *fd, i64 offset, u32 *pRes)
static int write32bits (sqlite3_file *fd, i64 offset, u32 val)
static int osUnlock (sqlite3_file *pFd, int eLock)
static void pager_unlock (Pager *pPager)
static int pager_error (Pager *pPager, int rc)
static int readMasterJournal (sqlite3_file *pJrnl, char *zMaster, int nMaster)
static void seekJournalHdr (Pager *pPager)
static int zeroJournalHdr (Pager *pPager, int doTruncate)
static int writeJournalHdr (Pager *pPager)
static int readJournalHdr (Pager *pPager, i64 journalSize, u32 *pNRec, u32 *pDbSize)
static int writeMasterJournal (Pager *pPager, const char *zMaster)
static PgHdrpager_lookup (Pager *pPager, Pgno pgno)
static void pager_reset (Pager *pPager)
static void pagerUnlockAndRollback (Pager *p)
static int pager_end_transaction (Pager *pPager, int hasMaster)
static u32 pager_cksum (Pager *pPager, const u8 *aData)
static void makeClean (PgHdr *)
static int pager_playback_one_page (Pager *pPager, sqlite3_file *jfd, i64 offset, int isMainJrnl)
static int pager_delmaster (Pager *pPager, const char *zMaster)
static void pager_truncate_cache (Pager *pPager)
static int pager_truncate (Pager *pPager, int nPage)
static void setSectorSize (Pager *pPager)
static int pager_playback (Pager *pPager, int isHot)
static int pager_stmt_playback (Pager *pPager)
void sqlite3PagerSetCachesize (Pager *pPager, int mxPage)
void sqlite3PagerSetSafetyLevel (Pager *pPager, int level, int bFullFsync)
static int sqlite3PagerOpentemp (Pager *pPager, sqlite3_file *pFile, int vfsFlags)
static int pagerStress (void *, PgHdr *)
int sqlite3PagerOpen (sqlite3_vfs *pVfs, Pager **ppPager, const char *zFilename, int nExtra, int flags, int vfsFlags)
void sqlite3PagerSetBusyhandler (Pager *pPager, BusyHandler *pBusyHandler)
void sqlite3PagerSetReiniter (Pager *pPager, void(*xReinit)(DbPage *))
int sqlite3PagerSetPagesize (Pager *pPager, u16 *pPageSize)
void * sqlite3PagerTempSpace (Pager *pPager)
int sqlite3PagerMaxPageCount (Pager *pPager, int mxPage)
int sqlite3PagerReadFileheader (Pager *pPager, int N, unsigned char *pDest)
int sqlite3PagerPagecount (Pager *pPager, int *pnPage)
static int syncJournal (Pager *)
static int pager_wait_on_lock (Pager *pPager, int locktype)
int sqlite3PagerTruncate (Pager *pPager, Pgno nPage)
int sqlite3PagerClose (Pager *pPager)
int sqlite3PagerRef (DbPage *pPg)
static int pager_write_pagelist (PgHdr *pList)
static int hasHotJournal (Pager *pPager, int *pExists)
static int readDbPage (Pager *pPager, PgHdr *pPg, Pgno pgno)
static int pagerSharedLock (Pager *pPager)
static int pager_get_content (PgHdr *pPg)
static void pagerUnlockIfUnused (Pager *pPager)
static void pagerDropPage (DbPage *pPg)
int sqlite3PagerAcquire (Pager *pPager, Pgno pgno, DbPage **ppPage, int noContent)
DbPagesqlite3PagerLookup (Pager *pPager, Pgno pgno)
int sqlite3PagerUnref (DbPage *pPg)
static int pager_open_journal (Pager *pPager)
int sqlite3PagerBegin (DbPage *pPg, int exFlag)
static void makeDirty (PgHdr *pPg)
static int pager_write (PgHdr *pPg)
int sqlite3PagerWrite (DbPage *pDbPage)
int sqlite3PagerDontWrite (DbPage *pDbPage)
void sqlite3PagerDontRollback (DbPage *pPg)
static int pager_incr_changecounter (Pager *pPager, int isDirect)
int sqlite3PagerSync (Pager *pPager)
int sqlite3PagerCommitPhaseOne (Pager *pPager, const char *zMaster, Pgno nTrunc, int noSync)
int sqlite3PagerCommitPhaseTwo (Pager *pPager)
int sqlite3PagerRollback (Pager *pPager)
int sqlite3PagerIsreadonly (Pager *pPager)
int sqlite3PagerRefcount (Pager *pPager)
int sqlite3PagerPageRefcount (DbPage *pPage)
static int pagerStmtBegin (Pager *pPager)
int sqlite3PagerStmtBegin (Pager *pPager)
int sqlite3PagerStmtCommit (Pager *pPager)
int sqlite3PagerStmtRollback (Pager *pPager)
const char * sqlite3PagerFilename (Pager *pPager)
const sqlite3_vfssqlite3PagerVfs (Pager *pPager)
sqlite3_filesqlite3PagerFile (Pager *pPager)
const char * sqlite3PagerDirname (Pager *pPager)
const char * sqlite3PagerJournalname (Pager *pPager)
int sqlite3PagerNosync (Pager *pPager)
int sqlite3PagerMovepage (Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit)
void * sqlite3PagerGetData (DbPage *pPg)
void * sqlite3PagerGetExtra (DbPage *pPg)
int sqlite3PagerLockingMode (Pager *pPager, int eMode)
int sqlite3PagerJournalMode (Pager *pPager, int eMode)
i64 sqlite3PagerJournalSizeLimit (Pager *pPager, i64 iLimit)

Variables

static const unsigned char aJournalMagic []

Define Documentation

#define CHECK_PAGE (  ) 

Definition at line 476 of file pager.c.

Referenced by pager_write().

#define CODEC1 ( P,
D,
N,
 ) 

Definition at line 139 of file pager.c.

Referenced by pager_playback_one_page(), and readDbPage().

#define CODEC2 ( P,
D,
N,
 )     ((char*)D)

Definition at line 140 of file pager.c.

Referenced by pager_write(), and pager_write_pagelist().

 
#define disable_simulated_io_errors (  ) 

Definition at line 2045 of file pager.c.

Referenced by sqlite3PagerClose(), and vdbeCommit().

 
#define enable_simulated_io_errors (  ) 

Definition at line 2046 of file pager.c.

Referenced by sqlite3PagerClose(), and vdbeCommit().

#define FILEHANDLEID ( fd   )     ((int)fd)

Definition at line 53 of file pager.c.

Referenced by sqlite3PagerOpen().

#define FORCE_ALIGNMENT (  )     (((X)+7)&~7)

Definition at line 130 of file pager.c.

Referenced by sqlite3PagerOpen().

#define JOURNAL_HDR_SZ ( pPager   )     (pPager->sectorSize)

Definition at line 276 of file pager.c.

Referenced by pager_playback(), readJournalHdr(), seekJournalHdr(), and writeJournalHdr().

#define JOURNAL_PG_SZ ( pPager   )     ((pPager->pageSize) + 8)

Definition at line 269 of file pager.c.

Referenced by pager_playback().

#define MEMDB   pPager->memDb
#define pager_datahash ( X,
 )     0

Definition at line 474 of file pager.c.

Referenced by pager_playback_one_page().

#define PAGER_EXCLUSIVE   4
#define PAGER_INCR (  ) 

Definition at line 233 of file pager.c.

Referenced by pager_write(), pager_write_pagelist(), readDbPage(), and sqlite3PagerAcquire().

#define PAGER_MAX_PGNO   2147483647

Definition at line 303 of file pager.c.

Referenced by sqlite3PagerAcquire().

#define PAGER_MJ_PGNO (  )     ((PENDING_BYTE/((x)->pageSize))+1)
#define pager_pagehash (  )     0
#define PAGER_RESERVED   2
#define PAGER_SHARED   1
#define PAGER_SYNCED   5
#define PAGER_UNLOCK   0
#define PAGERID (  )     ((int)(p->fd))
#define PAGERTRACE1 (  ) 

Definition at line 37 of file pager.c.

#define PAGERTRACE2 ( X,
 ) 
#define PAGERTRACE3 ( X,
Y,
 ) 
#define PAGERTRACE4 ( X,
Y,
Z,
 ) 
#define PAGERTRACE5 ( X,
Y,
Z,
W,
 ) 

Definition at line 41 of file pager.c.

Referenced by pager_write(), and sqlite3PagerMovepage().

#define put32bits ( A,
 )     sqlite3Put4byte((u8*)A,B)
#define SQLITE_BUSY_RESERVED_LOCK   0

Definition at line 123 of file pager.c.


Function Documentation

static int hasHotJournal ( Pager pPager,
int *  pExists 
) [static]
static void makeClean ( PgHdr pPg  )  [static]

Definition at line 3113 of file pager.c.

References sqlite3PcacheMakeClean().

Referenced by pager_playback_one_page().

static void makeDirty ( PgHdr pPg  )  [static]

Definition at line 3105 of file pager.c.

References sqlite3PcacheMakeDirty().

Referenced by pager_write(), and sqlite3PagerMovepage().

static int osUnlock ( sqlite3_file pFd,
int  eLock 
) [static]

Definition at line 349 of file pager.c.

References sqlite3_file::pMethods, sqlite3OsUnlock(), and SQLITE_OK.

Referenced by pager_end_transaction(), and pager_unlock().

static int pageInStatement ( PgHdr pPg  )  [static]

Definition at line 310 of file pager.c.

References PgHdr::pgno, Pager::pInStmt, PgHdr::pPager, and sqlite3BitvecTest().

Referenced by pager_write().

static u32 pager_cksum ( Pager pPager,
const u8 aData 
) [static]

Definition at line 1051 of file pager.c.

References Pager::cksumInit, and Pager::pageSize.

Referenced by pager_playback_one_page(), and pager_write().

static int pager_delmaster ( Pager pPager,
const char *  zMaster 
) [static]
static int pager_end_transaction ( Pager pPager,
int  hasMaster 
) [static]
static int pager_error ( Pager pPager,
int  rc 
) [static]
static int pager_get_content ( PgHdr pPg  )  [static]
static int pager_incr_changecounter ( Pager pPager,
int  isDirect 
) [static]
static PgHdr* pager_lookup ( Pager pPager,
Pgno  pgno 
) [static]

Definition at line 856 of file pager.c.

References Pager::pPCache, and sqlite3PcacheFetch().

Referenced by pager_playback_one_page(), sqlite3PagerMovepage(), and sqlite3PagerWrite().

static int pager_open_journal ( Pager pPager  )  [static]
static int pager_playback ( Pager pPager,
int  isHot 
) [static]
static int pager_playback_one_page ( Pager pPager,
sqlite3_file jfd,
i64  offset,
int  isMainJrnl 
) [static]
static void pager_reset ( Pager pPager  )  [static]
static int pager_stmt_playback ( Pager pPager  )  [static]
static int pager_truncate ( Pager pPager,
int  nPage 
) [static]
static void pager_truncate_cache ( Pager pPager  )  [static]

Definition at line 2137 of file pager.c.

References Pager::dbSize, Pager::pPCache, and sqlite3PcacheTruncate().

Referenced by pager_truncate().

static void pager_unlock ( Pager pPager  )  [static]
static int pager_wait_on_lock ( Pager pPager,
int  locktype 
) [static]
static int pager_write ( PgHdr pPg  )  [static]
static int pager_write_pagelist ( PgHdr pList  )  [static]
static void pagerDropPage ( DbPage pPg  )  [static]

Definition at line 2770 of file pager.c.

References pagerUnlockIfUnused(), PgHdr::pPager, and sqlite3PcacheDrop().

Referenced by sqlite3PagerAcquire().

static int pagerSharedLock ( Pager pPager  )  [static]
static int pagerStmtBegin ( Pager pPager  )  [static]
static int pagerStress ( void *  p,
PgHdr pPg 
) [static]
static void pagerUnlockAndRollback ( Pager p  )  [static]
static void pagerUnlockIfUnused ( Pager pPager  )  [static]
static int read32bits ( sqlite3_file fd,
i64  offset,
u32 pRes 
) [static]

Definition at line 322 of file pager.c.

References sqlite3Get4byte(), sqlite3OsRead(), and SQLITE_OK.

Referenced by pager_playback_one_page(), readJournalHdr(), and readMasterJournal().

static int readDbPage ( Pager pPager,
PgHdr pPg,
Pgno  pgno 
) [static]
static int readJournalHdr ( Pager pPager,
i64  journalSize,
u32 pNRec,
u32 pDbSize 
) [static]
static int readMasterJournal ( sqlite3_file pJrnl,
char *  zMaster,
int  nMaster 
) [static]

Definition at line 494 of file pager.c.

References aJournalMagic, read32bits(), sqlite3OsFileSize(), sqlite3OsRead(), and SQLITE_OK.

Referenced by pager_delmaster(), and pager_playback().

static void seekJournalHdr ( Pager pPager  )  [static]

Definition at line 557 of file pager.c.

References JOURNAL_HDR_SZ, and Pager::journalOff.

Referenced by readJournalHdr(), writeJournalHdr(), and writeMasterJournal().

static void setSectorSize ( Pager pPager  )  [static]
int sqlite3PagerAcquire ( Pager pPager,
Pgno  pgno,
DbPage **  ppPage,
int  noContent 
)
int sqlite3PagerBegin ( DbPage pPg,
int  exFlag 
)
int sqlite3PagerClose ( Pager pPager  ) 
int sqlite3PagerCommitPhaseOne ( Pager pPager,
const char *  zMaster,
Pgno  nTrunc,
int  noSync 
)
int sqlite3PagerCommitPhaseTwo ( Pager pPager  ) 
const char* sqlite3PagerDirname ( Pager pPager  ) 

Definition at line 4003 of file pager.c.

References Pager::zDirectory.

Referenced by sqlite3BtreeGetDirname().

void sqlite3PagerDontRollback ( DbPage pPg  ) 
int sqlite3PagerDontWrite ( DbPage pDbPage  ) 
sqlite3_file* sqlite3PagerFile ( Pager pPager  ) 

Definition at line 3996 of file pager.c.

References Pager::fd.

Referenced by btreeCopyFile(), sqlite3_file_control(), and sqlite3RunVacuum().

const char* sqlite3PagerFilename ( Pager pPager  ) 

Definition at line 3980 of file pager.c.

References Pager::zFilename.

Referenced by sqlite3BtreeGetFilename(), and sqlite3BtreeOpen().

void* sqlite3PagerGetData ( DbPage pPg  ) 
void* sqlite3PagerGetExtra ( DbPage pPg  ) 
int sqlite3PagerIsreadonly ( Pager pPager  ) 

Definition at line 3845 of file pager.c.

References Pager::readOnly.

Referenced by sqlite3BtreeOpen().

int sqlite3PagerJournalMode ( Pager pPager,
int  eMode 
)
const char* sqlite3PagerJournalname ( Pager pPager  ) 

Definition at line 4010 of file pager.c.

References Pager::zJournal.

Referenced by sqlite3BtreeGetJournalname().

i64 sqlite3PagerJournalSizeLimit ( Pager pPager,
i64  iLimit 
)

Definition at line 4225 of file pager.c.

References Pager::journalSizeLimit.

Referenced by sqlite3Pragma().

int sqlite3PagerLockingMode ( Pager pPager,
int  eMode 
)
DbPage* sqlite3PagerLookup ( Pager pPager,
Pgno  pgno 
)
int sqlite3PagerMaxPageCount ( Pager pPager,
int  mxPage 
)

Definition at line 2017 of file pager.c.

References Pager::mxPgno, and sqlite3PagerPagecount().

Referenced by sqlite3BtreeMaxPageCount().

int sqlite3PagerMovepage ( Pager pPager,
DbPage pPg,
Pgno  pgno,
int  isCommit 
)
int sqlite3PagerNosync ( Pager pPager  ) 

Definition at line 4018 of file pager.c.

References Pager::noSync.

Referenced by sqlite3BtreeSyncDisabled().

int sqlite3PagerOpen ( sqlite3_vfs pVfs,
Pager **  ppPager,
const char *  zFilename,
int  nExtra,
int  flags,
int  vfsFlags 
)
static int sqlite3PagerOpentemp ( Pager pPager,
sqlite3_file pFile,
int  vfsFlags 
) [static]
int sqlite3PagerPagecount ( Pager pPager,
int *  pnPage 
)
int sqlite3PagerPageRefcount ( DbPage pPage  ) 

Definition at line 3859 of file pager.c.

References sqlite3PcachePageRefcount().

Referenced by allocateBtreePage(), and pageReinit().

int sqlite3PagerReadFileheader ( Pager pPager,
int  N,
unsigned char *  pDest 
)
int sqlite3PagerRef ( DbPage pPg  ) 

Definition at line 2261 of file pager.c.

References sqlite3PcacheRef(), and SQLITE_OK.

Referenced by sqlite3BtreeGetTempCursor().

int sqlite3PagerRefcount ( Pager pPager  ) 
int sqlite3PagerRollback ( Pager pPager  ) 
void sqlite3PagerSetBusyhandler ( Pager pPager,
BusyHandler pBusyHandler 
)

Definition at line 1952 of file pager.c.

References Pager::pBusyHandler.

Referenced by sqlite3BtreeOpen().

void sqlite3PagerSetCachesize ( Pager pPager,
int  mxPage 
)

Definition at line 1643 of file pager.c.

References Pager::pPCache, and sqlite3PcacheSetCachesize().

Referenced by sqlite3BtreeSetCacheSize().

int sqlite3PagerSetPagesize ( Pager pPager,
u16 pPageSize 
)
void sqlite3PagerSetReiniter ( Pager pPager,
void(*)(DbPage *)  xReinit 
)

Definition at line 1963 of file pager.c.

References Pager::xReiniter.

Referenced by sqlite3BtreeOpen().

void sqlite3PagerSetSafetyLevel ( Pager pPager,
int  level,
int  bFullFsync 
)
int sqlite3PagerStmtBegin ( Pager pPager  ) 

Definition at line 3937 of file pager.c.

References pagerStmtBegin().

Referenced by pager_open_journal(), and sqlite3BtreeBeginStmt().

int sqlite3PagerStmtCommit ( Pager pPager  ) 
int sqlite3PagerStmtRollback ( Pager pPager  ) 
int sqlite3PagerSync ( Pager pPager  ) 

Definition at line 3576 of file pager.c.

References Pager::fd, MEMDB, sqlite3OsSync(), SQLITE_OK, and Pager::sync_flags.

Referenced by btreeCopyFile().

void* sqlite3PagerTempSpace ( Pager pPager  ) 

Definition at line 2006 of file pager.c.

References Pager::pTmpSpace.

Referenced by defragmentPage().

int sqlite3PagerTruncate ( Pager pPager,
Pgno  nPage 
)
int sqlite3PagerUnref ( DbPage pPg  ) 
const sqlite3_vfs* sqlite3PagerVfs ( Pager pPager  ) 

Definition at line 3987 of file pager.c.

References Pager::pVfs.

Referenced by sqlite3BtreeOpen().

int sqlite3PagerWrite ( DbPage pDbPage  ) 
static int syncJournal ( Pager pPager  )  [static]
static int write32bits ( sqlite3_file fd,
i64  offset,
u32  val 
) [static]

Definition at line 340 of file pager.c.

References put32bits, and sqlite3OsWrite().

Referenced by pager_write(), sqlite3PagerCommitPhaseOne(), syncJournal(), and writeMasterJournal().

static int writeJournalHdr ( Pager pPager  )  [static]
static int writeMasterJournal ( Pager pPager,
const char *  zMaster 
) [static]
static int zeroJournalHdr ( Pager pPager,
int  doTruncate 
) [static]

Variable Documentation

const unsigned char aJournalMagic[] [static]
Initial value:
 {
  0xd9, 0xd5, 0x05, 0xf9, 0x20, 0xa1, 0x63, 0xd7,
}

Definition at line 261 of file pager.c.

Referenced by readJournalHdr(), readMasterJournal(), sqlite3PagerCommitPhaseOne(), syncJournal(), writeJournalHdr(), and writeMasterJournal().


ContextLogger2—ContextLogger2 Logger Daemon Internals—Generated on Mon May 2 13:50:01 2011 by Doxygen 1.6.1