1: /*
2: ** 2007 May 7
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: **
13: ** This file defines various limits of what SQLite can process.
14: */
15:
16: /*
17: ** The maximum length of a TEXT or BLOB in bytes. This also
18: ** limits the size of a row in a table or index.
19: **
20: ** The hard limit is the ability of a 32-bit signed integer
21: ** to count the size: 2^31-1 or 2147483647.
22: */
23: #ifndef SQLITE_MAX_LENGTH
24: # define SQLITE_MAX_LENGTH 1000000000
25: #endif
26:
27: /*
28: ** This is the maximum number of
29: **
30: ** * Columns in a table
31: ** * Columns in an index
32: ** * Columns in a view
33: ** * Terms in the SET clause of an UPDATE statement
34: ** * Terms in the result set of a SELECT statement
35: ** * Terms in the GROUP BY or ORDER BY clauses of a SELECT statement.
36: ** * Terms in the VALUES clause of an INSERT statement
37: **
38: ** The hard upper limit here is 32676. Most database people will
39: ** tell you that in a well-normalized database, you usually should
40: ** not have more than a dozen or so columns in any table. And if
41: ** that is the case, there is no point in having more than a few
42: ** dozen values in any of the other situations described above.
43: */
44: #ifndef SQLITE_MAX_COLUMN
45: # define SQLITE_MAX_COLUMN 2000
46: #endif
47:
48: /*
49: ** The maximum length of a single SQL statement in bytes.
50: **
51: ** It used to be the case that setting this value to zero would
52: ** turn the limit off. That is no longer true. It is not possible
53: ** to turn this limit off.
54: */
55: #ifndef SQLITE_MAX_SQL_LENGTH
56: # define SQLITE_MAX_SQL_LENGTH 1000000000
57: #endif
58:
59: /*
60: ** The maximum depth of an expression tree. This is limited to
61: ** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might
62: ** want to place more severe limits on the complexity of an
63: ** expression.
64: **
65: ** A value of 0 used to mean that the limit was not enforced.
66: ** But that is no longer true. The limit is now strictly enforced
67: ** at all times.
68: */
69: #ifndef SQLITE_MAX_EXPR_DEPTH
70: # define SQLITE_MAX_EXPR_DEPTH 1000
71: #endif
72:
73: /*
74: ** The maximum number of terms in a compound SELECT statement.
75: ** The code generator for compound SELECT statements does one
76: ** level of recursion for each term. A stack overflow can result
77: ** if the number of terms is too large. In practice, most SQL
78: ** never has more than 3 or 4 terms. Use a value of 0 to disable
79: ** any limit on the number of terms in a compount SELECT.
80: */
81: #ifndef SQLITE_MAX_COMPOUND_SELECT
82: # define SQLITE_MAX_COMPOUND_SELECT 500
83: #endif
84:
85: /*
86: ** The maximum number of opcodes in a VDBE program.
87: ** Not currently enforced.
88: */
89: #ifndef SQLITE_MAX_VDBE_OP
90: # define SQLITE_MAX_VDBE_OP 25000
91: #endif
92:
93: /*
94: ** The maximum number of arguments to an SQL function.
95: */
96: #ifndef SQLITE_MAX_FUNCTION_ARG
97: # define SQLITE_MAX_FUNCTION_ARG 127
98: #endif
99:
100: /*
101: ** The maximum number of in-memory pages to use for the main database
102: ** table and for temporary tables. The SQLITE_DEFAULT_CACHE_SIZE
103: */
104: #ifndef SQLITE_DEFAULT_CACHE_SIZE
105: # define SQLITE_DEFAULT_CACHE_SIZE 2000
106: #endif
107: #ifndef SQLITE_DEFAULT_TEMP_CACHE_SIZE
108: # define SQLITE_DEFAULT_TEMP_CACHE_SIZE 500
109: #endif
110:
111: /*
112: ** The default number of frames to accumulate in the log file before
113: ** checkpointing the database in WAL mode.
114: */
115: #ifndef SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
116: # define SQLITE_DEFAULT_WAL_AUTOCHECKPOINT 1000
117: #endif
118:
119: /*
120: ** The maximum number of attached databases. This must be between 0
121: ** and 62. The upper bound on 62 is because a 64-bit integer bitmap
122: ** is used internally to track attached databases.
123: */
124: #ifndef SQLITE_MAX_ATTACHED
125: # define SQLITE_MAX_ATTACHED 10
126: #endif
127:
128:
129: /*
130: ** The maximum value of a ?nnn wildcard that the parser will accept.
131: */
132: #ifndef SQLITE_MAX_VARIABLE_NUMBER
133: # define SQLITE_MAX_VARIABLE_NUMBER 999
134: #endif
135:
136: /* Maximum page size. The upper bound on this value is 65536. This a limit
137: ** imposed by the use of 16-bit offsets within each page.
138: **
139: ** Earlier versions of SQLite allowed the user to change this value at
140: ** compile time. This is no longer permitted, on the grounds that it creates
141: ** a library that is technically incompatible with an SQLite library
142: ** compiled with a different limit. If a process operating on a database
143: ** with a page-size of 65536 bytes crashes, then an instance of SQLite
144: ** compiled with the default page-size limit will not be able to rollback
145: ** the aborted transaction. This could lead to database corruption.
146: */
147: #ifdef SQLITE_MAX_PAGE_SIZE
148: # undef SQLITE_MAX_PAGE_SIZE
149: #endif
150: #define SQLITE_MAX_PAGE_SIZE 65536
151:
152:
153: /*
154: ** The default size of a database page.
155: */
156: #ifndef SQLITE_DEFAULT_PAGE_SIZE
157: # define SQLITE_DEFAULT_PAGE_SIZE 1024
158: #endif
159: #if SQLITE_DEFAULT_PAGE_SIZE>SQLITE_MAX_PAGE_SIZE
160: # undef SQLITE_DEFAULT_PAGE_SIZE
161: # define SQLITE_DEFAULT_PAGE_SIZE SQLITE_MAX_PAGE_SIZE
162: #endif
163:
164: /*
165: ** Ordinarily, if no value is explicitly provided, SQLite creates databases
166: ** with page size SQLITE_DEFAULT_PAGE_SIZE. However, based on certain
167: ** device characteristics (sector-size and atomic write() support),
168: ** SQLite may choose a larger value. This constant is the maximum value
169: ** SQLite will choose on its own.
170: */
171: #ifndef SQLITE_MAX_DEFAULT_PAGE_SIZE
172: # define SQLITE_MAX_DEFAULT_PAGE_SIZE 8192
173: #endif
174: #if SQLITE_MAX_DEFAULT_PAGE_SIZE>SQLITE_MAX_PAGE_SIZE
175: # undef SQLITE_MAX_DEFAULT_PAGE_SIZE
176: # define SQLITE_MAX_DEFAULT_PAGE_SIZE SQLITE_MAX_PAGE_SIZE
177: #endif
178:
179:
180: /*
181: ** Maximum number of pages in one database file.
182: **
183: ** This is really just the default value for the max_page_count pragma.
184: ** This value can be lowered (or raised) at run-time using that the
185: ** max_page_count macro.
186: */
187: #ifndef SQLITE_MAX_PAGE_COUNT
188: # define SQLITE_MAX_PAGE_COUNT 1073741823
189: #endif
190:
191: /*
192: ** Maximum length (in bytes) of the pattern in a LIKE or GLOB
193: ** operator.
194: */
195: #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH
196: # define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000
197: #endif
198:
199: /*
200: ** Maximum depth of recursion for triggers.
201: **
202: ** A value of 1 means that a trigger program will not be able to itself
203: ** fire any triggers. A value of 0 means that no trigger programs at all
204: ** may be executed.
205: */
206: #ifndef SQLITE_MAX_TRIGGER_DEPTH
207: # define SQLITE_MAX_TRIGGER_DEPTH 1000
208: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>