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 } 42