diff options
| author | 2022-03-19 03:30:42 -0300 | |
|---|---|---|
| committer | 2022-05-14 21:25:51 +0200 | |
| commit | f42a3026dd255eb5612bb2be03ed1f04cad9958d (patch) | |
| tree | 0a7cba34fec995e03d8d86a3bad830025d7b7e66 /sqlite.zig | |
| parent | copy options over (diff) | |
| download | zig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.tar.gz zig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.tar.xz zig-sqlite-f42a3026dd255eb5612bb2be03ed1f04cad9958d.zip | |
fix splitting logic for runMulti
Diffstat (limited to 'sqlite.zig')
| -rw-r--r-- | sqlite.zig | 25 |
1 files changed, 21 insertions, 4 deletions
| @@ -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 | ||
| 2325 | test "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 | |||
| 2316 | test "sqlite: db pragma" { | 2333 | test "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(); |