summaryrefslogtreecommitdiff
path: root/sqlite.zig
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.zig')
-rw-r--r--sqlite.zig72
1 files changed, 36 insertions, 36 deletions
diff --git a/sqlite.zig b/sqlite.zig
index b251e1f..d521175 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -106,7 +106,7 @@ pub const Blob = struct {
106 return 0; 106 return 0;
107 } 107 }
108 108
109 var tmp_buffer = blk: { 109 const tmp_buffer = blk: {
110 const remaining: usize = @as(usize, @intCast(self.size)) - @as(usize, @intCast(self.offset)); 110 const remaining: usize = @as(usize, @intCast(self.size)) - @as(usize, @intCast(self.offset));
111 break :blk if (buffer.len > remaining) buffer[0..remaining] else buffer; 111 break :blk if (buffer.len > remaining) buffer[0..remaining] else buffer;
112 }; 112 };
@@ -401,7 +401,7 @@ pub const Db = struct {
401 /// const journal_mode = try db.pragma([]const u8, allocator, .{}, "journal_mode", null); 401 /// const journal_mode = try db.pragma([]const u8, allocator, .{}, "journal_mode", null);
402 /// 402 ///
403 pub fn pragmaAlloc(self: *Self, comptime Type: type, allocator: mem.Allocator, options: QueryOptions, comptime name: []const u8, comptime arg: ?[]const u8) !?Type { 403 pub fn pragmaAlloc(self: *Self, comptime Type: type, allocator: mem.Allocator, options: QueryOptions, comptime name: []const u8, comptime arg: ?[]const u8) !?Type {
404 comptime var query = getPragmaQuery(name, arg); 404 const query = comptime getPragmaQuery(name, arg);
405 405
406 var stmt = try self.prepare(query); 406 var stmt = try self.prepare(query);
407 defer stmt.deinit(); 407 defer stmt.deinit();
@@ -423,7 +423,7 @@ pub const Db = struct {
423 /// 423 ///
424 /// This cannot allocate memory. If your pragma command returns text you must use an array or call `pragmaAlloc`. 424 /// This cannot allocate memory. If your pragma command returns text you must use an array or call `pragmaAlloc`.
425 pub fn pragma(self: *Self, comptime Type: type, options: QueryOptions, comptime name: []const u8, comptime arg: ?[]const u8) !?Type { 425 pub fn pragma(self: *Self, comptime Type: type, options: QueryOptions, comptime name: []const u8, comptime arg: ?[]const u8) !?Type {
426 comptime var query = getPragmaQuery(name, arg); 426 const query = comptime getPragmaQuery(name, arg);
427 427
428 var stmt = try self.prepareWithDiags(query, options); 428 var stmt = try self.prepareWithDiags(query, options);
429 defer stmt.deinit(); 429 defer stmt.deinit();
@@ -936,7 +936,7 @@ pub const Savepoint = struct {
936 936
937 var buffer: [256]u8 = undefined; 937 var buffer: [256]u8 = undefined;
938 var fba = std.heap.FixedBufferAllocator.init(&buffer); 938 var fba = std.heap.FixedBufferAllocator.init(&buffer);
939 var allocator = fba.allocator(); 939 const allocator = fba.allocator();
940 940
941 const commit_query = try std.fmt.allocPrint(allocator, "RELEASE SAVEPOINT {s}", .{name}); 941 const commit_query = try std.fmt.allocPrint(allocator, "RELEASE SAVEPOINT {s}", .{name});
942 const rollback_query = try std.fmt.allocPrint(allocator, "ROLLBACK TRANSACTION TO SAVEPOINT {s}", .{name}); 942 const rollback_query = try std.fmt.allocPrint(allocator, "ROLLBACK TRANSACTION TO SAVEPOINT {s}", .{name});
@@ -1028,7 +1028,7 @@ pub fn Iterator(comptime Type: type) type {
1028 var dummy_diags = Diagnostics{}; 1028 var dummy_diags = Diagnostics{};
1029 var diags = options.diags orelse &dummy_diags; 1029 var diags = options.diags orelse &dummy_diags;
1030 1030
1031 var result = c.sqlite3_step(self.stmt); 1031 const result = c.sqlite3_step(self.stmt);
1032 if (result == c.SQLITE_DONE) { 1032 if (result == c.SQLITE_DONE) {
1033 return null; 1033 return null;
1034 } 1034 }
@@ -1086,7 +1086,7 @@ pub fn Iterator(comptime Type: type) type {
1086 var dummy_diags = Diagnostics{}; 1086 var dummy_diags = Diagnostics{};
1087 var diags = options.diags orelse &dummy_diags; 1087 var diags = options.diags orelse &dummy_diags;
1088 1088
1089 var result = c.sqlite3_step(self.stmt); 1089 const result = c.sqlite3_step(self.stmt);
1090 if (result == c.SQLITE_DONE) { 1090 if (result == c.SQLITE_DONE) {
1091 return null; 1091 return null;
1092 } 1092 }
@@ -1516,7 +1516,7 @@ pub const DynamicStatement = struct {
1516 fn prepare(db: *Db, query: []const u8, options: QueryOptions, flags: c_uint) PrepareError!Self { 1516 fn prepare(db: *Db, query: []const u8, options: QueryOptions, flags: c_uint) PrepareError!Self {
1517 var dummy_diags = Diagnostics{}; 1517 var dummy_diags = Diagnostics{};
1518 var diags = options.diags orelse &dummy_diags; 1518 var diags = options.diags orelse &dummy_diags;
1519 var stmt = blk: { 1519 const stmt = blk: {
1520 var tmp: ?*c.sqlite3_stmt = undefined; 1520 var tmp: ?*c.sqlite3_stmt = undefined;
1521 const result = c.sqlite3_prepare_v3( 1521 const result = c.sqlite3_prepare_v3(
1522 db.db, 1522 db.db,
@@ -2312,7 +2312,7 @@ test "sqlite: exec multi with single statement" {
2312test "sqlite: db pragma" { 2312test "sqlite: db pragma" {
2313 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2313 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2314 defer arena.deinit(); 2314 defer arena.deinit();
2315 var allocator = arena.allocator(); 2315 const allocator = arena.allocator();
2316 2316
2317 var db = try getTestDb(); 2317 var db = try getTestDb();
2318 defer db.deinit(); 2318 defer db.deinit();
@@ -2425,7 +2425,7 @@ test "sqlite: db execAlloc" {
2425test "sqlite: read a single user into a struct" { 2425test "sqlite: read a single user into a struct" {
2426 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2426 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2427 defer arena.deinit(); 2427 defer arena.deinit();
2428 var allocator = arena.allocator(); 2428 const allocator = arena.allocator();
2429 2429
2430 var db = try getTestDb(); 2430 var db = try getTestDb();
2431 defer db.deinit(); 2431 defer db.deinit();
@@ -2434,7 +2434,7 @@ test "sqlite: read a single user into a struct" {
2434 var stmt = try db.prepare("SELECT * FROM user WHERE id = ?{usize}"); 2434 var stmt = try db.prepare("SELECT * FROM user WHERE id = ?{usize}");
2435 defer stmt.deinit(); 2435 defer stmt.deinit();
2436 2436
2437 var rows = try stmt.all(TestUser, allocator, .{}, .{ 2437 const rows = try stmt.all(TestUser, allocator, .{}, .{
2438 .id = @as(usize, 20), 2438 .id = @as(usize, 20),
2439 }); 2439 });
2440 for (rows) |row| { 2440 for (rows) |row| {
@@ -2465,7 +2465,7 @@ test "sqlite: read a single user into a struct" {
2465 2465
2466 // Read a row with db.oneAlloc() 2466 // Read a row with db.oneAlloc()
2467 { 2467 {
2468 var row = try db.oneAlloc( 2468 const row = try db.oneAlloc(
2469 struct { 2469 struct {
2470 name: Text, 2470 name: Text,
2471 id: usize, 2471 id: usize,
@@ -2488,7 +2488,7 @@ test "sqlite: read a single user into a struct" {
2488test "sqlite: read all users into a struct" { 2488test "sqlite: read all users into a struct" {
2489 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2489 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2490 defer arena.deinit(); 2490 defer arena.deinit();
2491 var allocator = arena.allocator(); 2491 const allocator = arena.allocator();
2492 2492
2493 var db = try getTestDb(); 2493 var db = try getTestDb();
2494 defer db.deinit(); 2494 defer db.deinit();
@@ -2497,7 +2497,7 @@ test "sqlite: read all users into a struct" {
2497 var stmt = try db.prepare("SELECT * FROM user"); 2497 var stmt = try db.prepare("SELECT * FROM user");
2498 defer stmt.deinit(); 2498 defer stmt.deinit();
2499 2499
2500 var rows = try stmt.all(TestUser, allocator, .{}, .{}); 2500 const rows = try stmt.all(TestUser, allocator, .{}, .{});
2501 try testing.expectEqual(@as(usize, 3), rows.len); 2501 try testing.expectEqual(@as(usize, 3), rows.len);
2502 for (rows, 0..) |row, i| { 2502 for (rows, 0..) |row, i| {
2503 const exp = test_users[i]; 2503 const exp = test_users[i];
@@ -2511,7 +2511,7 @@ test "sqlite: read all users into a struct" {
2511test "sqlite: read in an anonymous struct" { 2511test "sqlite: read in an anonymous struct" {
2512 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2512 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2513 defer arena.deinit(); 2513 defer arena.deinit();
2514 var allocator = arena.allocator(); 2514 const allocator = arena.allocator();
2515 2515
2516 var db = try getTestDb(); 2516 var db = try getTestDb();
2517 defer db.deinit(); 2517 defer db.deinit();
@@ -2547,7 +2547,7 @@ test "sqlite: read in an anonymous struct" {
2547test "sqlite: read in a Text struct" { 2547test "sqlite: read in a Text struct" {
2548 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2548 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2549 defer arena.deinit(); 2549 defer arena.deinit();
2550 var allocator = arena.allocator(); 2550 const allocator = arena.allocator();
2551 2551
2552 var db = try getTestDb(); 2552 var db = try getTestDb();
2553 defer db.deinit(); 2553 defer db.deinit();
@@ -2556,7 +2556,7 @@ test "sqlite: read in a Text struct" {
2556 var stmt = try db.prepare("SELECT name, id, age FROM user WHERE id = ?{usize}"); 2556 var stmt = try db.prepare("SELECT name, id, age FROM user WHERE id = ?{usize}");
2557 defer stmt.deinit(); 2557 defer stmt.deinit();
2558 2558
2559 var row = try stmt.oneAlloc( 2559 const row = try stmt.oneAlloc(
2560 struct { 2560 struct {
2561 name: Text, 2561 name: Text,
2562 id: usize, 2562 id: usize,
@@ -2577,7 +2577,7 @@ test "sqlite: read in a Text struct" {
2577test "sqlite: read a single text value" { 2577test "sqlite: read a single text value" {
2578 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2578 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2579 defer arena.deinit(); 2579 defer arena.deinit();
2580 var allocator = arena.allocator(); 2580 const allocator = arena.allocator();
2581 2581
2582 var db = try getTestDb(); 2582 var db = try getTestDb();
2583 defer db.deinit(); 2583 defer db.deinit();
@@ -2659,7 +2659,7 @@ test "sqlite: read a single integer value" {
2659 var stmt: StatementType(.{}, query) = try db.prepare(query); 2659 var stmt: StatementType(.{}, query) = try db.prepare(query);
2660 defer stmt.deinit(); 2660 defer stmt.deinit();
2661 2661
2662 var age = try stmt.one(typ, .{}, .{ 2662 const age = try stmt.one(typ, .{}, .{
2663 .id = @as(usize, 20), 2663 .id = @as(usize, 20),
2664 }); 2664 });
2665 try testing.expect(age != null); 2665 try testing.expect(age != null);
@@ -2671,7 +2671,7 @@ test "sqlite: read a single integer value" {
2671test "sqlite: read a single value into an enum backed by an integer" { 2671test "sqlite: read a single value into an enum backed by an integer" {
2672 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2672 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2673 defer arena.deinit(); 2673 defer arena.deinit();
2674 var allocator = arena.allocator(); 2674 const allocator = arena.allocator();
2675 2675
2676 var db = try getTestDb(); 2676 var db = try getTestDb();
2677 defer db.deinit(); 2677 defer db.deinit();
@@ -2718,7 +2718,7 @@ test "sqlite: read a single value into an enum backed by an integer" {
2718test "sqlite: read a single value into an enum backed by a string" { 2718test "sqlite: read a single value into an enum backed by a string" {
2719 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2719 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2720 defer arena.deinit(); 2720 defer arena.deinit();
2721 var allocator = arena.allocator(); 2721 const allocator = arena.allocator();
2722 2722
2723 var db = try getTestDb(); 2723 var db = try getTestDb();
2724 defer db.deinit(); 2724 defer db.deinit();
@@ -2819,7 +2819,7 @@ test "sqlite: bind string literal" {
2819test "sqlite: bind pointer" { 2819test "sqlite: bind pointer" {
2820 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2820 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2821 defer arena.deinit(); 2821 defer arena.deinit();
2822 var allocator = arena.allocator(); 2822 const allocator = arena.allocator();
2823 2823
2824 var db = try getTestDb(); 2824 var db = try getTestDb();
2825 defer db.deinit(); 2825 defer db.deinit();
@@ -2842,7 +2842,7 @@ test "sqlite: bind pointer" {
2842test "sqlite: read pointers" { 2842test "sqlite: read pointers" {
2843 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2843 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2844 defer arena.deinit(); 2844 defer arena.deinit();
2845 var allocator = arena.allocator(); 2845 const allocator = arena.allocator();
2846 2846
2847 var db = try getTestDb(); 2847 var db = try getTestDb();
2848 defer db.deinit(); 2848 defer db.deinit();
@@ -2952,7 +2952,7 @@ test "sqlite: statement reset" {
2952test "sqlite: statement iterator" { 2952test "sqlite: statement iterator" {
2953 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2953 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2954 defer arena.deinit(); 2954 defer arena.deinit();
2955 var allocator = arena.allocator(); 2955 const allocator = arena.allocator();
2956 2956
2957 var db = try getTestDb(); 2957 var db = try getTestDb();
2958 defer db.deinit(); 2958 defer db.deinit();
@@ -3038,7 +3038,7 @@ test "sqlite: statement iterator" {
3038test "sqlite: blob open, reopen" { 3038test "sqlite: blob open, reopen" {
3039 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3039 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3040 defer arena.deinit(); 3040 defer arena.deinit();
3041 var allocator = arena.allocator(); 3041 const allocator = arena.allocator();
3042 3042
3043 var db = try getTestDb(); 3043 var db = try getTestDb();
3044 defer db.deinit(); 3044 defer db.deinit();
@@ -3197,7 +3197,7 @@ test "sqlite: exec with diags, failing statement" {
3197test "sqlite: savepoint with no failures" { 3197test "sqlite: savepoint with no failures" {
3198 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3198 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3199 defer arena.deinit(); 3199 defer arena.deinit();
3200 var allocator = arena.allocator(); 3200 const allocator = arena.allocator();
3201 3201
3202 var db = try getTestDb(); 3202 var db = try getTestDb();
3203 defer db.deinit(); 3203 defer db.deinit();
@@ -3226,7 +3226,7 @@ test "sqlite: savepoint with no failures" {
3226 var stmt = try db.prepare("SELECT data, author_id FROM article ORDER BY id ASC"); 3226 var stmt = try db.prepare("SELECT data, author_id FROM article ORDER BY id ASC");
3227 defer stmt.deinit(); 3227 defer stmt.deinit();
3228 3228
3229 var rows = try stmt.all( 3229 const rows = try stmt.all(
3230 struct { 3230 struct {
3231 data: []const u8, 3231 data: []const u8,
3232 author_id: usize, 3232 author_id: usize,
@@ -3246,7 +3246,7 @@ test "sqlite: savepoint with no failures" {
3246test "sqlite: two nested savepoints with inner failure" { 3246test "sqlite: two nested savepoints with inner failure" {
3247 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3247 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3248 defer arena.deinit(); 3248 defer arena.deinit();
3249 var allocator = arena.allocator(); 3249 const allocator = arena.allocator();
3250 3250
3251 var db = try getTestDb(); 3251 var db = try getTestDb();
3252 defer db.deinit(); 3252 defer db.deinit();
@@ -3280,7 +3280,7 @@ test "sqlite: two nested savepoints with inner failure" {
3280 var stmt = try db.prepare("SELECT data, author_id FROM article"); 3280 var stmt = try db.prepare("SELECT data, author_id FROM article");
3281 defer stmt.deinit(); 3281 defer stmt.deinit();
3282 3282
3283 var rows = try stmt.all( 3283 const rows = try stmt.all(
3284 struct { 3284 struct {
3285 data: []const u8, 3285 data: []const u8,
3286 author_id: usize, 3286 author_id: usize,
@@ -3297,7 +3297,7 @@ test "sqlite: two nested savepoints with inner failure" {
3297test "sqlite: two nested savepoints with outer failure" { 3297test "sqlite: two nested savepoints with outer failure" {
3298 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3298 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3299 defer arena.deinit(); 3299 defer arena.deinit();
3300 var allocator = arena.allocator(); 3300 const allocator = arena.allocator();
3301 3301
3302 var db = try getTestDb(); 3302 var db = try getTestDb();
3303 defer db.deinit(); 3303 defer db.deinit();
@@ -3325,7 +3325,7 @@ test "sqlite: two nested savepoints with outer failure" {
3325 var stmt = try db.prepare("SELECT 1 FROM article"); 3325 var stmt = try db.prepare("SELECT 1 FROM article");
3326 defer stmt.deinit(); 3326 defer stmt.deinit();
3327 3327
3328 var rows = try stmt.all(usize, allocator, .{}, .{}); 3328 const rows = try stmt.all(usize, allocator, .{}, .{});
3329 try testing.expectEqual(@as(usize, 0), rows.len); 3329 try testing.expectEqual(@as(usize, 0), rows.len);
3330} 3330}
3331 3331
@@ -3400,7 +3400,7 @@ test "sqlite: bind custom type" {
3400test "sqlite: bind runtime slice" { 3400test "sqlite: bind runtime slice" {
3401 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3401 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3402 defer arena.deinit(); 3402 defer arena.deinit();
3403 var allocator = arena.allocator(); 3403 const allocator = arena.allocator();
3404 3404
3405 // creating array list on heap so that it's deemed runtime size 3405 // creating array list on heap so that it's deemed runtime size
3406 var list = std.ArrayList([]const u8).init(allocator); 3406 var list = std.ArrayList([]const u8).init(allocator);
@@ -3423,7 +3423,7 @@ test "sqlite: bind runtime slice" {
3423test "sqlite: prepareDynamic" { 3423test "sqlite: prepareDynamic" {
3424 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3424 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3425 defer arena.deinit(); 3425 defer arena.deinit();
3426 var allocator = arena.allocator(); 3426 const allocator = arena.allocator();
3427 3427
3428 var db = try getTestDb(); 3428 var db = try getTestDb();
3429 defer db.deinit(); 3429 defer db.deinit();
@@ -3465,7 +3465,7 @@ test "sqlite: prepareDynamic" {
3465test "sqlite: oneDynamic" { 3465test "sqlite: oneDynamic" {
3466 var arena = std.heap.ArenaAllocator.init(testing.allocator); 3466 var arena = std.heap.ArenaAllocator.init(testing.allocator);
3467 defer arena.deinit(); 3467 defer arena.deinit();
3468 var allocator = arena.allocator(); 3468 const allocator = arena.allocator();
3469 3469
3470 var db = try getTestDb(); 3470 var db = try getTestDb();
3471 defer db.deinit(); 3471 defer db.deinit();
@@ -3713,7 +3713,7 @@ test "sqlite: create aggregate function with no aggregate context" {
3713 }.step, 3713 }.step,
3714 struct { 3714 struct {
3715 fn finalize(fctx: FunctionContext) u32 { 3715 fn finalize(fctx: FunctionContext) u32 {
3716 var ctx = fctx.userContext(*MyContext) orelse return 0; 3716 const ctx = fctx.userContext(*MyContext) orelse return 0;
3717 return ctx.sum; 3717 return ctx.sum;
3718 } 3718 }
3719 }.finalize, 3719 }.finalize,
@@ -3761,13 +3761,13 @@ test "sqlite: create aggregate function with an aggregate context" {
3761 null, 3761 null,
3762 struct { 3762 struct {
3763 fn step(fctx: FunctionContext, input: u32) void { 3763 fn step(fctx: FunctionContext, input: u32) void {
3764 var ctx = fctx.aggregateContext(*u32) orelse return; 3764 const ctx = fctx.aggregateContext(*u32) orelse return;
3765 ctx.* += input; 3765 ctx.* += input;
3766 } 3766 }
3767 }.step, 3767 }.step,
3768 struct { 3768 struct {
3769 fn finalize(fctx: FunctionContext) u32 { 3769 fn finalize(fctx: FunctionContext) u32 {
3770 var ctx = fctx.aggregateContext(*u32) orelse return 0; 3770 const ctx = fctx.aggregateContext(*u32) orelse return 0;
3771 return ctx.*; 3771 return ctx.*;
3772 } 3772 }
3773 }.finalize, 3773 }.finalize,