lib/sql/src/root.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

  1 //! An embedded relational database written in Zig holds its rows in B-trees
  2 //! over fixed 4096-byte units of storage, called *pages*. A page a transaction
  3 //! changes is appended to the *write-ahead log* first, and a later *checkpoint*
  4 //! copies the committed pages into the *base file*, while a commit can sync the
  5 //! log before it returns, or leave the bytes buffered and say so. Above the
  6 //! pages sits a versioned *history*: every commit records the roots of the
  7 //! database's *relations*, so an earlier state can be read back and two states
  8 //! can be compared.
  9 //!
 10 //! Two branches are brought together by a *three-way merge*, which compares
 11 //! each side against their shared ancestor, requires one schema across the
 12 //! ancestor and both sides, and reports `SchemaMismatch` otherwise. Where the
 13 //! two sides disagree, the merge keeps ours in the working state and records a
 14 //! *conflict record* holding the ancestor's, ours, and theirs bytes, at the row
 15 //! when the schemas agree and at the whole relation when the definitions
 16 //! diverge. The merge semantics are written out formally under
 17 //! `verification/sql`.
 18 
 19 pub const store = @import("store.zig");
 20 pub const page = @import("page.zig");
 21 pub const pager = @import("pager.zig");
 22 pub const blame = @import("blame.zig");
 23 pub const branch = @import("branch.zig");
 24 pub const catalog = @import("catalog.zig");
 25 pub const chunk = @import("chunk.zig");
 26 pub const connection = @import("connection.zig");
 27 pub const file = @import("file.zig");
 28 pub const history = @import("history/root.zig");
 29 pub const index = @import("index.zig");
 30 pub const key = @import("key.zig");
 31 pub const lattice = @import("lattice.zig");
 32 pub const lifecycle = @import("lifecycle.zig");
 33 pub const plan = @import("plan.zig");
 34 pub const record = @import("record.zig");
 35 pub const repository = @import("repository/root.zig");
 36 pub const relation = @import("relation.zig");
 37 pub const diff = @import("diff.zig");
 38 pub const merge = @import("merge.zig");
 39 pub const row = @import("row.zig");
 40 pub const search = @import("search/root.zig");
 41 pub const session = @import("session/root.zig");
 42 pub const space = @import("space.zig");
 43 pub const statement = @import("statement/root.zig");
 44 pub const sync = @import("sync.zig");
 45 pub const table = @import("table.zig");
 46 pub const tree = @import("tree.zig");
 47 pub const wal = @import("wal.zig");
 48 pub const trace = @import("trace.zig");
 49 pub const version = @import("version.zig");
 50 
 51 pub const Store = store.Store;
 52 pub const Snapshot = store.Snapshot;
 53 pub const Write = store.Write;
 54 pub const Entry = store.Entry;
 55 pub const Error = store.Error;
 56 pub const LeafPage = page.Leaf;
 57 pub const BranchPage = page.Branch;
 58 pub const MetaPage = page.Meta;
 59 pub const OverflowPage = page.Overflow;
 60 pub const PageKind = page.Kind;
 61 pub const PageEntry = page.Entry;
 62 pub const Catalog = catalog.Catalog;
 63 pub const CatalogReader = catalog.Reader;
 64 pub const CatalogOptions = catalog.Options;
 65 pub const CatalogSchema = catalog.Schema;
 66 pub const CatalogCommit = catalog.Commit;
 67 pub const CatalogRelationDefinition = catalog.RelationDefinition;
 68 pub const CatalogIndexDefinition = catalog.IndexDefinition;
 69 pub const CatalogColumnDefinition = catalog.ColumnDefinition;
 70 pub const CatalogRelationHandle = catalog.RelationHandle;
 71 pub const CatalogReadRelationHandle = catalog.ReadRelationHandle;
 72 pub const CatalogRelationStats = catalog.RelationStats;
 73 pub const CatalogIndexStats = catalog.IndexStats;
 74 pub const CatalogIndexDistribution = catalog.IndexDistribution;
 75 pub const CatalogIndexSample = catalog.IndexSample;
 76 pub const CatalogRelationNames = catalog.RelationNames;
 77 pub const Connection = connection.Connection;
 78 pub const ConnectionOptions = connection.Options;
 79 pub const ConnectionExecuteOptions = connection.ExecuteOptions;
 80 pub const ConnectionWriteOptions = connection.WriteOptions;
 81 pub const ConnectionMergeOptions = connection.MergeOptions;
 82 pub const ConnectionRelationView = connection.RelationView;
 83 pub const ConnectionDatabaseView = connection.DatabaseView;
 84 pub const History = history.History;
 85 pub const HistoryOptions = history.Options;
 86 pub const HistoryRecoveryPolicy = history.RecoveryPolicy;
 87 pub const HistoryRecovery = history.Recovery;
 88 pub const HistoryTruncation = history.Truncation;
 89 pub const LifecycleRecovery = lifecycle.Recovery;
 90 pub const LifecycleWorkspace = lifecycle.Workspace;
 91 pub const LifecycleReadOptions = lifecycle.ReadOptions;
 92 pub const LifecycleReadOpened = lifecycle.ReadOpened;
 93 pub const LifecycleReadRepairReason = lifecycle.ReadRepairReason;
 94 pub const LifecycleReadOpenResult = lifecycle.ReadOpenResult;
 95 pub const LifecycleReadRefsRefreshResult = lifecycle.ReadRefsRefreshResult;
 96 pub const LifecycleSparseReadOptions = lifecycle.SparseReadOptions;
 97 pub const LifecycleSparseReadAssessment = lifecycle.SparseReadAssessment;
 98 pub const LifecycleSparseReadBeginResult = lifecycle.SparseReadBeginResult;
 99 pub const LifecycleSparseReadFinishResult = lifecycle.SparseReadFinishResult;
100 pub const LifecycleSparseReadSession = lifecycle.SparseReadSession;
101 pub const LazyHistory = lifecycle.LazyHistory;
102 pub const HistoryConflictEntries = history.ConflictEntries;
103 pub const HistoryConflictArtifacts = history.ConflictArtifacts;
104 pub const HistoryFileRemote = sync.FileRemote;
105 pub const HistoryFileRemoteLock = sync.FileRemoteLock;
106 pub const HistoryRemoteConfig = sync.RemoteConfig;
107 pub const HistoryRemoteConfigEntry = sync.RemoteConfigEntry;
108 pub const HistoryRemoteConfigOptions = sync.RemoteConfigOptions;
109 pub const HistoryBranchUpstreamConfig = sync.BranchUpstreamConfig;
110 pub const HistoryBranchUpstreamConfigEntry = sync.BranchUpstreamEntry;
111 pub const HistoryBranchUpstreamConfigOptions = sync.BranchUpstreamOptions;
112 pub const HistorySyncPack = sync.Pack;
113 pub const HistorySyncStats = sync.Stats;
114 pub const HistorySyncAdvertisement = sync.Advertisement;
115 pub const HistorySyncFetchRequest = sync.FetchRequest;
116 pub const encodeHistoryRemoteConfig = sync.encodeRemoteConfig;
117 pub const decodeHistoryRemoteConfig = sync.decodeRemoteConfig;
118 pub const readHistoryRemoteConfig = sync.readRemoteConfig;
119 pub const writeHistoryRemoteConfig = sync.writeRemoteConfig;
120 pub const encodeHistoryBranchUpstreamConfig = sync.encodeBranchUpstreamConfig;
121 pub const decodeHistoryBranchUpstreamConfig = sync.decodeBranchUpstreamConfig;
122 pub const readHistoryBranchUpstreamConfig = sync.readBranchUpstreamConfig;
123 pub const writeHistoryBranchUpstreamConfig = sync.writeBranchUpstreamConfig;
124 pub const lockHistoryFileRemote = sync.lockFileRemote;
125 pub const advertiseHistoryRefs = sync.advertiseRefs;
126 pub const encodeHistoryAdvertisement = sync.encodeAdvertisement;
127 pub const decodeHistoryAdvertisement = sync.decodeAdvertisement;
128 pub const createHistoryFetchRequest = sync.fetchRequestFromHistory;
129 pub const encodeHistoryFetchRequest = sync.encodeFetchRequest;
130 pub const decodeHistoryFetchRequest = sync.decodeFetchRequest;
131 pub const exportHistoryPackForFetchRequest = sync.exportForFetchRequest;
132 pub const exportHistoryPackBytesForFetchRequest = sync.exportBytesForFetchRequest;
133 pub const exportHistoryPack = sync.exportAll;
134 pub const exportMissingHistoryPack = sync.exportMissingRefs;
135 pub const exportMissingHistoryRefPack = sync.exportMissingRefNames;
136 pub const encodeHistoryPack = sync.encodePack;
137 pub const decodeHistoryPack = sync.decodePack;
138 pub const exportHistoryPackBytes = sync.exportBytesAll;
139 pub const exportHistoryRefPackBytes = sync.exportRefNameBytes;
140 pub const exportMissingHistoryPackBytes = sync.exportMissingBytesAll;
141 pub const exportMissingHistoryRefPackBytes = sync.exportMissingRefNameBytes;
142 pub const importHistoryPack = sync.importPack;
143 pub const importHistoryPackBytes = sync.importBytes;
144 pub const cloneHistory = sync.cloneAll;
145 pub const fetchHistory = sync.fetch;
146 pub const fetchHistoryPack = sync.fetchPack;
147 pub const fetchHistoryPackBytes = sync.fetchBytes;
148 pub const pushHistoryFastForward = sync.pushFastForward;
149 pub const pushHistoryFastForwardTo = sync.pushFastForwardTo;
150 pub const deleteHistoryRemoteRef = sync.deleteRemoteRef;
151 pub const pullHistoryFastForward = sync.pullFastForward;
152 pub const cloneHistoryFile = sync.cloneFile;
153 pub const fetchHistoryFile = sync.fetchFile;
154 pub const pushHistoryFileFastForward = sync.pushFileFastForward;
155 pub const pushHistoryFileFastForwardTo = sync.pushFileFastForwardTo;
156 pub const deleteHistoryFileRemoteRef = sync.deleteFileRemoteRef;
157 pub const pullHistoryFileFastForward = sync.pullFileFastForward;
158 pub const BranchCommitEntry = branch.CommitEntry;
159 pub const BranchCheckout = branch.Checkout;
160 pub const PreparedRelation = plan.PreparedRelation;
161 pub const PreparedPlanKey = plan.PlanKey;
162 pub const RelationExecution = plan.RelationExecution;
163 pub const RelationRead = plan.RelationRead;
164 pub const emptyPlanParameterShape = plan.emptyParameterShape;
165 pub const prepareRelation = plan.prepareRelation;
166 pub const DatabaseSession = session.DatabaseSession;
167 pub const DatabaseWrite = session.DatabaseWrite;
168 pub const DatabaseSessionError = session.DatabaseError;
169 pub const DatabaseSessionFlush = session.DatabaseFlush;
170 pub const CatalogSessionFlush = session.CatalogFlush;
171 pub const RelationSession = session.RelationSession;
172 pub const RelationSessionFlush = session.RelationFlush;
173 pub const Statement = statement.Statement;
174 pub const StatementParameter = statement.Parameter;
175 pub const PreparedStatement = statement.Prepared;
176 pub const StatementCursor = statement.Cursor;
177 pub const StatementResult = statement.Result;
178 pub const FileDatabase = file.Database;
179 pub const FileDatabaseWorkspace = file.DatabaseWorkspace;
180 pub const FileReadOnlyDatabase = file.ReadOnlyDatabase;
181 pub const FileSparseReadOnlyDatabase = file.SparseReadOnlyDatabase;
182 pub const FileReadOpenOptions = file.ReadOpenOptions;
183 pub const FileReadOpenResult = file.ReadOpenResult;
184 pub const FileReadRepairReason = file.ReadRepairReason;
185 pub const FileSparseReadOptions = file.SparseReadOptions;
186 pub const FileSparseReadOpenResult = file.SparseReadOpenResult;
187 pub const FileSparseRefreshOptions = file.SparseRefreshOptions;
188 pub const FileSparseRefreshResult = file.SparseRefreshResult;
189 pub const FileSparseReadProbe = file.SparseReadProbe;
190 pub const FileReadLease = file.ReadLease;
191 pub const FilePublicationOptions = file.PublicationOptions;
192 pub const FilePublicationToken = file.PublicationToken;
193 pub const FilePublicationFootprint = file.PublicationFootprint;
194 pub const FilePublicationArtifactKind = file.PublicationArtifactKind;
195 pub const FilePublishedReadOpenOptions = file.PublishedReadOpenOptions;
196 pub const FileArtifactPathBytesMax = file.artifact_path_bytes_max;
197 pub const FilePublicationArtifactPathBytesMax = file.publication_artifact_path_bytes_max;
198 pub const fileArtifact = file.artifact;
199 pub const fileArtifactsPresent = file.artifactsPresent;
200 pub const filePublicationArtifact = file.publicationArtifact;
201 pub const filePublicationArtifactKind = file.publicationArtifactKind;
202 pub const filePublicationArtifactsPresent = file.publicationArtifactsPresent;
203 pub const filePublicationFootprint = file.publicationFootprint;
204 pub const FileSnapshot = file.Snapshot;
205 pub const FileTransaction = file.Transaction;
206 pub const FileCommit = file.Commit;
207 pub const FileCommitDurability = file.CommitDurability;
208 pub const FileCommitOptions = file.CommitOptions;
209 pub const FileCheckpointOptions = file.CheckpointOptions;
210 pub const FilePaths = file.Paths;
211 pub const Tree = tree.Tree;
212 pub const TreeHash = tree.Hash;
213 pub const TreeNode = tree.Node;
214 pub const TreeNodeKind = tree.NodeKind;
215 pub const TreeRoot = tree.Root;
216 pub const TreeWrite = tree.Write;
217 pub const TreeWriteOptions = tree.WriteOptions;
218 pub const TreeRange = tree.Range;
219 pub const TreeScan = tree.Scan;
220 pub const TreeScanEntry = tree.ScanEntry;
221 pub const TreeScanStats = tree.ScanStats;
222 pub const TreeSummary = tree.Summary;
223 pub const TreeProjection = tree.Projection;
224 pub const RowIdTable = table.Table;
225 pub const TableProjection = table.Projection;
226 pub const RowValueLimits = table.ValueLimits;
227 pub const RowValueCapacity = table.ValueCapacity;
228 pub const RowValueStorage = table.ValueStorage;
229 pub const TableScan = table.Scan;
230 pub const TableEntry = table.Entry;
231 pub const Space = space.Space;
232 pub const SpaceOptions = space.Options;
233 pub const SpaceRootSpec = space.RootSpec;
234 pub const Index = index.Index;
235 pub const IndexScan = index.Scan;
236 pub const IndexEntry = index.Entry;
237 pub const Relation = relation.Relation;
238 pub const RelationOptions = relation.Options;
239 pub const RelationIndexSpec = relation.IndexSpec;
240 pub const RelationDiff = diff.RelationDiff;
241 pub const RelationDiffChange = diff.Change;
242 pub const RelationDiffChangeKind = diff.ChangeKind;
243 pub const RelationMerge = merge.RelationMerge;
244 pub const RelationMergeMode = merge.RelationMergeMode;
245 pub const RelationMergeEdit = merge.Edit;
246 pub const RelationMergeEditKind = merge.EditKind;
247 pub const RelationMergeConflict = merge.Conflict;
248 pub const DatabaseMerge = merge.DatabaseMerge;
249 pub const DatabaseMergeConflict = merge.DatabaseConflict;
250 pub const DatabaseMergeRelation = merge.DatabaseRelationMerge;
251 pub const Search = search.Search;
252 pub const SearchReader = search.Reader;
253 pub const SearchCacheLock = search.CacheLock;
254 pub const SearchCapabilities = search.Capabilities;
255 pub const SearchDocument = search.Document;
256 pub const SearchSource = search.Source;
257 pub const SearchHit = search.Hit;
258 pub const SearchPrepared = search.Prepared;
259 pub const SearchRankedHit = search.RankedHit;
260 pub const SearchRankedResults = search.RankedResults;
261 pub const SearchRankingOptions = search.RankingOptions;
262 pub const SearchResults = search.Results;
263 pub const SearchSnippetOptions = search.SnippetOptions;
264 pub const SearchPostingStats = search.PostingStats;
265 pub const SearchToken = search.Token;
266 pub const SearchFieldSeparator = search.field_separator;
267 pub const SearchMaxDocumentBytes = search.max_document_bytes;
268 pub const searchSnippet = search.snippet;
269 pub const RowView = row.View;
270 pub const RowSpec = row.Spec;
271 pub const RowValue = row.Value;
272 pub const RowStorage = row.Storage;
273 pub const RowColumn = row.Column;
274 pub const RowCollation = row.Collation;
275 pub const Hash = version.Hash;
276 pub const DatabaseValue = version.DatabaseValue;
277 pub const RelationValue = version.RelationValue;
278 pub const DatabaseRoot = version.DatabaseRoot;
279 pub const RelationRoot = version.RelationRoot;
280 pub const RelationSchema = version.RelationSchema;
281 pub const IndexRoot = version.IndexRoot;
282 pub const StatsRoot = version.StatsRoot;
283 pub const ConflictArtifact = version.ConflictArtifact;
284 pub const ConflictEntry = version.ConflictEntry;
285 pub const ConflictKind = version.ConflictKind;
286 pub const ConflictRoot = version.ConflictRoot;
287 pub const ConflictValue = version.ConflictValue;
288 pub const Commit = version.Commit;
289 pub const Ref = version.Ref;
290 pub const WorkingSet = version.WorkingSet;
291 pub const relationRoot = version.relationRoot;
292 pub const databaseRoot = version.databaseRoot;
293 pub const databaseRootMaintained = version.databaseRootMaintained;
294 pub const Pager = pager.Pager;
295 pub const PagerCapacity = pager.Capacity;
296 pub const PagerInitOptions = pager.InitOptions;
297 pub const PagerCheckpoint = pager.Checkpoint;
298 pub const PagerCheckpointOptions = pager.CheckpointOptions;
299 pub const PagerCheckpointReaders = pager.CheckpointReaders;
300 pub const PagerStorage = pager.Storage;
301 pub const PagerSnapshot = pager.Snapshot;
302 pub const PagerView = pager.View;
303 pub const WalWriter = wal.Writer;
304 pub const WalReader = wal.Reader;
305 
306 pub const FileReadCache = file.ReadCache;
307 pub const FileTransactionStaging = file.TransactionStaging;
308 pub const CheckpointPlan = @import("pager.zig").CheckpointPlan;
309 pub const TableValueStorage = @import("table.zig").ValueStorage;