From 0c7f6f3944b16b279523623d5d2ff8058173ca25 Mon Sep 17 00:00:00 2001 From: Vincent Rischmann Date: Sat, 13 Aug 2022 23:23:39 +0200 Subject: require SQLite >= 3.21.0 After some testing it turns out we need at least SQLite 3.21.0 to compile. We _could_ work around this and make zig-sqlite work with older SQLite versions but I don't think it's necessary because: * "old" distributions like Debian Buster, RHEL 8 ship with SQLite > 3.21.0 * in any case if people want to build for OSes where SQLite is too old they can use the bundled source code. --- c.zig | 11 +++++++++++ errors.zig | 3 +-- sqlite.zig | 6 +----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/c.zig b/c.zig index a346a3a..c15b987 100644 --- a/c.zig +++ b/c.zig @@ -1,3 +1,14 @@ pub const c = @cImport({ @cInclude("sqlite3.h"); }); + +// versionGreaterThanOrEqualTo returns true if the SQLite version is >= to the major.minor.patch provided. +pub fn versionGreaterThanOrEqualTo(major: u8, minor: u8, patch: u8) bool { + return c.SQLITE_VERSION_NUMBER >= @as(u32, major) * 1000000 + @as(u32, minor) * 1000 + @as(u32, patch); +} + +comptime { + if (!versionGreaterThanOrEqualTo(3, 21, 0)) { + @compileError("must use SQLite >= 3.21.0"); + } +} diff --git a/errors.zig b/errors.zig index 2beef5f..add4b37 100644 --- a/errors.zig +++ b/errors.zig @@ -2,8 +2,7 @@ const std = @import("std"); const mem = std.mem; const c = @import("c.zig").c; - -const versionGreaterThanOrEqualTo = @import("sqlite.zig").versionGreaterThanOrEqualTo; +const versionGreaterThanOrEqualTo = @import("c.zig").versionGreaterThanOrEqualTo; pub const SQLiteExtendedIOError = error{ SQLiteIOErrRead, diff --git a/sqlite.zig b/sqlite.zig index 89ddd67..7af98b8 100644 --- a/sqlite.zig +++ b/sqlite.zig @@ -8,6 +8,7 @@ const mem = std.mem; const testing = std.testing; const c = @import("c.zig").c; +const versionGreaterThanOrEqualTo = @import("c.zig").versionGreaterThanOrEqualTo; pub const ParsedQuery = @import("query.zig").ParsedQuery; @@ -20,11 +21,6 @@ const getDetailedErrorFromResultCode = errors.getDetailedErrorFromResultCode; const logger = std.log.scoped(.sqlite); -// versionGreaterThanOrEqualTo returns true if the SQLite version is >= to the major.minor.patch provided. -pub fn versionGreaterThanOrEqualTo(major: u8, minor: u8, patch: u8) bool { - return c.SQLITE_VERSION_NUMBER >= @as(u32, major) * 1000000 + @as(u32, minor) * 1000 + @as(u32, patch); -} - /// Text is used to represent a SQLite TEXT value when binding a parameter or reading a column. pub const Text = struct { data: []const u8 }; -- cgit v1.2.3