summaryrefslogtreecommitdiffstats
path: root/tool/max-limits.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 17:28:19 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 17:28:19 +0000
commit18657a960e125336f704ea058e25c27bd3900dcb (patch)
tree17b438b680ed45a996d7b59951e6aa34023783f2 /tool/max-limits.c
parentInitial commit. (diff)
downloadsqlite3-18657a960e125336f704ea058e25c27bd3900dcb.tar.xz
sqlite3-18657a960e125336f704ea058e25c27bd3900dcb.zip
Adding upstream version 3.40.1.upstream/3.40.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tool/max-limits.c')
-rw-r--r--tool/max-limits.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tool/max-limits.c b/tool/max-limits.c
new file mode 100644
index 0000000..d019974
--- /dev/null
+++ b/tool/max-limits.c
@@ -0,0 +1,41 @@
+/*
+** Link this program against an SQLite library of unknown provenance in order
+** to display the compile-time maximum values for various settings.
+*/
+#include "sqlite3.h"
+#include <stdio.h>
+
+static const struct {
+ int eCode;
+ char *zName;
+} aLimit[] = {
+ { SQLITE_LIMIT_LENGTH, "SQLITE_MAX_LENGTH" },
+ { SQLITE_LIMIT_SQL_LENGTH, "SQLITE_MAX_SQL_LENGTH" },
+ { SQLITE_LIMIT_COLUMN, "SQLITE_MAX_COLUMN" },
+ { SQLITE_LIMIT_EXPR_DEPTH, "SQLITE_MAX_EXPR_DEPTH" },
+ { SQLITE_LIMIT_COMPOUND_SELECT, "SQLITE_MAX_COMPOUND_SELECT" },
+ { SQLITE_LIMIT_VDBE_OP, "SQLITE_MAX_VDBE_OP" },
+ { SQLITE_LIMIT_FUNCTION_ARG, "SQLITE_MAX_FUNCTION_ARG" },
+ { SQLITE_LIMIT_ATTACHED, "SQLITE_MAX_ATTACHED" },
+ { SQLITE_LIMIT_LIKE_PATTERN_LENGTH, "SQLITE_MAX_LIKE_PATTERN_LENGTH" },
+ { SQLITE_LIMIT_VARIABLE_NUMBER, "SQLITE_MAX_VARIABLE_NUMBER" },
+ { SQLITE_LIMIT_TRIGGER_DEPTH, "SQLITE_MAX_TRIGGER_DEPTH" },
+ { SQLITE_LIMIT_WORKER_THREADS, "SQLITE_MAX_WORKER_THREADS" },
+};
+
+static int maxLimit(sqlite3 *db, int eCode){
+ int iOrig = sqlite3_limit(db, eCode, 0x7fffffff);
+ return sqlite3_limit(db, eCode, iOrig);
+}
+
+int main(int argc, char **argv){
+ sqlite3 *db;
+ int j, rc;
+ rc = sqlite3_open(":memory:", &db);
+ if( rc==SQLITE_OK ){
+ for(j=0; j<sizeof(aLimit)/sizeof(aLimit[0]); j++){
+ printf("%-35s %10d\n", aLimit[j].zName, maxLimit(db, aLimit[j].eCode));
+ }
+ sqlite3_close(db);
+ }
+}