From a4a15001601ba9a1a32b64dec3ad079114d1be2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Stensg=C3=A5rd?= Date: Sat, 16 May 2026 22:12:46 +0200 Subject: sqlite for servers --- opplysning-endre.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'opplysning-endre.c') diff --git a/opplysning-endre.c b/opplysning-endre.c index b55c679..34d0cf2 100644 --- a/opplysning-endre.c +++ b/opplysning-endre.c @@ -7,10 +7,10 @@ #include "sqlite/sqlite3.h" static char *SCHEMA = "CREATE TABLE event (" - " start TIMESTAMP," - " end TIMESTAMP," + " start TEXT," + " end TEXT," " summary TEXT" - ")"; + ") STRICT"; static char * read_stream(char *s, size_t size, void *d) @@ -38,7 +38,7 @@ component(sqlite3 *db, icalcomponent *c) "datetime(?, 'unixepoch')" ", ?)"; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL)) - errx(1, "sqlite3_prepare_v2"); + errx(1, "sqlite3_prepare_v2: %s", sqlite3_errmsg(db)); if (sqlite3_bind_int64(stmt, 1, start)) errx(1, "sqlite3_bind_int64"); @@ -62,11 +62,19 @@ main(int argc, const char *argv[static argc]) assert(stream); icalparser_set_gen_data(parser, stream); - sqlite3 *db; + sqlite3 *db = NULL; char *errmsg = NULL; if (sqlite3_open(argv[1], &db)) errx(1, "sqlite3_open: %s", errmsg); - if (sqlite3_exec(db, "BEGIN", NULL, NULL, &errmsg)) + if (sqlite3_exec(db, + "PRAGMA journal_mode = WAL;" + "PRAGMA synchronous = NORMAL;" + "PRAGMA foreign_keys = true;" + "PRAGMA busy_timeout = 5000;" + "", + NULL, NULL, &errmsg)) + errx(1, "sqlite3_exec: %s", errmsg); + if (sqlite3_exec(db, "BEGIN IMMEDIATE", NULL, NULL, &errmsg)) errx(1, "sqlite3_exec: %s", errmsg); if (sqlite3_exec(db, "DROP TABLE IF EXISTS event", NULL, NULL, &errmsg)) errx(1, "sqlite3_exec: %s", errmsg); -- cgit v1.2.3