Skip to main content

reddb_engine/transaction/
mod.rs

1//! Shared live optimistic transaction state; host runtimes own durable publication.
2
3pub mod read;
4pub mod snapshot;
5pub mod state;
6pub mod visibility;
7
8/// Isolation level requested by `BEGIN ISOLATION LEVEL ...`.
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
10pub enum IsolationLevel {
11    /// `READ UNCOMMITTED`
12    ReadUncommitted,
13    /// `READ COMMITTED`
14    ReadCommitted,
15    /// `REPEATABLE READ` / `SNAPSHOT`
16    #[default]
17    SnapshotIsolation,
18    /// `SERIALIZABLE`
19    Serializable,
20}
21
22impl From<reddb_rql::ast::IsolationLevel> for IsolationLevel {
23    fn from(level: reddb_rql::ast::IsolationLevel) -> Self {
24        match level {
25            reddb_rql::ast::IsolationLevel::ReadUncommitted => Self::ReadUncommitted,
26            reddb_rql::ast::IsolationLevel::ReadCommitted => Self::ReadCommitted,
27            reddb_rql::ast::IsolationLevel::SnapshotIsolation => Self::SnapshotIsolation,
28            reddb_rql::ast::IsolationLevel::Serializable => Self::Serializable,
29        }
30    }
31}
32
33pub use snapshot::{Snapshot, SnapshotManager, TxnContext, Xid, XID_NONE};
34pub use visibility::is_visible;