1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2012, 2013 Oracle and/or its affiliates.  All rights reserved.
5  */
6 
7 #include <db.h>
8 
9 /* Avoid a name clash */
10 #undef DB_TIMEOUT
11 
12 typedef struct Pager Pager;
13 typedef struct PgHdr DbPage;
14 typedef db_pgno_t Pgno;
15 
16 /*
17 ** Allowed values for the flags parameter to sqlite3PagerOpen().
18 **
19 ** NOTE: These values must match the corresponding BTREE_ values in btree.h.
20 */
21 #define	PAGER_OMIT_JOURNAL  0x0001    /* Do not use a rollback journal */
22 #define	PAGER_NO_READLOCK   0x0002    /* Omit readlocks on readonly files */
23 
24 /*
25 ** Valid values for the second argument to sqlite3PagerLockingMode().
26 */
27 #define	PAGER_LOCKINGMODE_QUERY      -1
28 #define	PAGER_LOCKINGMODE_NORMAL      0
29 #define	PAGER_LOCKINGMODE_EXCLUSIVE   1
30 
31 /*
32 ** Valid values for the second argument to sqlite3PagerJournalMode().
33 */
34 #define	PAGER_JOURNALMODE_QUERY      -1
35 #define	PAGER_JOURNALMODE_DELETE      0   /* Commit by deleting journal file */
36 #define	PAGER_JOURNALMODE_PERSIST     1   /* Commit by zeroing journal header */
37 #define	PAGER_JOURNALMODE_OFF         2   /* Journal omitted.  */
38 #define	PAGER_JOURNALMODE_TRUNCATE    3   /* Commit by truncating journal */
39 #define	PAGER_JOURNALMODE_MEMORY      4   /* In-memory journal file */
40 #define	PAGER_JOURNALMODE_WAL         5   /* Use write-ahead logging */
41 
42 /*
43 ** Default maximum size for log files. This value may be overridden using the
44 ** sqlite3PagerJournalSizeLimit() API. See also "PRAGMA journal_size_limit".
45 */
46 #ifndef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
47   #define SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT 2 * 1024 * 1024
48 #endif
49 
50 int sqlite3PagerExclusiveLock(Pager *pPager);
51 sqlite3_file *sqlite3PagerFile(Pager*);
52 const char *sqlite3PagerFilename(Pager *pPager);
53 int sqlite3PagerGetJournalMode(Pager *pPager);
54 int sqlite3PagerIsMemdb(Pager*);
55 int sqlite3PagerJournalMode(Pager *, int);
56 i64 sqlite3PagerJournalSizeLimit(Pager *, i64);
57 int sqlite3PagerLockingMode(Pager *, int);
58 int sqlite3PagerMemUsed(Pager *pPager);
59 int sqlite3PagerOkToChangeJournalMode(Pager *pPager);
60 int sqlite3PagerPagecount(Pager*, int*);
61 int sqlite3PagerSetJournalMode(Pager *pPager, int eMode);
62 
63 #ifndef SQLITE_OMIT_WAL
64 int sqlite3PagerWalCallback(Pager *pPager);
65 int sqlite3PagerCheckpoint(Pager *pPager);
66 int sqlite3PagerCloseWal(Pager *pPager);
67 int sqlite3PagerWalSupported(Pager *pPager);
68 #endif
69 
70 #define	disable_simulated_io_errors()
71 #define	enable_simulated_io_errors()
72 #ifdef SQLITE_TEST
73 int *sqlite3PagerStats(Pager*);
74 #endif
75