summaryrefslogtreecommitdiff
path: root/sqlite.zig
diff options
context:
space:
mode:
authorGravatar Luna2022-03-19 03:30:42 -0300
committerGravatar Vincent Rischmann2022-05-14 21:25:51 +0200
commitf42a3026dd255eb5612bb2be03ed1f04cad9958d (patch)
tree0a7cba34fec995e03d8d86a3bad830025d7b7e66 /sqlite.zig
parentcopy options over (diff)
downloadzig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.tar.gz
zig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.tar.xz
zig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.zip
fix splitting logic for runMulti
Diffstat (limited to '')
-rw-r--r--sqlite.zig25
1 files changed, 21 insertions, 4 deletions
diff --git a/sqlite.zig b/sqlite.zig
index ba87c12..63b7a7d 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -887,12 +887,21 @@ pub const Db = struct {
887 new_options.sql_tail_ptr = &sql_tail_ptr; 887 new_options.sql_tail_ptr = &sql_tail_ptr;
888 888
889 while (true) { 889 while (true) {
890 // continuously prepare and execute 890 // continuously prepare and execute (dynamically as there's no
891 var stmt = try self.prepareWithDiags(query, new_options); 891 // values to bind in this case)
892 var stmt: DynamicStatement = undefined;
893 if (sql_tail_ptr != null) {
894 const new_query = std.mem.span(sql_tail_ptr.?);
895 if (new_query.len == 0) break;
896 stmt = try self.prepareDynamicWithDiags(new_query, new_options);
897 } else {
898 stmt = try self.prepareDynamicWithDiags(query, new_options);
899 }
900
892 defer stmt.deinit(); 901 defer stmt.deinit();
893 if (sql_tail_ptr == null) break; 902 try stmt.exec(new_options, .{});
894 903
895 try stmt.exec(options, .{}); 904 if (sql_tail_ptr == null) break;
896 } 905 }
897 } 906 }
898}; 907};
@@ -2313,6 +2322,14 @@ test "sqlite: db init" {
2313 _ = db; 2322 _ = db;
2314} 2323}
2315 2324
2325test "sqlite: run multi" {
2326 var db = try getTestDb();
2327 defer db.deinit();
2328 try db.runMulti("create table a(b int); create table b(c int);", .{});
2329 const val = try db.one(i32, "select max(c) from b", .{}, .{});
2330 try testing.expectEqual(@as(?i32, 0), val);
2331}
2332
2316test "sqlite: db pragma" { 2333test "sqlite: db pragma" {
2317 var arena = std.heap.ArenaAllocator.init(testing.allocator); 2334 var arena = std.heap.ArenaAllocator.init(testing.allocator);
2318 defer arena.deinit(); 2335 defer arena.deinit();