From 54342ed0cc61585d953183ec29309eb0db846b72 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Mon, 25 May 2026 21:15:22 +0200 Subject: Reorganizes includes --- core/sql.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'core/sql.c') diff --git a/core/sql.c b/core/sql.c index a03ce5d..fab6eeb 100644 --- a/core/sql.c +++ b/core/sql.c @@ -1,4 +1,8 @@ -void salis_exec_sql(int blob_cnt, const void **blobs, const int *blob_sizes, const char *sql_format, ...) { +#define DATA_PUSH_BUSY_TIMEOUT 600000 + +sqlite3 *g_sim_db; + +void sql_exec(int blob_cnt, const void **blobs, const int *blob_sizes, const char *sql_format, ...) { assert(sql_format); va_list args; @@ -47,3 +51,21 @@ void salis_exec_sql(int blob_cnt, const void **blobs, const int *blob_sizes, con sqlite3_finalize(sql_stmt); } + +void sql_open(void) { + sqlite3_open(DATA_PUSH_PATH, &g_sim_db); + assert(g_sim_db); + + // Install busy handler to retry transactions if DB is locked + sqlite3_busy_timeout(g_sim_db, DATA_PUSH_BUSY_TIMEOUT); + + // Enable Write-Ahead Logging (WAL) + // This seems to help prevent DB locks when displaying live data. + // See: https://sqlite.org/wal.html + sql_exec(0, NULL, NULL, "pragma journal_mode=wal;"); +} + +void sql_close(void) { + assert(g_sim_db); + sqlite3_close(g_sim_db); +} -- cgit v1.3