aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/sqlite/win32/btree.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xlibraries/sqlite/win32/btree.h204
1 files changed, 204 insertions, 0 deletions
diff --git a/libraries/sqlite/win32/btree.h b/libraries/sqlite/win32/btree.h
new file mode 100755
index 0000000..f7bc8e1
--- /dev/null
+++ b/libraries/sqlite/win32/btree.h
@@ -0,0 +1,204 @@
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 B-Tree file
13** subsystem. See comments in the source code for a detailed description
14** of what each interface routine does.
15**
16** @(#) $Id: btree.h,v 1.93 2007/09/03 15:19:35 drh Exp $
17*/
18#ifndef _BTREE_H_
19#define _BTREE_H_
20
21/* TODO: This definition is just included so other modules compile. It
22** needs to be revisited.
23*/
24#define SQLITE_N_BTREE_META 10
25
26/*
27** If defined as non-zero, auto-vacuum is enabled by default. Otherwise
28** it must be turned on for each database using "PRAGMA auto_vacuum = 1".
29*/
30#ifndef SQLITE_DEFAULT_AUTOVACUUM
31 #define SQLITE_DEFAULT_AUTOVACUUM 0
32#endif
33
34#define BTREE_AUTOVACUUM_NONE 0 /* Do not do auto-vacuum */
35#define BTREE_AUTOVACUUM_FULL 1 /* Do full auto-vacuum */
36#define BTREE_AUTOVACUUM_INCR 2 /* Incremental vacuum */
37
38/*
39** Forward declarations of structure
40*/
41typedef struct Btree Btree;
42typedef struct BtCursor BtCursor;
43typedef struct BtShared BtShared;
44typedef struct BtreeMutexArray BtreeMutexArray;
45
46/*
47** This structure records all of the Btrees that need to hold
48** a mutex before we enter sqlite3VdbeExec(). The Btrees are
49** are placed in aBtree[] in order of aBtree[]->pBt. That way,
50** we can always lock and unlock them all quickly.
51*/
52struct BtreeMutexArray {
53 int nMutex;
54 Btree *aBtree[SQLITE_MAX_ATTACHED+1];
55};
56
57
58int sqlite3BtreeOpen(
59 const char *zFilename, /* Name of database file to open */
60 sqlite3 *db, /* Associated database connection */
61 Btree **, /* Return open Btree* here */
62 int flags, /* Flags */
63 int vfsFlags /* Flags passed through to VFS open */
64);
65
66/* The flags parameter to sqlite3BtreeOpen can be the bitwise or of the
67** following values.
68**
69** NOTE: These values must match the corresponding PAGER_ values in
70** pager.h.
71*/
72#define BTREE_OMIT_JOURNAL 1 /* Do not use journal. No argument */
73#define BTREE_NO_READLOCK 2 /* Omit readlocks on readonly files */
74#define BTREE_MEMORY 4 /* In-memory DB. No argument */
75#define BTREE_READONLY 8 /* Open the database in read-only mode */
76#define BTREE_READWRITE 16 /* Open for both reading and writing */
77#define BTREE_CREATE 32 /* Create the database if it does not exist */
78
79/* Additional values for the 4th argument of sqlite3BtreeOpen that
80** are not associated with PAGER_ values.
81*/
82#define BTREE_PRIVATE 64 /* Never share with other connections */
83
84int sqlite3BtreeClose(Btree*);
85int sqlite3BtreeSetBusyHandler(Btree*,BusyHandler*);
86int sqlite3BtreeSetCacheSize(Btree*,int);
87int sqlite3BtreeSetSafetyLevel(Btree*,int,int);
88int sqlite3BtreeSyncDisabled(Btree*);
89int sqlite3BtreeSetPageSize(Btree*,int,int);
90int sqlite3BtreeGetPageSize(Btree*);
91int sqlite3BtreeMaxPageCount(Btree*,int);
92int sqlite3BtreeGetReserve(Btree*);
93int sqlite3BtreeSetAutoVacuum(Btree *, int);
94int sqlite3BtreeGetAutoVacuum(Btree *);
95int sqlite3BtreeBeginTrans(Btree*,int);
96int sqlite3BtreeCommitPhaseOne(Btree*, const char *zMaster);
97int sqlite3BtreeCommitPhaseTwo(Btree*);
98int sqlite3BtreeCommit(Btree*);
99int sqlite3BtreeRollback(Btree*);
100int sqlite3BtreeBeginStmt(Btree*);
101int sqlite3BtreeCommitStmt(Btree*);
102int sqlite3BtreeRollbackStmt(Btree*);
103int sqlite3BtreeCreateTable(Btree*, int*, int flags);
104int sqlite3BtreeIsInTrans(Btree*);
105int sqlite3BtreeIsInStmt(Btree*);
106int sqlite3BtreeIsInReadTrans(Btree*);
107void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
108int sqlite3BtreeSchemaLocked(Btree *);
109int sqlite3BtreeLockTable(Btree *, int, u8);
110
111const char *sqlite3BtreeGetFilename(Btree *);
112const char *sqlite3BtreeGetDirname(Btree *);
113const char *sqlite3BtreeGetJournalname(Btree *);
114int sqlite3BtreeCopyFile(Btree *, Btree *);
115
116int sqlite3BtreeIncrVacuum(Btree *);
117
118/* The flags parameter to sqlite3BtreeCreateTable can be the bitwise OR
119** of the following flags:
120*/
121#define BTREE_INTKEY 1 /* Table has only 64-bit signed integer keys */
122#define BTREE_ZERODATA 2 /* Table has keys only - no data */
123#define BTREE_LEAFDATA 4 /* Data stored in leaves only. Implies INTKEY */
124
125int sqlite3BtreeDropTable(Btree*, int, int*);
126int sqlite3BtreeClearTable(Btree*, int);
127int sqlite3BtreeGetMeta(Btree*, int idx, u32 *pValue);
128int sqlite3BtreeUpdateMeta(Btree*, int idx, u32 value);
129void sqlite3BtreeTripAllCursors(Btree*, int);
130
131int sqlite3BtreeCursor(
132 Btree*, /* BTree containing table to open */
133 int iTable, /* Index of root page */
134 int wrFlag, /* 1 for writing. 0 for read-only */
135 int(*)(void*,int,const void*,int,const void*), /* Key comparison function */
136 void*, /* First argument to compare function */
137 BtCursor **ppCursor /* Returned cursor */
138);
139
140int sqlite3BtreeCloseCursor(BtCursor*);
141int sqlite3BtreeMoveto(BtCursor*,const void *pKey,i64 nKey,int bias,int *pRes);
142int sqlite3BtreeDelete(BtCursor*);
143int sqlite3BtreeInsert(BtCursor*, const void *pKey, i64 nKey,
144 const void *pData, int nData,
145 int nZero, int bias);
146int sqlite3BtreeFirst(BtCursor*, int *pRes);
147int sqlite3BtreeLast(BtCursor*, int *pRes);
148int sqlite3BtreeNext(BtCursor*, int *pRes);
149int sqlite3BtreeEof(BtCursor*);
150int sqlite3BtreeFlags(BtCursor*);
151int sqlite3BtreePrevious(BtCursor*, int *pRes);
152int sqlite3BtreeKeySize(BtCursor*, i64 *pSize);
153int sqlite3BtreeKey(BtCursor*, u32 offset, u32 amt, void*);
154sqlite3 *sqlite3BtreeCursorDb(const BtCursor*);
155const void *sqlite3BtreeKeyFetch(BtCursor*, int *pAmt);
156const void *sqlite3BtreeDataFetch(BtCursor*, int *pAmt);
157int sqlite3BtreeDataSize(BtCursor*, u32 *pSize);
158int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
159
160char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
161struct Pager *sqlite3BtreePager(Btree*);
162
163int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*);
164void sqlite3BtreeCacheOverflow(BtCursor *);
165
166#ifdef SQLITE_TEST
167int sqlite3BtreeCursorInfo(BtCursor*, int*, int);
168void sqlite3BtreeCursorList(Btree*);
169int sqlite3BtreePageDump(Btree*, int, int recursive);
170#endif
171
172/*
173** If we are not using shared cache, then there is no need to
174** use mutexes to access the BtShared structures. So make the
175** Enter and Leave procedures no-ops.
176*/
177#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE
178 void sqlite3BtreeEnter(Btree*);
179 void sqlite3BtreeLeave(Btree*);
180 int sqlite3BtreeHoldsMutex(Btree*);
181 void sqlite3BtreeEnterCursor(BtCursor*);
182 void sqlite3BtreeLeaveCursor(BtCursor*);
183 void sqlite3BtreeEnterAll(sqlite3*);
184 void sqlite3BtreeLeaveAll(sqlite3*);
185 int sqlite3BtreeHoldsAllMutexes(sqlite3*);
186 void sqlite3BtreeMutexArrayEnter(BtreeMutexArray*);
187 void sqlite3BtreeMutexArrayLeave(BtreeMutexArray*);
188 void sqlite3BtreeMutexArrayInsert(BtreeMutexArray*, Btree*);
189#else
190# define sqlite3BtreeEnter(X)
191# define sqlite3BtreeLeave(X)
192# define sqlite3BtreeHoldsMutex(X) 1
193# define sqlite3BtreeEnterCursor(X)
194# define sqlite3BtreeLeaveCursor(X)
195# define sqlite3BtreeEnterAll(X)
196# define sqlite3BtreeLeaveAll(X)
197# define sqlite3BtreeHoldsAllMutexes(X) 1
198# define sqlite3BtreeMutexArrayEnter(X)
199# define sqlite3BtreeMutexArrayLeave(X)
200# define sqlite3BtreeMutexArrayInsert(X,Y)
201#endif
202
203
204#endif /* _BTREE_H_ */