1pub mod actor; pub mod admission_control; #[cfg(feature = "experimental")]
79pub mod aries_recovery; pub mod cdc; #[cfg(feature = "experimental")]
82pub mod checkpoint; pub mod columnar_compression;
84pub mod correctness_testing; pub mod database; pub mod durability_contract; pub mod durable_storage; pub mod encryption; pub mod ffi;
90pub mod group_commit; pub mod hlc; pub mod hybrid_store; pub mod io_isolation; pub mod ipc; #[cfg(unix)]
96pub mod ipc_server; pub mod keyring; pub mod learned_index_integration;
99pub mod lock; pub mod lscs;
101pub mod mvcc_concurrent; #[deprecated(
103 note = "Unused duplicate; live MVCC is mvcc_concurrent::ConcurrentMvcc + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation)."
104)]
105pub mod mvcc_new;
106pub mod mvcc_snapshot;
107pub mod page_manager;
108#[cfg(feature = "experimental")]
109pub mod pitr; #[cfg(feature = "experimental")]
111pub mod production_wal; pub mod ssi; #[deprecated(
114 note = "Unused; SSI lives in ssi/MvccManager. Scheduled for removal (Task 2 consolidation)."
115)]
116pub mod ssi_scaling; pub mod storage_engine;
118pub mod streaming_iterator; pub mod supervisor; pub mod transaction; pub mod txn_arena; pub mod txn_wal;
123pub mod upgrade_contract; #[cfg(feature = "experimental")]
125pub mod wal_fencing; pub mod wal_integration;
127pub mod wal_manifest; pub mod zero_copy_safety; #[deprecated(
132 note = "Unused duplicate; live learned index is learned_index_integration. Scheduled for removal (Task 2 consolidation)."
133)]
134pub mod adaptive_learned_index;
135#[deprecated(
136 note = "Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation)."
137)]
138pub mod adaptive_memtable; pub mod batch_wal; pub mod deferred_index; pub mod dirty_tracking; pub mod index_policy; pub mod key_buffer; #[deprecated(
145 note = "Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation)."
146)]
147pub mod lockfree_memtable; pub mod packed_row;
149pub mod queue_index; #[deprecated(
153 note = "Unused duplicate; live learned index is learned_index_integration. Scheduled for removal (Task 2 consolidation)."
154)]
155pub mod clr_learned_index; #[cfg(feature = "experimental")]
157pub mod columnar_wal; pub mod epoch_arena; pub mod generational_slab; #[cfg(feature = "experimental")]
161pub mod hierarchical_ts; #[cfg(all(unix, feature = "experimental"))]
163pub mod io_uring_wal; pub mod lockfree_epoch; pub mod polymorphic_value; #[cfg(feature = "experimental")]
167pub mod rl_workload; pub mod shard_coalesced; #[deprecated(
170 note = "Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation)."
171)]
172pub mod stratified_skiplist; pub mod cow_btree; pub mod epoch_mvcc; pub mod page_cache; pub mod row_format; pub mod tiered_memtable; pub mod tournament_tree; pub mod vectorized_scan; pub mod zero_copy_serde; pub mod lazy_namespace; pub mod namespace; pub mod object_store_tier; pub mod backend;
191pub mod backup;
192pub mod block_checksum;
193pub mod bloom;
194pub mod compression;
195pub mod dict_compression;
196pub mod direct_io;
197#[cfg(unix)]
198pub mod io_uring;
199pub mod manifest;
200pub mod memory;
201pub mod parallel_merge;
202pub mod payload;
203pub mod prefetch;
204pub mod sketches;
205pub mod two_level_index;
206pub mod validation;
207pub mod version_store;
208pub mod zero_copy;
209
210pub use columnar_compression::{
212 ColumnEncoder, DeltaEncoder, DictionaryEncoder, EncodingStats, EncodingType, RleEncoder,
213};
214pub use learned_index_integration::{
215 HybridIndex, IndexManager, IndexType, KeyStats, PointLookupExecutor,
216};
217pub use lscs::{
218 ColumnDef, ColumnGroup, ColumnType, ColumnarMemtable, Lscs, LscsConfig, LscsRecoveryStats,
219 LscsStats, TableSchema,
220};
221#[allow(deprecated)]
222pub use mvcc_snapshot::{
223 MvccStore, Snapshot as MvccSnapshot, Timestamp, TransactionManager, TxnId, TxnStatus,
224 VersionChain, VersionInfo,
225};
226pub use page_manager::{
227 DEFAULT_PAGE_SIZE, DbHeader, FORMAT_VERSION, FreePageHeader, PageId, PageManager,
228 PageManagerStats, PageType, SOCHDB_MAGIC,
229};
230pub use storage_engine::{
231 ColumnId, ColumnIterator, Row, RowId, StorageEngine, StorageEngineType, StorageStats,
232 TxnHandle, open_storage_engine,
233};
234pub use transaction::{
235 DurabilityLevel, IsolationLevel, RecoveryStats as TxnRecoveryStats, TransactionCoordinator,
236 TransactionHandle,
237};
238pub use txn_wal::{
239 CrashRecoveryStats, RecoveryTarget, TxnWal, TxnWalBuffer, TxnWalEntry, TxnWalStats,
240};
241pub use wal_integration::{
242 GroupCommitBuffer, MvccTransactionManager, RecoveryStats, Transaction, TxnState,
243 WalStorageManager,
244};
245pub use wal_manifest::WalManifest;
246
247#[allow(deprecated)]
249pub use adaptive_learned_index::{AdaptiveLearnedIndex, LearnedIndexStats, PiecewiseLinearModel};
250#[allow(deprecated)]
251pub use adaptive_memtable::{
252 AdaptiveMemtableConfig, AdaptiveMemtableSizer, AdaptiveMemtableStats, DEFAULT_BASE_SIZE,
253 MAX_MEMTABLE_SIZE, MIN_MEMTABLE_SIZE,
254};
255pub use batch_wal::{
256 BatchAccumulator, BatchedWalReader, BatchedWalStats, BatchedWalWriter, ConcurrentBatchedWal,
257 DEFAULT_MAX_BATCH_BYTES, DEFAULT_MAX_BATCH_SIZE,
258};
259#[allow(deprecated)]
260pub use clr_learned_index::{ClrIndex, ClrLookupResult, ClrStats, IndexedSortedRun};
261pub use key_buffer::{
262 ArenaKey,
263 ArenaKeyHandle,
264 BatchKeyGenerator,
265 InternedTablePrefix,
266 KeyArena,
268 KeyBuffer,
269 MAX_KEY_LENGTH,
270};
271#[allow(deprecated)]
272pub use lockfree_memtable::{
273 HazardDomain,
274 INLINE_VALUE_SIZE,
275 LockFreeMemTable,
276 LockFreeVersion,
277 LockFreeVersionChain,
278 ValueStorage,
280};
281pub use packed_row::{
282 PackedColumnDef, PackedColumnType, PackedRow, PackedRowBuilder, PackedTableSchema,
283};
284
285pub use backend::{LocalFsBackend, ObjectMetadata, StorageBackend};
287pub use backup::{BackupManager, BackupMetadata};
288pub use block_checksum::{
289 BlockChecksumConfig, BlockChecksumStats, BlockType as BlockChecksumType, BlockWriter,
290 ChecksummedBlock,
291};
292pub use bloom::{BlockedBloomFilter, BloomFilter, LevelAdaptiveFPR, UnifiedBloomFilter};
293pub use compression::{CompressionEngine, CompressionStats, StorageTier};
294pub use manifest::{FileMetadata, LsmState, Manifest, VersionEdit};
295pub use memory::{MemoryBudget, MemoryTracker, WriteBufferManager, WriteBufferStats};
296#[allow(deprecated)]
297pub use mvcc_new::{
298 ColumnGroupRef, ReadVersion, Snapshot, SnapshotGuard, VersionGuard, VersionSet,
299 VersionSetStats, VersionSetStatsSnapshot,
300};
301pub use payload::{CompressionType, PayloadStats, PayloadStore};
302pub use sketches::{AdaptiveSketch, CountMinSketch, DDSketch, ExponentialHistogram, HyperLogLog};
303pub use two_level_index::{
304 BlockIndexEntry, BlockIndexReader, FencePointer, TemporalKey, TwoLevelIndex,
305};
306pub use validation::{SSTableValidator, validate_sstable_file};
307
308pub use durable_storage::{
310 ArenaMvccMemTable, DurableStorage, EphemeralHandle, MvccMemTable, StorageEncryption,
311 TransactionMode,
312};
313pub use encryption::{EncryptionEngine, EncryptionError, EncryptionKey, generate_key};
316pub use keyring::EncryptionState;
317
318#[derive(Debug, Clone, Copy, PartialEq, Eq)]
329pub struct DurabilityCapabilities {
330 pub crash_recovery: bool,
332 pub at_rest_encryption: bool,
338 pub point_in_time_recovery: bool,
341 pub aries_checkpoint: bool,
343 pub wal_fencing: bool,
345}
346
347pub const fn durability_capabilities() -> DurabilityCapabilities {
354 DurabilityCapabilities {
355 crash_recovery: true,
356 at_rest_encryption: false,
357 point_in_time_recovery: false,
358 aries_checkpoint: false,
359 wal_fencing: false,
360 }
361}
362
363#[cfg(test)]
364mod durability_capabilities_tests {
365 use super::durability_capabilities;
366
367 #[test]
368 fn live_build_durability_matrix_is_honest() {
369 let caps = durability_capabilities();
370 assert!(
372 caps.crash_recovery,
373 "live path must provide crash-consistent WAL recovery"
374 );
375 assert!(!caps.at_rest_encryption);
377 assert!(!caps.point_in_time_recovery);
378 assert!(!caps.aries_checkpoint);
379 assert!(!caps.wal_fencing);
380 }
381}
382
383pub use mvcc_concurrent::{
385 ConcurrentMvcc, ConcurrentVersionChain, ConcurrentVersionEntry, HlcTimestamp, ReaderSlot,
386 VersionStore, VersionStoreStats, WriterGuard,
387};
388
389pub mod compaction_policy;
391pub mod concurrent_art;
392pub mod optimized_scan;
393pub mod sstable;
394pub mod version_set;
395pub mod wal_segment;
396
397pub use compaction_policy::{
399 CompactionConfig, CompactionFile, CompactionJob, CompactionPicker, CompactionPriority,
400 CompactionReason, CompactionState, CompactionStats, CompactionStrategy,
401 LeveledCompactionPicker, RetentionConfig, UniversalCompactionPicker, VersionPruner,
402};
403pub use concurrent_art::ConcurrentART;
404pub use cow_btree::{BTreeEntry, BTreeSnapshot, CowBTree, Node, SearchResult};
405pub use epoch_mvcc::{
406 CommitResult, EpochManager, EpochMvccStore, EpochSnapshot, EpochTransaction, EpochVersionChain,
407 GcStats, StoreStats, VersionEntry,
408};
409pub use lazy_namespace::{LazyNamespaceConfig, LazyNamespaceTable};
410pub use object_store_tier::{ObjectStoreTier, ObjectStoreTierConfig, SegmentDescriptor};
411pub use optimized_scan::{
412 EntrySource, FileRange, LevelFiles, RangeScanner, ScanConfig, ScanStats, TournamentTree,
413 VersionedEntry,
414};
415pub use page_cache::{CacheStats, CachedPage, ClockProCache, PageId as CachePageId, PageState};
416pub use row_format::{Slot, SlotRow, SlotRowArena, SlotRowFlags, SlotRowHandle};
417pub use sstable::{
418 BlockBuilder, BlockCache, BlockHandle, BlockIterator, BlockType, BloomFilterPolicy,
419 FilterPolicy, FilterReader, Footer, Header, ReadOptions, RibbonFilterPolicy, SSTable,
420 SSTableBuilder, SSTableBuilderOptions, SSTableBuilderResult, SSTableFormat, Section,
421 SectionType, TableMetadata, XorFilterPolicy,
422};
423pub use tiered_memtable::{HotEntry, SortedBatch, TieredMemTable};
424pub use vectorized_scan::{
425 ColumnVector,
426 ComparisonOp,
427 DEFAULT_BATCH_SIZE,
428 Int64Comparison,
429 SimdVisibilityFilter,
431 SoaBatch,
432 SoaScanIterator,
433 SoaScanStats,
434 SoaSource,
435 StreamingScanIterator,
436 ValueHandle,
437 VectorBatch,
438 VectorPredicate,
439 VectorizedScanConfig,
440 VectorizedScanStats,
441 VersionedSlice,
442};
443pub use version_set::{
444 FileMetadata as VersionFileMetadata, ImmutableMemTable, ImmutableMemTableRef, LevelMetadata,
445 SuperVersion, SuperVersionHandle, VersionSet as CowVersionSet,
446};
447pub use wal_segment::{
448 CheckpointRecord, RecoveryIterator, SegmentConfig, SegmentHeader, SegmentMetadata,
449 SegmentStats, WalEntry, WalSegmentManager,
450};
451pub use zero_copy_serde::{
452 FORMAT_VERSION as SERDE_FORMAT_VERSION, FieldDescriptor, HEADER_SIZE as SERDE_HEADER_SIZE,
453 MmapWalReader, SerdeStats, WalBatchReader, WalBatchWriter, WalEntryBuilder, WalEntryHeader,
454 WalEntryReader, WalEntryType, ZERO_COPY_MAGIC, ZeroCopyHeader,
455};
456
457pub use txn_arena::{ArenaWriteSet, BytesRef, KeyFingerprint, TxnArena, TxnWriteBuffer, WriteOp};
459
460pub use dirty_tracking::{BatchedDirtyTracker, DirtyEvent, DirtyTrackingStats, TxnDirtyBuffer};
462
463pub use index_policy::{
465 BalancedTableIndex, IndexPolicy, SortedRun, TableIndexConfig, TableIndexRegistry,
466};
467
468pub use queue_index::{
470 CompositeQueueKey, QueueIndex, QueueIndexConfig, QueueIndexStats, QueueTableRegistry,
471};
472
473pub use cdc::{CdcConfig, CdcEmitter, CdcError, CdcEvent, CdcLog, CdcOperation, CdcSubscriber};
475
476pub use database::{
478 ColumnDef as DbColumnDef,
479 ColumnType as DbColumnType,
480 ColumnarQueryResult, Database,
482 DatabaseConfig,
483 GroupCommitSettings,
484 QueryBuilder,
485 QueryResult,
486 QueryRowIterator,
487 RecoveryStats as DbRecoveryStats,
488 Stats as DbStats,
489 SyncMode,
490 TableSchema as DbTableSchema,
491 TxnHandle as KernelTxnHandle,
492 VectorSearchResult,
493};