drh | 943aa77 | 2017-02-06 15:27:44 +0000 | [diff] [blame] | 1 | /* |
| 2 | ** Link this program against an SQLite library of unknown provenance in order |
| 3 | ** to display the compile-time maximum values for various settings. |
| 4 | */ |
| 5 | #include "sqlite3.h" |
| 6 | #include <stdio.h> |
| 7 | |
| 8 | static const struct { |
| 9 | int eCode; |
| 10 | char *zName; |
| 11 | } aLimit[] = { |
| 12 | { SQLITE_LIMIT_LENGTH, "SQLITE_MAX_LENGTH" }, |
| 13 | { SQLITE_LIMIT_SQL_LENGTH, "SQLITE_MAX_SQL_LENGTH" }, |
| 14 | { SQLITE_LIMIT_COLUMN, "SQLITE_MAX_COLUMN" }, |
| 15 | { SQLITE_LIMIT_EXPR_DEPTH, "SQLITE_MAX_EXPR_DEPTH" }, |
| 16 | { SQLITE_LIMIT_COMPOUND_SELECT, "SQLITE_MAX_COMPOUND_SELECT" }, |
| 17 | { SQLITE_LIMIT_VDBE_OP, "SQLITE_MAX_VDBE_OP" }, |
| 18 | { SQLITE_LIMIT_FUNCTION_ARG, "SQLITE_MAX_FUNCTION_ARG" }, |
| 19 | { SQLITE_LIMIT_ATTACHED, "SQLITE_MAX_ATTACHED" }, |
| 20 | { SQLITE_LIMIT_LIKE_PATTERN_LENGTH, "SQLITE_MAX_LIKE_PATTERN_LENGTH" }, |
| 21 | { SQLITE_LIMIT_VARIABLE_NUMBER, "SQLITE_MAX_VARIABLE_NUMBER" }, |
| 22 | { SQLITE_LIMIT_TRIGGER_DEPTH, "SQLITE_MAX_TRIGGER_DEPTH" }, |
| 23 | { SQLITE_LIMIT_WORKER_THREADS, "SQLITE_MAX_WORKER_THREADS" }, |
| 24 | }; |
| 25 | |
| 26 | static int maxLimit(sqlite3 *db, int eCode){ |
| 27 | int iOrig = sqlite3_limit(db, eCode, 0x7fffffff); |
| 28 | return sqlite3_limit(db, eCode, iOrig); |
| 29 | } |
| 30 | |
| 31 | int main(int argc, char **argv){ |
| 32 | sqlite3 *db; |
| 33 | int j, rc; |
| 34 | rc = sqlite3_open(":memory:", &db); |
| 35 | if( rc==SQLITE_OK ){ |
| 36 | for(j=0; j<sizeof(aLimit)/sizeof(aLimit[0]); j++){ |
| 37 | printf("%-35s %10d\n", aLimit[j].zName, maxLimit(db, aLimit[j].eCode)); |
| 38 | } |
| 39 | sqlite3_close(db); |
| 40 | } |
| 41 | } |