From 67dba03a93fef6c0e2d2b6a7ba4be08534e3c0f9 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Tue, 30 Sep 2025 14:49:25 +0300 Subject: [PATCH] lib-sql: driver-sqlite - Fix sqlite_journal_mode=wal setting to actually work Forgotten in 316fdee91e4d672ec555626f620059c0748bab70 --- src/lib-sql/driver-sqlite.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib-sql/driver-sqlite.c b/src/lib-sql/driver-sqlite.c index e0561b6b9e..b3cf0d9f8a 100644 --- a/src/lib-sql/driver-sqlite.c +++ b/src/lib-sql/driver-sqlite.c @@ -44,6 +44,7 @@ struct sqlite_transaction_context { char *error; }; +/* */ struct sqlite_settings { pool_t pool; @@ -54,6 +55,7 @@ struct sqlite_settings { /* generated: */ bool parsed_journal_use_wal; }; +/* */ #undef DEF #define DEF(type, name) \ @@ -70,6 +72,8 @@ static const struct sqlite_settings sqlite_default_settings = { .journal_mode = "wal:delete", .readonly = FALSE, }; +static bool +driver_sqlite_settings_check(void *_set, pool_t pool, const char **error_r); const struct setting_parser_info sqlite_setting_parser_info = { .name = "sqlite", #ifdef SQL_DRIVER_PLUGINS @@ -81,8 +85,20 @@ const struct setting_parser_info sqlite_setting_parser_info = { .struct_size = sizeof(struct sqlite_settings), .pool_offset1 = 1 + offsetof(struct sqlite_settings, pool), + + .check_func = driver_sqlite_settings_check, }; +/* */ +static bool driver_sqlite_settings_check(void *_set, pool_t pool ATTR_UNUSED, + const char **error_r ATTR_UNUSED) +{ + struct sqlite_settings *set = _set; + set->parsed_journal_use_wal = strcmp(set->journal_mode, "wal") == 0; + return TRUE; +} +/* */ + extern const struct sql_db driver_sqlite_db; extern const struct sql_result driver_sqlite_result; extern const struct sql_result driver_sqlite_error_result; -- 2.47.3