1#![allow(clippy::module_inception)]
9#![recursion_limit = "2048"]
10
11pub mod ai_generation;
12pub mod auth;
13pub mod auth_state;
14pub mod backup;
15pub mod be_tree;
16pub mod cache;
17pub mod catalog;
18pub mod catalog_cmds;
19pub mod certification;
20pub mod cluster_import;
21pub mod columnar;
22pub mod commit_log;
23pub mod compaction;
24pub mod constraint;
25pub mod core;
26pub mod cursor;
27pub mod database;
28pub mod durable_file;
29pub mod embedding;
30pub mod encryption;
31pub mod engine;
32pub mod epoch;
33pub mod error;
34pub mod execution;
35pub mod external_table;
36pub mod gc;
37pub mod global_idx;
38pub mod handle;
39pub mod index;
40pub mod jobs;
41pub mod locks;
42pub mod manager;
43pub mod manifest;
44pub mod memory;
45pub mod memtable;
46pub mod migrate_mysql;
47pub mod mutable_run;
48pub mod node_governor;
49pub mod ops_jobs;
50pub mod page;
51pub mod pitr;
52pub mod pma;
53pub mod procedure;
54pub mod query;
55pub mod replicated_apply;
56pub mod replication;
57pub mod reservoir;
58pub mod resource;
59pub mod retention;
60pub(crate) mod row_id_set;
61pub mod rowid;
62pub mod scheduler;
63pub mod schema;
64pub mod security;
65pub mod security_hardening;
66pub mod sorted_run;
67pub mod spill;
68pub mod storage_mode;
69pub mod trace;
70pub mod trigger;
71pub mod tsv;
72pub mod txn;
73pub mod wal;
74
75pub(crate) const MAX_READ_GENERATION_LAYERS: usize = 8;
76
77pub use crate::core::{DatabaseFileIdentity, LifecycleController, LifecycleState, OperationGuard};
78pub use ai_generation::{
79 evaluate_readiness, readiness_action, AiIndexGeneration, AiIndexGenerationRegistry, IndexId,
80 IndexReadinessError, ReadinessAction,
81};
82pub use auth::{
83 hash_password, verify_password, ColumnAccess, ColumnOperation, Permission, Principal,
84 RoleEntry, UserEntry,
85};
86pub use backup::{verify_backup, BackupFile, BackupManifest, BackupReport};
87pub use be_tree::BeTree;
88pub use cache::PageCache;
89pub use catalog::{
90 IncrementalAggregateKind, IncrementalAggregateOutput, IncrementalAggregateView,
91 MaterializedViewEntry,
92};
93pub use catalog_cmds::{required_permission, CatalogCommand, CatalogCommandRecord, CatalogDelta};
94pub use certification::{
95 certification_inventory, inventory_smoke, CertificationCategory, CertificationClass,
96};
97pub use cluster_import::{
98 cluster_import_prepare, hash_rows_canonical, ImportPlan, ImportTablePlan,
99};
100pub use columnar::{decode_column, encode_column};
101pub use cursor::{drain_cursor_to_columns, Cursor, MultiRunCursor, NativePageCursor};
102pub use database::{
103 lock_table_with_context, AuthorizedReadSnapshot, AuthorizedReadStamp, CdcBatch, ChangeEvent,
104 CheckIssue, Database, DatabaseCore, DatabaseOpenMetrics, ExternalTriggerBaseWrite,
105 ExternalTriggerBridge, ExternalTriggerWrite, ExternalTriggerWriteResult, OpenOptions,
106 ReadAuthorization, TableGenerationStats, TableGuard, TableHandle, TablePinsReport,
107 TableReadGeneration, DEFAULT_MEMORY_BUDGET_BYTES, DEFAULT_TEMP_DISK_BUDGET_BYTES,
108};
109pub use embedding::{
110 EmbeddingError, EmbeddingModelMeta, EmbeddingProvider, EmbeddingProviderRegistry,
111 EmbeddingSource, FixedVectorProvider,
112};
113pub use encryption::{Cipher, PlaintextCipher};
114pub use engine::{
115 AggState, ApproxAgg, ApproxResult, CachedAgg, ColumnStat, IncrementalAggResult,
116 IndexBuildPolicy, NativeAgg, NativeAggResult, ReadGeneration, Table, TableDeltas,
117};
118pub use epoch::{Epoch, EpochAuthority, EpochClock, MaintenanceReceipt, Snapshot};
119pub use error::{MongrelError, Result};
120pub use execution::{CancellationReason, ExecutionControl};
121pub use external_table::{
122 ExternalTableDefinition, ExternalTableEntry, ModuleArg, ModuleCapabilities,
123};
124pub use gc::{CheckReport, DoctorReport, GcReport, GcVersionsReport};
125pub use handle::{DatabaseHandle, HandleAccess, HandleIdentity, OpenIdentity};
126pub use index::{
127 AnnIndex, BitmapIndex, ColumnLearnedRange, FmIndex, HotIndex, IndexFamilyGeneration,
128 IndexGeneration, LearnedIndex, SparseIndex,
129};
130pub use jobs::{
131 CancellationToken, JobError, JobKind, JobProgress, JobRecord, JobRegistry, JobState, JobTarget,
132 JOBS_FILENAME,
133};
134pub use locks::{LockError, LockKey, LockManager, LockMode, LockRequest};
135pub use manager::DatabaseManager;
136pub use manifest::TtlPolicy;
137pub use memory::{
138 EscalationLevel, EscalationThresholds, GovernorConfig, GovernorStats, MemoryClass, MemoryError,
139 MemoryGovernor, Reclaimable, Reservation, SpillGrant,
140};
141pub use memtable::{Memtable, Row, Value};
142pub use migrate_mysql::{
143 dialect_matrix, map_mysql_type, plan_mysql_migration, run_migrate_pipeline, CdcOp,
144 DialectFeature, DialectSupport, MemoryMigrateIo, MigrateIo, MigrateRunReport, MigrateStage,
145 MigrateTablePlan, MysqlMigratePlan, MysqlWireRequest, SourceRow, TypeMapping,
146 DEFAULT_COPY_BATCH, DUAL_WRITE_WARNING,
147};
148pub use mutable_run::MutableRun;
149pub use node_governor::{GovernorAction, NodeMemoryGovernor, NodePressureInputs};
150pub use ops_jobs::{OpsJob, OpsJobError, OpsJobKind, OpsJobState, OpsJobStore};
151pub use page::{CachedPage, Encoding, PageStat};
152pub use pitr::{
153 read_pitr_manifest, restore_pitr, PitrArchiveManifest, PitrArchiveReport, PitrChunkRef,
154 PitrCommitPoint, PitrCredentials, PitrTarget,
155};
156pub use procedure::{
157 ProcedureBody, ProcedureCallOutput, ProcedureCallResult, ProcedureCallRow, ProcedureCondition,
158 ProcedureEntry, ProcedureMode, ProcedureParam, ProcedureStep, ProcedureValue, StoredProcedure,
159};
160pub use security_hardening::{
161 node_cert_matches_id, redact_secrets, validate_jwt_claims, JwtClaims, JwtError,
162 JwtValidationConfig, KeyRotationRecord, KmsWrappedKey, ScramVerifier, ServiceToken,
163 ServiceTokenRegistry,
164};
165
166#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)]
167pub struct BuildInfo {
168 pub artifact_version: &'static str,
169 pub engine_version: &'static str,
170 pub mongreldb_git_sha: &'static str,
171 pub target_triple: &'static str,
172 pub build_profile: &'static str,
173}
174
175pub fn build_info() -> BuildInfo {
176 BuildInfo {
177 artifact_version: env!("CARGO_PKG_VERSION"),
178 engine_version: env!("CARGO_PKG_VERSION"),
179 mongreldb_git_sha: env!("MONGRELDB_GIT_SHA"),
180 target_triple: env!("MONGRELDB_TARGET_TRIPLE"),
181 build_profile: env!("MONGRELDB_BUILD_PROFILE"),
182 }
183}
184pub use query::{Condition, Query};
185pub use replicated_apply::{
186 EngineSnapshot, EngineSnapshotFile, EngineSnapshotTable, ReplicatedTxnPayload,
187 COMMAND_TYPE_CATALOG_COMMAND, COMMAND_TYPE_MAINTENANCE, ENGINE_SNAPSHOT_FORMAT_VERSION,
188 REPLICATED_TXN_FORMAT_VERSION,
189};
190pub use replication::{
191 is_replica, replica_epoch, replica_source_id, write_replica_epoch, ReplicationBatch,
192 ReplicationSnapshot,
193};
194pub use reservoir::Reservoir;
195pub use resource::{ResourceError, ResourceGroup, ResourceGroupRegistry, WorkloadClass};
196pub use retention::{
197 OwnedSnapshotGuard, PinGuard, PinInfo, PinRegistry, PinSource, PinsReport, SnapshotGuard,
198 SnapshotRegistry,
199};
200pub use rowid::{RowId, RowIdAllocator};
201pub use scheduler::{
202 ClassConfig, ClassStats, HierarchicalScheduler, SchedulerError, SchedulerStats, TenantQuota,
203 WorkItem,
204};
205pub use schema::{
206 AlterColumn, ColumnDef, ColumnFlags, DefaultExpr, IndexDef, IndexKind, Schema, TypeId,
207};
208pub use security::{
209 ColumnMask, MaskStrategy, PolicyCommand, RowPolicy, SecurityCatalog, SecurityExpr,
210};
211pub use sorted_run::{
212 read_column_dir, read_header, write_run, write_run_with, ColumnPayload, RunHeader, RunReader,
213 RunSpec, RunWriter,
214};
215pub use spill::{
216 SpillConfig, SpillError, SpillHandle, SpillManager, SpillReader, SpillSession, SpillStats,
217 SpillWriter,
218};
219pub use storage_mode::{StorageMode, StorageModeError, STORAGE_MODE_FILENAME};
220pub use trace::{IndexRebuild, QueryTrace, ScanMode};
221pub use trigger::{
222 StoredTrigger, TriggerCell, TriggerCondition, TriggerConfig, TriggerDefinition, TriggerEntry,
223 TriggerEvent, TriggerExpr, TriggerProgram, TriggerRaiseAction, TriggerStep, TriggerTarget,
224 TriggerTiming, TriggerValue,
225};
226pub use txn::{IsolationLevel, OwnedRow, PutResult, UpsertAction, UpsertActionKind, UpsertResult};
227pub use wal::{AddedRun, DdlOp, Op, Record, SharedWal, Wal, WalReader, SYSTEM_TXN_ID};
228
229#[cfg(feature = "encryption")]
230pub use encryption::{AesCipher, ColumnKeyDescriptor, EncryptionDescriptor, Kek};