From 8c99d8f6b67eb7c16d6bd7bf8f95153798b3240e Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 17 Aug 2026 23:07:31 -0700 Subject: [PATCH] sqlite3: add all the modern recommended pragmas https://mort.coffee/home/sqlite-editions/ https://kerkour.com/sqlite-for-servers https://micrologics.org/blog/sqlite-in-production-optimizing-wal-mode-concurrency-and-vfs-layers-for-low-latency-app-servers --- src/sqlite3.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/sqlite3.zig b/src/sqlite3.zig index ff1cc0dacd1250dbc7b37d16bf1a90b64983601f..6dfdcc09a97b0b81ab5abfe28587682a6ac5854f 100644 --- a/src/sqlite3.zig +++ b/src/sqlite3.zig @@ -9,6 +9,19 @@ const Self = @This(); db: *c.sqlite3, pub fn connect(allocator: std.mem.Allocator, path: [:0]const u8) !Self { + var driver: Self = try .connect_only(allocator, path); + errdefer driver.close(); + _ = try driver.first(allocator, void, "PRAGMA journal_mode = WAL", .{}); + _ = try driver.first(allocator, void, "PRAGMA busy_timeout = 5000", .{}); + _ = try driver.first(allocator, void, "PRAGMA synchronous = NORMAL", .{}); + _ = try driver.first(allocator, void, "PRAGMA cache_size = 1000000000", .{}); + _ = try driver.first(allocator, void, "PRAGMA foreign_keys = true", .{}); + _ = try driver.first(allocator, void, "PRAGMA temp_store = memory", .{}); + _ = try driver.first(allocator, void, "PRAGMA mmap_size = 1073741824", .{}); + _ = try driver.first(allocator, void, "PRAGMA auto_vacuum = INCREMENTAL", .{}); + return driver; +} +pub fn connect_only(allocator: std.mem.Allocator, path: [:0]const u8) !Self { std.log.scoped(.zorm).info("connecting to {s} @ {s}", .{ "sqlite3", path }); _ = allocator; var db: ?*c.sqlite3 = null; -- 2.54.0