Annotation of embedaddon/sqlite3/src/pager.h, revision 1.1

1.1     ! misho       1: /*
        !             2: ** 2001 September 15
        !             3: **
        !             4: ** The author disclaims copyright to this source code.  In place of
        !             5: ** a legal notice, here is a blessing:
        !             6: **
        !             7: **    May you do good and not evil.
        !             8: **    May you find forgiveness for yourself and forgive others.
        !             9: **    May you share freely, never taking more than you give.
        !            10: **
        !            11: *************************************************************************
        !            12: ** This header file defines the interface that the sqlite page cache
        !            13: ** subsystem.  The page cache subsystem reads and writes a file a page
        !            14: ** at a time and provides a journal for rollback.
        !            15: */
        !            16: 
        !            17: #ifndef _PAGER_H_
        !            18: #define _PAGER_H_
        !            19: 
        !            20: /*
        !            21: ** Default maximum size for persistent journal files. A negative 
        !            22: ** value means no limit. This value may be overridden using the 
        !            23: ** sqlite3PagerJournalSizeLimit() API. See also "PRAGMA journal_size_limit".
        !            24: */
        !            25: #ifndef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
        !            26:   #define SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT -1
        !            27: #endif
        !            28: 
        !            29: /*
        !            30: ** The type used to represent a page number.  The first page in a file
        !            31: ** is called page 1.  0 is used to represent "not a page".
        !            32: */
        !            33: typedef u32 Pgno;
        !            34: 
        !            35: /*
        !            36: ** Each open file is managed by a separate instance of the "Pager" structure.
        !            37: */
        !            38: typedef struct Pager Pager;
        !            39: 
        !            40: /*
        !            41: ** Handle type for pages.
        !            42: */
        !            43: typedef struct PgHdr DbPage;
        !            44: 
        !            45: /*
        !            46: ** Page number PAGER_MJ_PGNO is never used in an SQLite database (it is
        !            47: ** reserved for working around a windows/posix incompatibility). It is
        !            48: ** used in the journal to signify that the remainder of the journal file 
        !            49: ** is devoted to storing a master journal name - there are no more pages to
        !            50: ** roll back. See comments for function writeMasterJournal() in pager.c 
        !            51: ** for details.
        !            52: */
        !            53: #define PAGER_MJ_PGNO(x) ((Pgno)((PENDING_BYTE/((x)->pageSize))+1))
        !            54: 
        !            55: /*
        !            56: ** Allowed values for the flags parameter to sqlite3PagerOpen().
        !            57: **
        !            58: ** NOTE: These values must match the corresponding BTREE_ values in btree.h.
        !            59: */
        !            60: #define PAGER_OMIT_JOURNAL  0x0001    /* Do not use a rollback journal */
        !            61: #define PAGER_NO_READLOCK   0x0002    /* Omit readlocks on readonly files */
        !            62: #define PAGER_MEMORY        0x0004    /* In-memory database */
        !            63: 
        !            64: /*
        !            65: ** Valid values for the second argument to sqlite3PagerLockingMode().
        !            66: */
        !            67: #define PAGER_LOCKINGMODE_QUERY      -1
        !            68: #define PAGER_LOCKINGMODE_NORMAL      0
        !            69: #define PAGER_LOCKINGMODE_EXCLUSIVE   1
        !            70: 
        !            71: /*
        !            72: ** Numeric constants that encode the journalmode.  
        !            73: */
        !            74: #define PAGER_JOURNALMODE_QUERY     (-1)  /* Query the value of journalmode */
        !            75: #define PAGER_JOURNALMODE_DELETE      0   /* Commit by deleting journal file */
        !            76: #define PAGER_JOURNALMODE_PERSIST     1   /* Commit by zeroing journal header */
        !            77: #define PAGER_JOURNALMODE_OFF         2   /* Journal omitted.  */
        !            78: #define PAGER_JOURNALMODE_TRUNCATE    3   /* Commit by truncating journal */
        !            79: #define PAGER_JOURNALMODE_MEMORY      4   /* In-memory journal file */
        !            80: #define PAGER_JOURNALMODE_WAL         5   /* Use write-ahead logging */
        !            81: 
        !            82: /*
        !            83: ** The remainder of this file contains the declarations of the functions
        !            84: ** that make up the Pager sub-system API. See source code comments for 
        !            85: ** a detailed description of each routine.
        !            86: */
        !            87: 
        !            88: /* Open and close a Pager connection. */ 
        !            89: int sqlite3PagerOpen(
        !            90:   sqlite3_vfs*,
        !            91:   Pager **ppPager,
        !            92:   const char*,
        !            93:   int,
        !            94:   int,
        !            95:   int,
        !            96:   void(*)(DbPage*)
        !            97: );
        !            98: int sqlite3PagerClose(Pager *pPager);
        !            99: int sqlite3PagerReadFileheader(Pager*, int, unsigned char*);
        !           100: 
        !           101: /* Functions used to configure a Pager object. */
        !           102: void sqlite3PagerSetBusyhandler(Pager*, int(*)(void *), void *);
        !           103: int sqlite3PagerSetPagesize(Pager*, u32*, int);
        !           104: int sqlite3PagerMaxPageCount(Pager*, int);
        !           105: void sqlite3PagerSetCachesize(Pager*, int);
        !           106: void sqlite3PagerShrink(Pager*);
        !           107: void sqlite3PagerSetSafetyLevel(Pager*,int,int,int);
        !           108: int sqlite3PagerLockingMode(Pager *, int);
        !           109: int sqlite3PagerSetJournalMode(Pager *, int);
        !           110: int sqlite3PagerGetJournalMode(Pager*);
        !           111: int sqlite3PagerOkToChangeJournalMode(Pager*);
        !           112: i64 sqlite3PagerJournalSizeLimit(Pager *, i64);
        !           113: sqlite3_backup **sqlite3PagerBackupPtr(Pager*);
        !           114: 
        !           115: /* Functions used to obtain and release page references. */ 
        !           116: int sqlite3PagerAcquire(Pager *pPager, Pgno pgno, DbPage **ppPage, int clrFlag);
        !           117: #define sqlite3PagerGet(A,B,C) sqlite3PagerAcquire(A,B,C,0)
        !           118: DbPage *sqlite3PagerLookup(Pager *pPager, Pgno pgno);
        !           119: void sqlite3PagerRef(DbPage*);
        !           120: void sqlite3PagerUnref(DbPage*);
        !           121: 
        !           122: /* Operations on page references. */
        !           123: int sqlite3PagerWrite(DbPage*);
        !           124: void sqlite3PagerDontWrite(DbPage*);
        !           125: int sqlite3PagerMovepage(Pager*,DbPage*,Pgno,int);
        !           126: int sqlite3PagerPageRefcount(DbPage*);
        !           127: void *sqlite3PagerGetData(DbPage *); 
        !           128: void *sqlite3PagerGetExtra(DbPage *); 
        !           129: 
        !           130: /* Functions used to manage pager transactions and savepoints. */
        !           131: void sqlite3PagerPagecount(Pager*, int*);
        !           132: int sqlite3PagerBegin(Pager*, int exFlag, int);
        !           133: int sqlite3PagerCommitPhaseOne(Pager*,const char *zMaster, int);
        !           134: int sqlite3PagerExclusiveLock(Pager*);
        !           135: int sqlite3PagerSync(Pager *pPager);
        !           136: int sqlite3PagerCommitPhaseTwo(Pager*);
        !           137: int sqlite3PagerRollback(Pager*);
        !           138: int sqlite3PagerOpenSavepoint(Pager *pPager, int n);
        !           139: int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint);
        !           140: int sqlite3PagerSharedLock(Pager *pPager);
        !           141: 
        !           142: int sqlite3PagerCheckpoint(Pager *pPager, int, int*, int*);
        !           143: int sqlite3PagerWalSupported(Pager *pPager);
        !           144: int sqlite3PagerWalCallback(Pager *pPager);
        !           145: int sqlite3PagerOpenWal(Pager *pPager, int *pisOpen);
        !           146: int sqlite3PagerCloseWal(Pager *pPager);
        !           147: 
        !           148: /* Functions used to query pager state and configuration. */
        !           149: u8 sqlite3PagerIsreadonly(Pager*);
        !           150: int sqlite3PagerRefcount(Pager*);
        !           151: int sqlite3PagerMemUsed(Pager*);
        !           152: const char *sqlite3PagerFilename(Pager*);
        !           153: const sqlite3_vfs *sqlite3PagerVfs(Pager*);
        !           154: sqlite3_file *sqlite3PagerFile(Pager*);
        !           155: const char *sqlite3PagerJournalname(Pager*);
        !           156: int sqlite3PagerNosync(Pager*);
        !           157: void *sqlite3PagerTempSpace(Pager*);
        !           158: int sqlite3PagerIsMemdb(Pager*);
        !           159: void sqlite3PagerCacheStat(Pager *, int, int, int *);
        !           160: void sqlite3PagerClearCache(Pager *);
        !           161: 
        !           162: /* Functions used to truncate the database file. */
        !           163: void sqlite3PagerTruncateImage(Pager*,Pgno);
        !           164: 
        !           165: #if defined(SQLITE_HAS_CODEC) && !defined(SQLITE_OMIT_WAL)
        !           166: void *sqlite3PagerCodec(DbPage *);
        !           167: #endif
        !           168: 
        !           169: /* Functions to support testing and debugging. */
        !           170: #if !defined(NDEBUG) || defined(SQLITE_TEST)
        !           171:   Pgno sqlite3PagerPagenumber(DbPage*);
        !           172:   int sqlite3PagerIswriteable(DbPage*);
        !           173: #endif
        !           174: #ifdef SQLITE_TEST
        !           175:   int *sqlite3PagerStats(Pager*);
        !           176:   void sqlite3PagerRefdump(Pager*);
        !           177:   void disable_simulated_io_errors(void);
        !           178:   void enable_simulated_io_errors(void);
        !           179: #else
        !           180: # define disable_simulated_io_errors()
        !           181: # define enable_simulated_io_errors()
        !           182: #endif
        !           183: 
        !           184: #endif /* _PAGER_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>