1#[cfg(feature = "jemalloc")]
82#[global_allocator]
83static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
84
85pub mod block_storage;
86#[deprecated(
87 since = "0.2.0",
88 note = "Use jemalloc feature instead. See buddy_allocator module docs for migration."
89)]
90#[allow(deprecated)]
91pub mod buddy_allocator;
92pub mod catalog;
93pub mod columnar; pub mod concurrency; pub mod edge_encoding; pub mod epoch_gc;
97pub mod error;
98pub mod format_migration;
99pub mod key;
100pub mod knowledge_object; pub mod learned_index;
102pub mod lockfree_interner; pub mod memory_schema; pub mod path_trie;
105pub mod predefined_views;
106pub mod reclamation;
107pub mod record_id; pub mod schema_bridge;
109pub mod schema_evolution;
110pub mod sharded_block_store;
111pub mod soch;
112pub mod soch_codec;
113pub mod sochfs_metadata;
114pub mod string_interner; pub mod tbp; pub mod transaction_typestate; pub mod txn;
118pub mod version_chain; pub mod vfs;
120pub mod zero_copy; #[cfg(feature = "analytics")]
124pub mod analytics;
125
126pub use block_storage::{
128 BlockCompression, BlockRef, BlockStore, BlockStoreStats, FileBlockManager,
129};
130pub use catalog::{Catalog, CatalogEntry, CatalogEntryType, McpToolDescriptor, OperationImpl};
131pub use columnar::{
132 ColumnChunk, ColumnStats, ColumnType as ColumnarColumnType, ColumnValue as ColumnarColumnValue,
133 ColumnarStore, ColumnarTable, MemoryComparison, TypedColumn, ValidityBitmap,
134};
135pub use error::{Result, SochDBError};
136pub use key::{CausalKey, TemporalKey};
137pub use knowledge_object::{
138 BitemporalCoord, CompressionMode, Edge, EdgeKind, EmbeddingSpace, KnowledgeObject,
139 KnowledgeObjectBuilder, KnowledgeObjectError, ObjectId, ObjectIdError, ObjectKind, Provenance,
140};
141pub use learned_index::LearnedSparseIndex;
142pub use lockfree_interner::{InternerStats, LockFreeInterner, Symbol};
143pub use memory_schema::{
144 Entity, EntityFacts, EntityKind, EntitySearchResult, Episode, EpisodeSearchResult, EpisodeType,
145 Event, EventMetrics, EventRole, MemoryStore, TableRole, TableSemanticMetadata,
146};
147pub use path_trie::{ColumnGroupAffinity, ColumnType as PathTrieColumnType, PathTrie, TrieNode};
148pub use predefined_views::{
149 ViewDefinition, build_view_map, get_predefined_views, get_view, naming,
150};
151pub use record_id::{IdValue, RecordId};
152pub use soch::{SochField, SochIndex, SochRow, SochSchema, SochTable, SochType, SochValue};
153pub use soch_codec::{
154 SochDbBinaryCodec, SochDocument, SochParseError, SochTextEncoder, SochTextParser,
155 SochTokenCounter,
156};
157pub use sochfs_metadata::{DirEntryRow, FsMetadataStore, FsWalOp, InodeRow, SochFS};
158pub use transaction_typestate::{
159 Aborted, Active, Committed, ReadOnly, ReadWrite, Transaction as TypestateTransaction,
160 TransactionMode, TransactionStorage, WriteOnly,
161};
162pub use txn::{
163 AriesCheckpointData, AriesDirtyPageEntry, AriesTransactionEntry, IsolationLevel, Lsn, PageId,
164 Transaction, TransactionManager, TxnId, TxnState, TxnStats, TxnWalEntry, TxnWrite,
165 WalRecordType,
166};
167pub use version_chain::{
168 BinarySearchChain, ChainEntry, ConcurrencyPolicy, ExternalLock, InternalRwLock, LockFreeAtomic,
169 MvccGcStats, MvccStore, MvccStoreError, MvccVersionChain, MvccVersionChainMut, VersionMeta,
170 VisibilityContext, WriteConflictDetection,
171};
172pub use vfs::{
173 BlockId, DirEntry, Directory, FileStat, FileType, Inode, InodeId, Permissions, Superblock,
174 VfsOp,
175};
176
177pub const SOCHDB_VERSION: &str = env!("CARGO_PKG_VERSION");
179
180pub const SOCHDB_MAGIC: [u8; 4] = *b"TOON";
182
183pub const SCHEMA_VERSION: u32 = 1;
185
186#[cfg(test)]
187mod tests {
188 use super::*;
189
190 #[test]
191 fn test_soch_roundtrip() {
192 let schema = SochSchema::new("test")
193 .field("id", SochType::UInt)
194 .field("value", SochType::Text);
195
196 let mut table = SochTable::new(schema);
197 table.push(SochRow::new(vec![
198 SochValue::UInt(1),
199 SochValue::Text("hello".into()),
200 ]));
201
202 let formatted = table.format();
203 let parsed = SochTable::parse(&formatted).unwrap();
204
205 assert_eq!(parsed.schema.name, "test");
206 assert_eq!(parsed.rows.len(), 1);
207 }
208}