dbx_core/engine/
database.rs1use crate::engine::types::BackgroundJob;
4use crate::engine::{DeltaVariant, DurabilityLevel, WosVariant};
5use crate::sql::optimizer::QueryOptimizer;
6use crate::sql::parser::SqlParser;
7use crate::storage::encryption::EncryptionConfig;
8use crate::transaction::mvcc::manager::TransactionManager;
9use arrow::array::RecordBatch;
10use arrow::datatypes::Schema;
11use dashmap::DashMap;
12use std::collections::HashMap;
13use std::sync::{Arc, RwLock};
14
15pub struct Database {
40 pub(crate) delta: DeltaVariant,
42
43 pub(crate) wos: WosVariant,
45
46 #[allow(dead_code)]
48 pub(crate) schemas: Arc<RwLock<HashMap<String, Arc<Schema>>>>,
49
50 pub(crate) tables: RwLock<HashMap<String, Vec<RecordBatch>>>,
52
53 pub(crate) table_schemas: Arc<RwLock<HashMap<String, Arc<Schema>>>>,
55
56 pub(crate) index: Arc<crate::index::HashIndex>,
58
59 pub(crate) row_counters: Arc<DashMap<String, std::sync::atomic::AtomicUsize>>,
61
62 pub(crate) sql_parser: SqlParser,
64 pub(crate) sql_optimizer: QueryOptimizer,
66
67 pub(crate) wal: Option<Arc<crate::wal::WriteAheadLog>>,
69
70 pub(crate) encrypted_wal: Option<Arc<crate::wal::encrypted_wal::EncryptedWal>>,
72
73 pub(crate) encryption: RwLock<Option<EncryptionConfig>>,
75
76 pub(crate) tx_manager: Arc<TransactionManager>,
78
79 pub(crate) columnar_cache: Arc<crate::storage::columnar_cache::ColumnarCache>,
81
82 pub(crate) gpu_manager: Option<Arc<crate::storage::gpu::GpuManager>>,
84
85 pub(crate) job_sender: Option<std::sync::mpsc::Sender<BackgroundJob>>,
87
88 pub durability: DurabilityLevel,
90
91 pub(crate) index_registry: RwLock<HashMap<String, (String, String)>>,
93
94 pub(crate) automation_engine: Arc<crate::automation::ExecutionEngine>,
96
97 pub(crate) trigger_registry: crate::engine::automation_api::TriggerRegistry,
99
100 pub(crate) trigger_executor: Arc<RwLock<crate::automation::TriggerExecutor>>,
102
103 pub(crate) procedure_executor: Arc<RwLock<crate::automation::ProcedureExecutor>>,
105
106 pub(crate) schedule_executor: Arc<RwLock<crate::automation::ScheduleExecutor>>,
108
109 #[allow(dead_code)]
111 pub(crate) parallel_engine: Arc<crate::engine::parallel_engine::ParallelExecutionEngine>,
112}