blob: d019974426d06c8b24449688d6cf3b5b7aa93fb5 [file] [log] [blame]
drh943aa772017-02-06 15:27:44 +00001/*
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
8static 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
26static int maxLimit(sqlite3 *db, int eCode){
27 int iOrig = sqlite3_limit(db, eCode, 0x7fffffff);
28 return sqlite3_limit(db, eCode, iOrig);
29}
30
31int 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}