1c551dd80Sdrh /* 2c551dd80Sdrh ** 2007 May 7 3c551dd80Sdrh ** 4c551dd80Sdrh ** The author disclaims copyright to this source code. In place of 5c551dd80Sdrh ** a legal notice, here is a blessing: 6c551dd80Sdrh ** 7c551dd80Sdrh ** May you do good and not evil. 8c551dd80Sdrh ** May you find forgiveness for yourself and forgive others. 9c551dd80Sdrh ** May you share freely, never taking more than you give. 10c551dd80Sdrh ** 11c551dd80Sdrh ************************************************************************* 12c551dd80Sdrh ** 13c551dd80Sdrh ** This file defines various limits of what SQLite can process. 14c551dd80Sdrh ** 15*bb4957f8Sdrh ** @(#) $Id: sqliteLimit.h,v 1.7 2008/03/20 14:03:29 drh Exp $ 16c551dd80Sdrh */ 17c551dd80Sdrh 18c551dd80Sdrh /* 19c551dd80Sdrh ** The maximum length of a TEXT or BLOB in bytes. This also 20c551dd80Sdrh ** limits the size of a row in a table or index. 21c551dd80Sdrh ** 22c551dd80Sdrh ** The hard limit is the ability of a 32-bit signed integer 23c551dd80Sdrh ** to count the size: 2^31-1 or 2147483647. 24c551dd80Sdrh */ 25c551dd80Sdrh #ifndef SQLITE_MAX_LENGTH 26c551dd80Sdrh # define SQLITE_MAX_LENGTH 1000000000 27c551dd80Sdrh #endif 28c551dd80Sdrh 29c551dd80Sdrh /* 30c551dd80Sdrh ** This is the maximum number of 31c551dd80Sdrh ** 32c551dd80Sdrh ** * Columns in a table 33c551dd80Sdrh ** * Columns in an index 34c551dd80Sdrh ** * Columns in a view 35c551dd80Sdrh ** * Terms in the SET clause of an UPDATE statement 36c551dd80Sdrh ** * Terms in the result set of a SELECT statement 37c551dd80Sdrh ** * Terms in the GROUP BY or ORDER BY clauses of a SELECT statement. 38c551dd80Sdrh ** * Terms in the VALUES clause of an INSERT statement 39c551dd80Sdrh ** 40c551dd80Sdrh ** The hard upper limit here is 32676. Most database people will 41c551dd80Sdrh ** tell you that in a well-normalized database, you usually should 42c551dd80Sdrh ** not have more than a dozen or so columns in any table. And if 43c551dd80Sdrh ** that is the case, there is no point in having more than a few 44c551dd80Sdrh ** dozen values in any of the other situations described above. 45c551dd80Sdrh */ 46c551dd80Sdrh #ifndef SQLITE_MAX_COLUMN 47c551dd80Sdrh # define SQLITE_MAX_COLUMN 2000 48c551dd80Sdrh #endif 49c551dd80Sdrh 50c551dd80Sdrh /* 51c551dd80Sdrh ** The maximum length of a single SQL statement in bytes. 52*bb4957f8Sdrh ** 53*bb4957f8Sdrh ** It used to be the case that setting this value to zero would 54*bb4957f8Sdrh ** turn the limit off. That is no longer true. It is not possible 55*bb4957f8Sdrh ** to turn this limit off. 56c551dd80Sdrh */ 57c551dd80Sdrh #ifndef SQLITE_MAX_SQL_LENGTH 58*bb4957f8Sdrh # define SQLITE_MAX_SQL_LENGTH 1000000000 59c551dd80Sdrh #endif 60c551dd80Sdrh 61c551dd80Sdrh /* 62c551dd80Sdrh ** The maximum depth of an expression tree. This is limited to 63c551dd80Sdrh ** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might 64c551dd80Sdrh ** want to place more severe limits on the complexity of an 65*bb4957f8Sdrh ** expression. 66*bb4957f8Sdrh ** 67*bb4957f8Sdrh ** A value of 0 used to mean that the limit was not enforced. 68*bb4957f8Sdrh ** But that is no longer true. The limit is now strictly enforced 69*bb4957f8Sdrh ** at all times. 70c551dd80Sdrh */ 71c551dd80Sdrh #ifndef SQLITE_MAX_EXPR_DEPTH 72c551dd80Sdrh # define SQLITE_MAX_EXPR_DEPTH 1000 73c551dd80Sdrh #endif 74c551dd80Sdrh 75c551dd80Sdrh /* 76c551dd80Sdrh ** The maximum number of terms in a compound SELECT statement. 77c551dd80Sdrh ** The code generator for compound SELECT statements does one 78c551dd80Sdrh ** level of recursion for each term. A stack overflow can result 79c551dd80Sdrh ** if the number of terms is too large. In practice, most SQL 80c551dd80Sdrh ** never has more than 3 or 4 terms. Use a value of 0 to disable 81c551dd80Sdrh ** any limit on the number of terms in a compount SELECT. 82c551dd80Sdrh */ 83c551dd80Sdrh #ifndef SQLITE_MAX_COMPOUND_SELECT 84c551dd80Sdrh # define SQLITE_MAX_COMPOUND_SELECT 500 85c551dd80Sdrh #endif 86c551dd80Sdrh 87c551dd80Sdrh /* 88c551dd80Sdrh ** The maximum number of opcodes in a VDBE program. 89c551dd80Sdrh ** Not currently enforced. 90c551dd80Sdrh */ 91c551dd80Sdrh #ifndef SQLITE_MAX_VDBE_OP 92c551dd80Sdrh # define SQLITE_MAX_VDBE_OP 25000 93c551dd80Sdrh #endif 94c551dd80Sdrh 95c551dd80Sdrh /* 96c551dd80Sdrh ** The maximum number of arguments to an SQL function. 97c551dd80Sdrh */ 98c551dd80Sdrh #ifndef SQLITE_MAX_FUNCTION_ARG 99c551dd80Sdrh # define SQLITE_MAX_FUNCTION_ARG 100 100c551dd80Sdrh #endif 101c551dd80Sdrh 102c551dd80Sdrh /* 103c551dd80Sdrh ** The maximum number of in-memory pages to use for the main database 104c551dd80Sdrh ** table and for temporary tables. The SQLITE_DEFAULT_CACHE_SIZE 105c551dd80Sdrh */ 106c551dd80Sdrh #ifndef SQLITE_DEFAULT_CACHE_SIZE 107c551dd80Sdrh # define SQLITE_DEFAULT_CACHE_SIZE 2000 108c551dd80Sdrh #endif 109c551dd80Sdrh #ifndef SQLITE_DEFAULT_TEMP_CACHE_SIZE 110c551dd80Sdrh # define SQLITE_DEFAULT_TEMP_CACHE_SIZE 500 111c551dd80Sdrh #endif 112c551dd80Sdrh 113c551dd80Sdrh /* 114c551dd80Sdrh ** The maximum number of attached databases. This must be at least 2 115c551dd80Sdrh ** in order to support the main database file (0) and the file used to 116c551dd80Sdrh ** hold temporary tables (1). And it must be less than 32 because 117c551dd80Sdrh ** we use a bitmask of databases with a u32 in places (for example 118c551dd80Sdrh ** the Parse.cookieMask field). 119c551dd80Sdrh */ 120c551dd80Sdrh #ifndef SQLITE_MAX_ATTACHED 121c551dd80Sdrh # define SQLITE_MAX_ATTACHED 10 122c551dd80Sdrh #endif 123c551dd80Sdrh 124c551dd80Sdrh 125c551dd80Sdrh /* 126c551dd80Sdrh ** The maximum value of a ?nnn wildcard that the parser will accept. 127c551dd80Sdrh */ 128c551dd80Sdrh #ifndef SQLITE_MAX_VARIABLE_NUMBER 129c551dd80Sdrh # define SQLITE_MAX_VARIABLE_NUMBER 999 130c551dd80Sdrh #endif 131c551dd80Sdrh 132f54cc035Sdrh /* Maximum page size. The upper bound on this value is 32768. This a limit 133f54cc035Sdrh ** imposed by the necessity of storing the value in a 2-byte unsigned integer 134f54cc035Sdrh ** and the fact that the page size must be a power of 2. 135f54cc035Sdrh */ 136f54cc035Sdrh #ifndef SQLITE_MAX_PAGE_SIZE 137f54cc035Sdrh # define SQLITE_MAX_PAGE_SIZE 32768 138f54cc035Sdrh #endif 139f54cc035Sdrh 140f54cc035Sdrh 141c551dd80Sdrh /* 142c551dd80Sdrh ** The default size of a database page. 143c551dd80Sdrh */ 144c551dd80Sdrh #ifndef SQLITE_DEFAULT_PAGE_SIZE 145c551dd80Sdrh # define SQLITE_DEFAULT_PAGE_SIZE 1024 146c551dd80Sdrh #endif 147f54cc035Sdrh #if SQLITE_DEFAULT_PAGE_SIZE>SQLITE_MAX_PAGE_SIZE 148f54cc035Sdrh # undef SQLITE_DEFAULT_PAGE_SIZE 149f54cc035Sdrh # define SQLITE_DEFAULT_PAGE_SIZE SQLITE_MAX_PAGE_SIZE 150f54cc035Sdrh #endif 151c551dd80Sdrh 1529663b8f9Sdanielk1977 /* 1539663b8f9Sdanielk1977 ** Ordinarily, if no value is explicitly provided, SQLite creates databases 1549663b8f9Sdanielk1977 ** with page size SQLITE_DEFAULT_PAGE_SIZE. However, based on certain 1559663b8f9Sdanielk1977 ** device characteristics (sector-size and atomic write() support), 1569663b8f9Sdanielk1977 ** SQLite may choose a larger value. This constant is the maximum value 15785b623f2Sdrh ** SQLite will choose on its own. 1589663b8f9Sdanielk1977 */ 1599663b8f9Sdanielk1977 #ifndef SQLITE_MAX_DEFAULT_PAGE_SIZE 1609663b8f9Sdanielk1977 # define SQLITE_MAX_DEFAULT_PAGE_SIZE 8192 1619663b8f9Sdanielk1977 #endif 162f54cc035Sdrh #if SQLITE_MAX_DEFAULT_PAGE_SIZE>SQLITE_MAX_PAGE_SIZE 163f54cc035Sdrh # undef SQLITE_MAX_DEFAULT_PAGE_SIZE 164f54cc035Sdrh # define SQLITE_MAX_DEFAULT_PAGE_SIZE SQLITE_MAX_PAGE_SIZE 165c551dd80Sdrh #endif 166c551dd80Sdrh 167f54cc035Sdrh 168c551dd80Sdrh /* 169c551dd80Sdrh ** Maximum number of pages in one database file. 170c551dd80Sdrh ** 171c551dd80Sdrh ** This is really just the default value for the max_page_count pragma. 172c551dd80Sdrh ** This value can be lowered (or raised) at run-time using that the 173c551dd80Sdrh ** max_page_count macro. 174c551dd80Sdrh */ 175c551dd80Sdrh #ifndef SQLITE_MAX_PAGE_COUNT 176c551dd80Sdrh # define SQLITE_MAX_PAGE_COUNT 1073741823 177c551dd80Sdrh #endif 178c551dd80Sdrh 179c551dd80Sdrh /* 180c551dd80Sdrh ** Maximum length (in bytes) of the pattern in a LIKE or GLOB 181c551dd80Sdrh ** operator. 182c551dd80Sdrh */ 183c551dd80Sdrh #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH 184c551dd80Sdrh # define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 185c551dd80Sdrh #endif 186