Skip to main content

mongreldb_core/
lib.rs

1//! MongrelDB core — a log-structured columnar store with sub-ms writes, learned
2//! indexes over a shared row-id space, page-level native encryption, an
3//! MVCC-tagged content-addressed cache, and an AI-native access layer.
4//!
5//! The crate owns the WAL + memtable + Bε-tree write path, sorted-run container
6//! formats, MVCC snapshots, page cache, encryption, compaction, and indexes.
7
8#![allow(clippy::module_inception)]
9#![recursion_limit = "2048"]
10
11pub mod auth;
12pub mod auth_state;
13pub mod backup;
14pub mod be_tree;
15pub mod cache;
16pub mod catalog;
17pub mod columnar;
18pub mod compaction;
19pub mod constraint;
20pub mod cursor;
21pub mod database;
22pub mod durable_file;
23pub mod encryption;
24pub mod engine;
25pub mod epoch;
26pub mod error;
27pub mod execution;
28pub mod external_table;
29pub mod gc;
30pub mod global_idx;
31pub mod index;
32pub mod manifest;
33pub mod memtable;
34pub mod mutable_run;
35pub mod page;
36pub mod pitr;
37pub mod pma;
38pub mod procedure;
39pub mod query;
40pub mod replication;
41pub mod reservoir;
42pub mod retention;
43pub(crate) mod row_id_set;
44pub mod rowid;
45pub mod schema;
46pub mod security;
47pub mod sorted_run;
48pub mod trace;
49pub mod trigger;
50pub mod tsv;
51pub mod txn;
52pub mod wal;
53
54pub(crate) const MAX_READ_GENERATION_LAYERS: usize = 8;
55
56pub use auth::{
57    hash_password, verify_password, ColumnAccess, ColumnOperation, Permission, Principal,
58    RoleEntry, UserEntry,
59};
60pub use backup::{verify_backup, BackupFile, BackupManifest, BackupReport};
61pub use be_tree::BeTree;
62pub use cache::PageCache;
63pub use catalog::{
64    IncrementalAggregateKind, IncrementalAggregateOutput, IncrementalAggregateView,
65    MaterializedViewEntry,
66};
67pub use columnar::{decode_column, encode_column};
68pub use cursor::{drain_cursor_to_columns, Cursor, MultiRunCursor, NativePageCursor};
69pub use database::{
70    lock_table_with_context, AuthorizedReadSnapshot, AuthorizedReadStamp, CdcBatch, ChangeEvent,
71    CheckIssue, Database, ExternalTriggerBaseWrite, ExternalTriggerBridge, ExternalTriggerWrite,
72    ExternalTriggerWriteResult, OpenOptions, ReadAuthorization, TableGenerationStats, TableGuard,
73    TableHandle, TableReadGeneration,
74};
75pub use encryption::{Cipher, PlaintextCipher};
76pub use engine::{
77    AggState, ApproxAgg, ApproxResult, CachedAgg, ColumnStat, IncrementalAggResult,
78    IndexBuildPolicy, NativeAgg, NativeAggResult, Table,
79};
80pub use epoch::{Epoch, EpochAuthority, EpochClock, MaintenanceReceipt, Snapshot};
81pub use error::{MongrelError, Result};
82pub use execution::{CancellationReason, ExecutionControl};
83pub use external_table::{
84    ExternalTableDefinition, ExternalTableEntry, ModuleArg, ModuleCapabilities,
85};
86pub use gc::{CheckReport, DoctorReport, GcReport};
87pub use index::{
88    AnnIndex, BitmapIndex, ColumnLearnedRange, FmIndex, HotIndex, LearnedIndex, SparseIndex,
89};
90pub use manifest::TtlPolicy;
91pub use memtable::{Memtable, Row, Value};
92pub use mutable_run::MutableRun;
93pub use page::{CachedPage, Encoding, PageStat};
94pub use pitr::{
95    read_pitr_manifest, restore_pitr, PitrArchiveManifest, PitrArchiveReport, PitrChunkRef,
96    PitrCommitPoint, PitrCredentials, PitrTarget,
97};
98pub use procedure::{
99    ProcedureBody, ProcedureCallOutput, ProcedureCallResult, ProcedureCallRow, ProcedureCondition,
100    ProcedureEntry, ProcedureMode, ProcedureParam, ProcedureStep, ProcedureValue, StoredProcedure,
101};
102
103#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)]
104pub struct BuildInfo {
105    pub artifact_version: &'static str,
106    pub engine_version: &'static str,
107    pub mongreldb_git_sha: &'static str,
108}
109
110pub fn build_info() -> BuildInfo {
111    BuildInfo {
112        artifact_version: env!("CARGO_PKG_VERSION"),
113        engine_version: env!("CARGO_PKG_VERSION"),
114        mongreldb_git_sha: env!("MONGRELDB_GIT_SHA"),
115    }
116}
117pub use query::{Condition, Query};
118pub use replication::{
119    is_replica, replica_epoch, replica_source_id, write_replica_epoch, ReplicationBatch,
120    ReplicationSnapshot,
121};
122pub use reservoir::Reservoir;
123pub use retention::{OwnedSnapshotGuard, SnapshotGuard, SnapshotRegistry};
124pub use rowid::{RowId, RowIdAllocator};
125pub use schema::{
126    AlterColumn, ColumnDef, ColumnFlags, DefaultExpr, IndexDef, IndexKind, Schema, TypeId,
127};
128pub use security::{
129    ColumnMask, MaskStrategy, PolicyCommand, RowPolicy, SecurityCatalog, SecurityExpr,
130};
131pub use sorted_run::{
132    read_column_dir, read_header, write_run, write_run_with, ColumnPayload, RunHeader, RunReader,
133    RunSpec, RunWriter,
134};
135pub use trace::{IndexRebuild, QueryTrace, ScanMode};
136pub use trigger::{
137    StoredTrigger, TriggerCell, TriggerCondition, TriggerConfig, TriggerDefinition, TriggerEntry,
138    TriggerEvent, TriggerExpr, TriggerProgram, TriggerRaiseAction, TriggerStep, TriggerTarget,
139    TriggerTiming, TriggerValue,
140};
141pub use txn::{IsolationLevel, OwnedRow, PutResult, UpsertAction, UpsertActionKind, UpsertResult};
142pub use wal::{AddedRun, DdlOp, Op, Record, SharedWal, Wal, WalReader, SYSTEM_TXN_ID};
143
144#[cfg(feature = "encryption")]
145pub use encryption::{AesCipher, ColumnKeyDescriptor, EncryptionDescriptor, Kek};