checkpoint
This commit is contained in:
parent
d144069dbe
commit
16fb3848a1
4 changed files with 259 additions and 62 deletions
33
src/spacetime/FFI.zig
Normal file
33
src/spacetime/FFI.zig
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
const spacetime = @import("../spacetime.zig");
|
||||
|
||||
const BytesSink = spacetime.BytesSink;
|
||||
const BytesSource = spacetime.BytesSource;
|
||||
const TableId = spacetime.TableId;
|
||||
const RowIter = spacetime.RowIter;
|
||||
const IndexId = spacetime.IndexId;
|
||||
const ColId = spacetime.ColId;
|
||||
|
||||
extern "spacetime_10.0" fn bytes_sink_write(sink: BytesSink, buffer_ptr: [*c]const u8, buffer_len_ptr: *usize) u16;
|
||||
extern "spacetime_10.0" fn bytes_source_read(source: BytesSource, buffer_ptr: [*c]u8, buffer_len_ptr: *usize) i16;
|
||||
extern "spacetime_10.0" fn table_id_from_name(name: [*c]const u8, name_len: usize, out: *TableId) u16;
|
||||
extern "spacetime_10.0" fn datastore_insert_bsatn(table_id: TableId, row_ptr: [*c]const u8, row_len_ptr: *usize) u16;
|
||||
extern "spacetime_10.0" fn row_iter_bsatn_advance(iter: RowIter, buffer_ptr: [*c]u8, buffer_len_ptr: *usize) i16;
|
||||
extern "spacetime_10.0" fn datastore_table_scan_bsatn(table_id: TableId, out: [*c]RowIter) u16;
|
||||
extern "spacetime_10.0" fn index_id_from_name(name_ptr: [*c]const u8, name_len: usize, out: *IndexId) u16;
|
||||
extern "spacetime_10.0" fn datastore_index_scan_range_bsatn( index_id: IndexId, prefix_ptr: [*c]const u8, prefix_len: usize, prefix_elems: ColId, rstart_ptr: [*c]const u8, rstart_len: usize, rend_ptr: [*c]const u8, rend_len: usize, out: *RowIter) u16;
|
||||
|
||||
pub fn tableIdFromName(name: []const u8, out: *TableId) u16 {
|
||||
return spacetime.retMap(table_id_from_name(name.ptr, name.len, out));
|
||||
}
|
||||
|
||||
pub fn datastoreTableScanBsatn(table_id: TableId, out: [*c]RowIter) u16 {
|
||||
return spacetime.retMap(datastore_table_scan_bsatn(table_id, out));
|
||||
}
|
||||
|
||||
pub fn indexIdFromName(name: []const u8, out: *IndexId) u16 {
|
||||
return spacetime.retMap(index_id_from_name(name.ptr, name.len, out));
|
||||
}
|
||||
|
||||
pub fn datastoreIndexScanRangeBsatn( index_id: IndexId, prefix: []const u8, prefix_elems: ColId, rstart: []const u8, rend: []const u8, out: *RowIter) u16 {
|
||||
return spacetime.retMap(datastore_index_scan_range_bsatn( index_id, prefix.ptr, prefix.len, prefix_elems, rstart.ptr, rstart.len, rend.ptr, rend.len, out));
|
||||
}
|
||||
|
|
@ -346,39 +346,28 @@ pub fn Iter(struct_type: type) type {
|
|||
last_ret: SpacetimeValue = .OK,
|
||||
|
||||
pub fn next(self: *@This()) spacetime.ReducerError!?*struct_type {
|
||||
std.log.debug("line: {} (handle: {})", .{358, self.handle});
|
||||
var buffer_len: usize = undefined;
|
||||
//while(true)
|
||||
//{
|
||||
var ret: spacetime.SpacetimeValue = self.last_ret;
|
||||
if(self.contents == null or self.contents.?.len == 0) {
|
||||
std.log.debug("line: {} (contents: {any})", .{364, self.contents});
|
||||
if(self.handle._inner == spacetime.RowIter.INVALID._inner) {
|
||||
std.log.debug("line: {}", .{366});
|
||||
|
||||
self.contents = null;
|
||||
return null;
|
||||
}
|
||||
std.log.debug("line: {}", .{371});
|
||||
|
||||
buffer_len = self.buffer.len;
|
||||
std.log.debug("line: {}", .{374});
|
||||
ret = try spacetime.retMap(spacetime.row_iter_bsatn_advance(self.handle, @constCast(@ptrCast(&self.buffer)), &buffer_len));
|
||||
std.log.debug("ret: {}", .{ret});
|
||||
std.log.debug("self.buffer[0..buffer_len]: {any} {any} {any}", .{(&self.buffer).ptr, self.buffer.len, buffer_len});
|
||||
self.contents = self.buffer[0..buffer_len];
|
||||
std.log.debug("line: {}", .{379});
|
||||
|
||||
if(ret == .EXHAUSTED) {
|
||||
std.log.debug("line: {}", .{382});
|
||||
self.handle = spacetime.RowIter.INVALID;
|
||||
}
|
||||
std.log.debug("line: {}", .{385});
|
||||
self.last_ret = ret;
|
||||
}
|
||||
if(self.contents == null or self.contents.?.len == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
std.log.debug("{}", .{struct_type});
|
||||
return StructDeserializer(struct_type)(self.allocator, &(self.contents.?));
|
||||
//}
|
||||
}
|
||||
|
||||
pub fn one_or_null(self: *@This()) ?*struct_type {
|
||||
|
|
@ -428,7 +417,7 @@ pub fn Column2ORM(comptime table_name: []const u8, comptime column_name: [:0]con
|
|||
allocator: std.mem.Allocator,
|
||||
|
||||
pub fn filter(self: @This(), val: wrapped_type) !Iter(struct_type) {
|
||||
const temp_name: []const u8 = table_name ++ "_" ++ column_name ++ "_idx_btree";
|
||||
const temp_name: []const u8 = comptime table_name ++ "_" ++ column_name ++ "_idx_btree";
|
||||
var id = spacetime.IndexId{ ._inner = std.math.maxInt(u32)};
|
||||
const err = try spacetime.retMap(spacetime.index_id_from_name(temp_name.ptr, temp_name.len, &id));
|
||||
std.log.debug("index_id_from_name({}): {x}", .{err, id._inner});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue