summaryrefslogtreecommitdiff
path: root/sqlite.zig
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.zig')
-rw-r--r--sqlite.zig67
1 files changed, 67 insertions, 0 deletions
diff --git a/sqlite.zig b/sqlite.zig
index ac70cff..e4bcb45 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -3122,3 +3122,70 @@ test "sqlite: oneDynamic" {
3122 try testing.expectEqual(@as(usize, 20), id.?); 3122 try testing.expectEqual(@as(usize, 20), id.?);
3123 } 3123 }
3124} 3124}
3125
3126test "sqlite: empty slice" {
3127 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3128 defer arena.deinit();
3129
3130 var db = try getTestDb();
3131 defer db.deinit();
3132 try addTestData(&db);
3133
3134 var list = std.ArrayList(u8).init(arena.allocator());
3135 const ptr = list.toOwnedSlice();
3136
3137 try db.exec("INSERT INTO article(author_id, data) VALUES(?, ?)", .{}, .{ 1, ptr });
3138
3139 // Read into an array
3140 {
3141 var stmt = try db.prepare("SELECT data FROM article");
3142 defer stmt.deinit();
3143
3144 const row = try stmt.one(
3145 struct {
3146 data: [128:0]u8,
3147 },
3148 .{},
3149 .{},
3150 );
3151
3152 try testing.expect(row != null);
3153 try testing.expectEqualSlices(u8, "", mem.sliceTo(&row.?.data, 0));
3154 }
3155
3156 // Read into an allocated slice
3157 {
3158 var stmt = try db.prepare("SELECT data FROM article");
3159 defer stmt.deinit();
3160
3161 const row = try stmt.oneAlloc(
3162 struct {
3163 data: []const u8,
3164 },
3165 arena.allocator(),
3166 .{},
3167 .{},
3168 );
3169
3170 try testing.expect(row != null);
3171 try testing.expectEqualSlices(u8, "", row.?.data);
3172 }
3173
3174 // Read into a Text
3175 {
3176 var stmt = try db.prepare("SELECT data FROM article");
3177 defer stmt.deinit();
3178
3179 const row = try stmt.oneAlloc(
3180 struct {
3181 data: Text,
3182 },
3183 arena.allocator(),
3184 .{},
3185 .{},
3186 );
3187
3188 try testing.expect(row != null);
3189 try testing.expectEqualSlices(u8, "", row.?.data.data);
3190 }
3191}