tiny.sql.DatabaseWrite
Defined in tiny.sql.
API (20)
Actions
Public operations.
deinitdiscardensureflushflushRelationpendingRelationsstageDeletestagePutstageRelationstageUpdatestagedRelationEditsstagedRelationRoot
Types and contracts
Public types and contracts.
Fields and members
Public fields and members.
Source
Source: lib/sql/src/session/database.zig:483
zig
pub const DatabaseWrite = struct { pub const Limits = staging.Limits; pub const Capacity = staging.Capacity; pub const Demand = staging.Storage.Demand; pub const StagedEdits = staging.Storage.Iterator; pub const Workspace = staging.Workspace; session: *DatabaseSession, generation: u64, active: bool = true, pub fn deinit(self: *DatabaseWrite) void { self.discard(); self.* = undefined; } pub fn stageRelation(self: *DatabaseWrite, relation: *relation_session.RelationSession) DatabaseError!void { std.debug.assert(self.active); try self.session.stageRelation(&self.state().storage, relation); } pub fn ensure(self: *const DatabaseWrite, demand: Demand) DatabaseError!void { std.debug.assert(self.active); try self.stateConst().storage.ensure(demand); } pub fn stagedRelationRoot(self: *DatabaseWrite, name: []const u8) ?*const version.RelationRoot { _ = self.state(); const staged = self.session.stagedRelation(name) orelse return null; return &staged.root; } pub fn stagedRelationEdits(self: *DatabaseWrite, name: []const u8) ?StagedEdits { std.debug.assert(self.active); const relation_index = self.session.stagedRelationIndex(name) orelse return null; return self.state().storage.iterator(relation_index); } pub fn stagePut(self: *DatabaseWrite, name: []const u8, rowid: i64, values: []const row.Value) DatabaseError!void { const phase = trace.scope("session.database.stage_put"); defer phase.end(); std.debug.assert(self.active); const relation_index = self.session.stagedRelationIndex(name) orelse return error.NoStagedRelation; try self.state().storage.appendPut(relation_index, rowid, values); } pub fn stageUpdate(self: *DatabaseWrite, name: []const u8, rowid: i64, assignments: []const relation_mod.Edit.Assignment) DatabaseError!void { const phase = trace.scope("session.database.stage_update"); defer phase.end(); std.debug.assert(self.active); const relation_index = self.session.stagedRelationIndex(name) orelse return error.NoStagedRelation; try self.state().storage.appendUpdate(relation_index, rowid, assignments); } pub fn stageDelete(self: *DatabaseWrite, name: []const u8, rowid: i64) DatabaseError!void { const phase = trace.scope("session.database.stage_delete"); defer phase.end(); std.debug.assert(self.active); const relation_index = self.session.stagedRelationIndex(name) orelse return error.NoStagedRelation; try self.state().storage.appendDelete(relation_index, rowid); } pub fn flush(self: *DatabaseWrite) DatabaseError!DatabaseFlush { std.debug.assert(self.active); const active_write = self.state(); const flush_value = try self.session.flushStagedRelations( active_write.flush_allocator, active_write.options, &active_write.storage, ); active_write.workspace.release(&active_write.storage); self.session.active_write = null; self.active = false; return flush_value; } pub fn flushRelation(self: *DatabaseWrite, relation: *relation_session.RelationSession) DatabaseError!relation_session.RelationFlush { std.debug.assert(self.active); try self.stageRelation(relation); var flush_value = try self.flush(); defer flush_value.deinit(); return flush_value.onlyRelation(); } pub fn pendingRelations(self: *const DatabaseWrite) usize { _ = self.stateConst(); return self.session.pendingRelations(); } pub fn discard(self: *DatabaseWrite) void { if (!self.active) return; if (self.session.active_write) |*active_write| { if (active_write.generation == self.generation) { self.session.discardStagedRelations(); self.session.discardWrite(); } } self.active = false; } fn state(self: *DatabaseWrite) *ActiveWrite { std.debug.assert(self.active); const active_write = &self.session.active_write.?; std.debug.assert(active_write.generation == self.generation); return active_write; } fn stateConst(self: *const DatabaseWrite) *const ActiveWrite { std.debug.assert(self.active); const active_write = &self.session.active_write.?; std.debug.assert(active_write.generation == self.generation); return active_write; }};Source: lib/sql/src/root.zig:167
zig
pub const DatabaseWrite = session.DatabaseWrite;Also reachable as
Audit
| Definitions | 18 |
|---|---|
| Public names | 36 |
| Members | 3 |
| Version | 26.7.0 |
| Revision | daab053ee433 |