| author | David Anderson <dvander@alliedmods.net> |
| Sun Jul 29 01:15:31 2007 +0000 (2007-07-29) | |
| changeset 1203 | 633c25ce6405 |
| child 1645 | 27307df4d711 |
| permissions | -rw-r--r-- |
| dvander@1203 | 1 |
/* |
| dvander@1203 | 2 |
** 2007 May 7 |
| dvander@1203 | 3 |
** |
| dvander@1203 | 4 |
** The author disclaims copyright to this source code. In place of |
| dvander@1203 | 5 |
** a legal notice, here is a blessing: |
| dvander@1203 | 6 |
** |
| dvander@1203 | 7 |
** May you do good and not evil. |
| dvander@1203 | 8 |
** May you find forgiveness for yourself and forgive others. |
| dvander@1203 | 9 |
** May you share freely, never taking more than you give. |
| dvander@1203 | 10 |
** |
| dvander@1203 | 11 |
************************************************************************* |
| dvander@1203 | 12 |
** |
| dvander@1203 | 13 |
** This file defines various limits of what SQLite can process. |
| dvander@1203 | 14 |
** |
| dvander@1203 | 15 |
** @(#) $Id$ |
| dvander@1203 | 16 |
*/ |
| dvander@1203 | 17 |
|
| dvander@1203 | 18 |
/* |
| dvander@1203 | 19 |
** The maximum length of a TEXT or BLOB in bytes. This also |
| dvander@1203 | 20 |
** limits the size of a row in a table or index. |
| dvander@1203 | 21 |
** |
| dvander@1203 | 22 |
** The hard limit is the ability of a 32-bit signed integer |
| dvander@1203 | 23 |
** to count the size: 2^31-1 or 2147483647. |
| dvander@1203 | 24 |
*/ |
| dvander@1203 | 25 |
#ifndef SQLITE_MAX_LENGTH |
| dvander@1203 | 26 |
# define SQLITE_MAX_LENGTH 1000000000 |
| dvander@1203 | 27 |
#endif |
| dvander@1203 | 28 |
|
| dvander@1203 | 29 |
/* |
| dvander@1203 | 30 |
** This is the maximum number of |
| dvander@1203 | 31 |
** |
| dvander@1203 | 32 |
** * Columns in a table |
| dvander@1203 | 33 |
** * Columns in an index |
| dvander@1203 | 34 |
** * Columns in a view |
| dvander@1203 | 35 |
** * Terms in the SET clause of an UPDATE statement |
| dvander@1203 | 36 |
** * Terms in the result set of a SELECT statement |
| dvander@1203 | 37 |
** * Terms in the GROUP BY or ORDER BY clauses of a SELECT statement. |
| dvander@1203 | 38 |
** * Terms in the VALUES clause of an INSERT statement |
| dvander@1203 | 39 |
** |
| dvander@1203 | 40 |
** The hard upper limit here is 32676. Most database people will |
| dvander@1203 | 41 |
** tell you that in a well-normalized database, you usually should |
| dvander@1203 | 42 |
** not have more than a dozen or so columns in any table. And if |
| dvander@1203 | 43 |
** that is the case, there is no point in having more than a few |
| dvander@1203 | 44 |
** dozen values in any of the other situations described above. |
| dvander@1203 | 45 |
*/ |
| dvander@1203 | 46 |
#ifndef SQLITE_MAX_COLUMN |
| dvander@1203 | 47 |
# define SQLITE_MAX_COLUMN 2000 |
| dvander@1203 | 48 |
#endif |
| dvander@1203 | 49 |
|
| dvander@1203 | 50 |
/* |
| dvander@1203 | 51 |
** The maximum length of a single SQL statement in bytes. |
| dvander@1203 | 52 |
** The hard limit here is the same as SQLITE_MAX_LENGTH. |
| dvander@1203 | 53 |
*/ |
| dvander@1203 | 54 |
#ifndef SQLITE_MAX_SQL_LENGTH |
| dvander@1203 | 55 |
# define SQLITE_MAX_SQL_LENGTH 1000000 |
| dvander@1203 | 56 |
#endif |
| dvander@1203 | 57 |
|
| dvander@1203 | 58 |
/* |
| dvander@1203 | 59 |
** The maximum depth of an expression tree. This is limited to |
| dvander@1203 | 60 |
** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might |
| dvander@1203 | 61 |
** want to place more severe limits on the complexity of an |
| dvander@1203 | 62 |
** expression. A value of 0 (the default) means do not enforce |
| dvander@1203 | 63 |
** any limitation on expression tree depth. |
| dvander@1203 | 64 |
*/ |
| dvander@1203 | 65 |
#ifndef SQLITE_MAX_EXPR_DEPTH |
| dvander@1203 | 66 |
# define SQLITE_MAX_EXPR_DEPTH 1000 |
| dvander@1203 | 67 |
#endif |
| dvander@1203 | 68 |
|
| dvander@1203 | 69 |
/* |
| dvander@1203 | 70 |
** The maximum number of terms in a compound SELECT statement. |
| dvander@1203 | 71 |
** The code generator for compound SELECT statements does one |
| dvander@1203 | 72 |
** level of recursion for each term. A stack overflow can result |
| dvander@1203 | 73 |
** if the number of terms is too large. In practice, most SQL |
| dvander@1203 | 74 |
** never has more than 3 or 4 terms. Use a value of 0 to disable |
| dvander@1203 | 75 |
** any limit on the number of terms in a compount SELECT. |
| dvander@1203 | 76 |
*/ |
| dvander@1203 | 77 |
#ifndef SQLITE_MAX_COMPOUND_SELECT |
| dvander@1203 | 78 |
# define SQLITE_MAX_COMPOUND_SELECT 500 |
| dvander@1203 | 79 |
#endif |
| dvander@1203 | 80 |
|
| dvander@1203 | 81 |
/* |
| dvander@1203 | 82 |
** The maximum number of opcodes in a VDBE program. |
| dvander@1203 | 83 |
** Not currently enforced. |
| dvander@1203 | 84 |
*/ |
| dvander@1203 | 85 |
#ifndef SQLITE_MAX_VDBE_OP |
| dvander@1203 | 86 |
# define SQLITE_MAX_VDBE_OP 25000 |
| dvander@1203 | 87 |
#endif |
| dvander@1203 | 88 |
|
| dvander@1203 | 89 |
/* |
| dvander@1203 | 90 |
** The maximum number of arguments to an SQL function. |
| dvander@1203 | 91 |
*/ |
| dvander@1203 | 92 |
#ifndef SQLITE_MAX_FUNCTION_ARG |
| dvander@1203 | 93 |
# define SQLITE_MAX_FUNCTION_ARG 100 |
| dvander@1203 | 94 |
#endif |
| dvander@1203 | 95 |
|
| dvander@1203 | 96 |
/* |
| dvander@1203 | 97 |
** The maximum number of in-memory pages to use for the main database |
| dvander@1203 | 98 |
** table and for temporary tables. The SQLITE_DEFAULT_CACHE_SIZE |
| dvander@1203 | 99 |
*/ |
| dvander@1203 | 100 |
#ifndef SQLITE_DEFAULT_CACHE_SIZE |
| dvander@1203 | 101 |
# define SQLITE_DEFAULT_CACHE_SIZE 2000 |
| dvander@1203 | 102 |
#endif |
| dvander@1203 | 103 |
#ifndef SQLITE_DEFAULT_TEMP_CACHE_SIZE |
| dvander@1203 | 104 |
# define SQLITE_DEFAULT_TEMP_CACHE_SIZE 500 |
| dvander@1203 | 105 |
#endif |
| dvander@1203 | 106 |
|
| dvander@1203 | 107 |
/* |
| dvander@1203 | 108 |
** The maximum number of attached databases. This must be at least 2 |
| dvander@1203 | 109 |
** in order to support the main database file (0) and the file used to |
| dvander@1203 | 110 |
** hold temporary tables (1). And it must be less than 32 because |
| dvander@1203 | 111 |
** we use a bitmask of databases with a u32 in places (for example |
| dvander@1203 | 112 |
** the Parse.cookieMask field). |
| dvander@1203 | 113 |
*/ |
| dvander@1203 | 114 |
#ifndef SQLITE_MAX_ATTACHED |
| dvander@1203 | 115 |
# define SQLITE_MAX_ATTACHED 10 |
| dvander@1203 | 116 |
#endif |
| dvander@1203 | 117 |
|
| dvander@1203 | 118 |
|
| dvander@1203 | 119 |
/* |
| dvander@1203 | 120 |
** The maximum value of a ?nnn wildcard that the parser will accept. |
| dvander@1203 | 121 |
*/ |
| dvander@1203 | 122 |
#ifndef SQLITE_MAX_VARIABLE_NUMBER |
| dvander@1203 | 123 |
# define SQLITE_MAX_VARIABLE_NUMBER 999 |
| dvander@1203 | 124 |
#endif |
| dvander@1203 | 125 |
|
| dvander@1203 | 126 |
/* |
| dvander@1203 | 127 |
** The default size of a database page. |
| dvander@1203 | 128 |
*/ |
| dvander@1203 | 129 |
#ifndef SQLITE_DEFAULT_PAGE_SIZE |
| dvander@1203 | 130 |
# define SQLITE_DEFAULT_PAGE_SIZE 1024 |
| dvander@1203 | 131 |
#endif |
| dvander@1203 | 132 |
|
| dvander@1203 | 133 |
/* Maximum page size. The upper bound on this value is 32768. This a limit |
| dvander@1203 | 134 |
** imposed by the necessity of storing the value in a 2-byte unsigned integer |
| dvander@1203 | 135 |
** and the fact that the page size must be a power of 2. |
| dvander@1203 | 136 |
*/ |
| dvander@1203 | 137 |
#ifndef SQLITE_MAX_PAGE_SIZE |
| dvander@1203 | 138 |
# define SQLITE_MAX_PAGE_SIZE 32768 |
| dvander@1203 | 139 |
#endif |
| dvander@1203 | 140 |
|
| dvander@1203 | 141 |
/* |
| dvander@1203 | 142 |
** Maximum number of pages in one database file. |
| dvander@1203 | 143 |
** |
| dvander@1203 | 144 |
** This is really just the default value for the max_page_count pragma. |
| dvander@1203 | 145 |
** This value can be lowered (or raised) at run-time using that the |
| dvander@1203 | 146 |
** max_page_count macro. |
| dvander@1203 | 147 |
*/ |
| dvander@1203 | 148 |
#ifndef SQLITE_MAX_PAGE_COUNT |
| dvander@1203 | 149 |
# define SQLITE_MAX_PAGE_COUNT 1073741823 |
| dvander@1203 | 150 |
#endif |
| dvander@1203 | 151 |
|
| dvander@1203 | 152 |
/* |
| dvander@1203 | 153 |
** Maximum length (in bytes) of the pattern in a LIKE or GLOB |
| dvander@1203 | 154 |
** operator. |
| dvander@1203 | 155 |
*/ |
| dvander@1203 | 156 |
#ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH |
| dvander@1203 | 157 |
# define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 |
| dvander@1203 | 158 |
#endif |