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;