summaryrefslogtreecommitdiff
path: root/sqlite.zig
diff options
context:
space:
mode:
authorGravatar Vincent Rischmann2023-03-11 18:25:44 +0100
committerGravatar Vincent Rischmann2023-03-11 18:25:44 +0100
commit184196edf04ad89ab14d46832f8af3b69656924a (patch)
treef11dad7c732bc6755f7cafd65482a00bb86b74f1 /sqlite.zig
parentMerge branch 'fix-latest' (diff)
downloadzig-sqlite-184196edf04ad89ab14d46832f8af3b69656924a.tar.gz
zig-sqlite-184196edf04ad89ab14d46832f8af3b69656924a.tar.xz
zig-sqlite-184196edf04ad89ab14d46832f8af3b69656924a.zip
fix calls to sqlite3_bind_text in bindField
Diffstat (limited to '')
-rw-r--r--sqlite.zig6
1 files changed, 4 insertions, 2 deletions
diff --git a/sqlite.zig b/sqlite.zig
index 77c30fc..6cd2b7a 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -1618,7 +1618,8 @@ pub const DynamicStatement = struct {
1618 }, 1618 },
1619 .Slice => switch (ptr.child) { 1619 .Slice => switch (ptr.child) {
1620 u8 => { 1620 u8 => {
1621 const result = c.sqlite3_bind_text(self.stmt, column, field.ptr, @intCast(c_int, field.len), null); 1621 // NOTE(vincent): The slice must live until after the prepared statement is finaliuzed, therefore we use SQLITE_STATIC to avoid a copy
1622 const result = c.sqlite3_bind_text(self.stmt, column, field.ptr, @intCast(c_int, field.len), c.SQLITE_STATIC);
1622 return convertResultToError(result); 1623 return convertResultToError(result);
1623 }, 1624 },
1624 else => @compileError("cannot bind field " ++ field_name ++ " of type " ++ @typeName(FieldType)), 1625 else => @compileError("cannot bind field " ++ field_name ++ " of type " ++ @typeName(FieldType)),
@@ -1629,7 +1630,8 @@ pub const DynamicStatement = struct {
1629 u8 => { 1630 u8 => {
1630 const data: []const u8 = field[0..field.len]; 1631 const data: []const u8 = field[0..field.len];
1631 1632
1632 const result = c.sqlite3_bind_text(self.stmt, column, data.ptr, @intCast(c_int, data.len), null); 1633 // NOTE(vincent): The array is temporary and must be copied, therefore we use SQLITE_TRANSIENT
1634 const result = c.sqlite3_bind_text(self.stmt, column, data.ptr, @intCast(c_int, data.len), c.SQLITE_TRANSIENT);
1633 return convertResultToError(result); 1635 return convertResultToError(result);
1634 }, 1636 },
1635 else => @compileError("cannot bind field " ++ field_name ++ " of type array of " ++ @typeName(arr.child)), 1637 else => @compileError("cannot bind field " ++ field_name ++ " of type array of " ++ @typeName(arr.child)),