tiny.smg.storage.database.edits
Defined in storage.database.
API (1)
Actions
Public operations.
Source
Source: tools/smg/src/storage/database/edits.zig
zig
const sql = @import("sql");const storage = @import("../root.zig");const database = @import("root.zig");const rows = storage.rows;pub fn apply(opened: *database.Database, edits: rows.GraphEdits) database.Error!void { if (edits.isEmpty()) return; var node_session: ?sql.RelationSession = null; defer if (node_session) |*session| session.deinit(); if (edits.node_puts.len != 0 or edits.node_deletes.len != 0) { var session = try sql.RelationSession.open(opened.allocator, &opened.connection.catalog, rows.nodes_relation); errdefer session.deinit(); for (edits.node_puts) |put| try rows.putNodeRow(opened.allocator, &session, put.rowid, put.node); for (edits.node_deletes) |rowid| try session.delete(rowid); node_session = session; } var edge_session: ?sql.RelationSession = null; defer if (edge_session) |*session| session.deinit(); if (edits.edge_puts.len != 0 or edits.edge_deletes.len != 0) { var session = try sql.RelationSession.open(opened.allocator, &opened.connection.catalog, rows.edges_relation); errdefer session.deinit(); for (edits.edge_puts) |put| try rows.putEdgeRow(opened.allocator, &session, put.rowid, put.edge); for (edits.edge_deletes) |rowid| try session.delete(rowid); edge_session = session; } var concept_session: ?sql.RelationSession = null; defer if (concept_session) |*session| session.deinit(); if (edits.concept_document_puts.len != 0 or edits.concept_document_deletes.len != 0) { var session = try sql.RelationSession.open(opened.allocator, &opened.connection.catalog, rows.concept_documents_relation); errdefer session.deinit(); for (edits.concept_document_deletes) |rowid| try session.delete(rowid); for (edits.concept_document_puts) |put| try rows.putConceptDocumentRow(&session, put); concept_session = session; } var limits = sql.DatabaseWrite.Limits{ .relations = 0, .edits = 0, .payload_bytes = 0, .assignments = 0, }; if (node_session) |*session| limits = try limits.combine(try session.stagingLimits()); if (edge_session) |*session| limits = try limits.combine(try session.stagingLimits()); if (concept_session) |*session| limits = try limits.combine(try session.stagingLimits()); var workspace = try sql.DatabaseWrite.Workspace.allocate( opened.allocator, limits, ); defer workspace.deallocate(opened.allocator); var write = try opened.connection.beginWrite(&workspace, opened.allocator, .{ .limits = limits, .durability = .buffered, }); var write_live = true; errdefer if (write_live) write.deinit(); if (node_session) |*session| { try write.stageRelation(session); node_session = null; } if (edge_session) |*session| { try write.stageRelation(session); edge_session = null; } if (concept_session) |*session| { try write.stageRelation(session); concept_session = null; } var flush = try write.flush(); write_live = false; flush.deinit();}Source: tools/smg/src/storage/database/root.zig:1
zig
pub const edits = @import("edits.zig");Complete caller list for storage.database.edits.apply
9 direct callers.
tiny.smg.concepts.publish[function] attools/smg/src/concepts.zig:599tools.smg.src.storage.database.lifecycle.test_smg_database_rebuilds_unreadable_history_from_live_state[function] — test; no exact target attools/smg/src/storage/database/lifecycle.zig:337in nearest public ownertiny.smg.storage.database.lifecycletools.smg.src.storage.database.lifecycle.test_smg_database_round-trips_nodes_and_edges_with_history[function] — test; no exact target attools/smg/src/storage/database/lifecycle.zig:220in nearest public ownertiny.smg.storage.database.lifecycletools.smg.src.storage.database.lifecycle.test_smg_database_tolerates_empty_graph_edits[function] — test; no exact target attools/smg/src/storage/database/lifecycle.zig:377in nearest public ownertiny.smg.storage.database.lifecycletools.smg.src.storage.database.lifecycle.test_smg_database_updates_and_deletes_survive_checkpointed_reopen[function] — test; no exact target attools/smg/src/storage/database/lifecycle.zig:299in nearest public ownertiny.smg.storage.database.lifecycletools.smg.src.storage.nodes.test_bounded_node_listing_keeps_lexical_order_independent_of_rowid[function] — test; no exact target attools/smg/src/storage/nodes.zig:260in nearest public ownertiny.smg.storage.nodestools.smg.src.storage.store.test_expected_publication_rejects_stale_heads_before_arming_the_refresh_marker[function] — test; no exact target attools/smg/src/storage/store.zig:293in nearest public ownertiny.smg.storage.storetools.smg.src.storage.sync.applyBatches[function] — private; no exact target attools/smg/src/storage/sync.zig:511in nearest public ownertiny.smg.storage.synctools.smg.src.storage.sync.test_graph_replacement_streams_stored_rows_and_preserves_stable_rowids[function] — test; no exact target attools/smg/src/storage/sync.zig:1052in nearest public ownertiny.smg.storage.sync
Audit
| Definitions | 2 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |