1#[path = "sql_bridge/write_errors.rs"]
13mod write_errors;
14
15#[path = "sql_bridge/manual_atomic.rs"]
16mod manual_atomic;
17use manual_atomic::run_manual_atomic_unit;
18#[path = "sql_bridge/standalone_admission.rs"]
19mod standalone_admission;
20use standalone_admission::{
21 acquire_standalone_lease, acquire_unit_lease, admit_standalone_operation, StandaloneWriteError,
22};
23mod standalone_batch;
24#[cfg(test)]
25use standalone_batch::BatchPoisonReason;
26use standalone_batch::{
27 run_standalone_batch, run_standalone_script, run_standalone_statement,
28 run_standalone_top_level, BatchFailure, PoisonedBatchError,
29};
30
31use std::any::Any;
32use std::sync::atomic::{AtomicU64, Ordering};
33use std::sync::Arc;
34
35use async_trait::async_trait;
36
37use khive_storage::error::StorageError;
38use khive_storage::types::{PageRequest, SqlColumn, SqlRow, SqlStatement, SqlValue};
39use khive_storage::{AtomicUnitOp, StorageCapability, TopLevelMaintenance};
40use tokio::sync::{OwnedSemaphorePermit, Semaphore};
41
42use crate::error::SqliteError;
43use crate::pool::{ConnectionPool, SharedReaderTransactionGuard, StandaloneReaderPurpose};
44
45mod batch_exec;
50use batch_exec::{
51 cached_read_transaction_control, execute_prepared_batch, next_sqlite_token,
52 reject_transaction_control_statements, skip_sqlite_empty_prefix, transaction_control_head,
53 CachedReadTransactionControl,
54};
55
56mod rows;
57
58pub(crate) use rows::bind_params;
59use rows::{
60 prepare_batch_statements, prepare_cached_sql_statement, prepare_sql_statement, row_to_sql_row,
61 AtomicEventRows,
62};
63#[cfg(test)]
64use rows::{COUNTED_EVENT_INSERT_LABELS, ROW_CONVERSIONS};
65
66#[cfg(test)]
67#[path = "atomic_event_usage_tests.rs"]
68mod atomic_event_usage_tests;
69
70mod query_execution;
71use query_execution::{
72 execute_prepared_query, execute_prepared_query_page, execute_prepared_query_row, execute_query,
73 execute_query_page, execute_query_row, map_rusqlite_err, map_write_boundary_err, map_write_err,
74 prepare_bound_statement, settle_pooled_call,
75};
76
77mod reader_capability;
78pub(crate) use reader_capability::reader_capability_admits;
79use reader_capability::{
80 admit_reader_capability_sql, execute_query_interruptibly, execute_query_page_interruptibly,
81 execute_query_row_interruptibly,
82};
83
84mod handles;
85pub(crate) use handles::acquire_in_memory_write_unit;
86use handles::{
87 acquire_handle_slot, acquire_reader_handle_slot, open_standalone_reader_on_blocking,
88 open_standalone_writer_on_blocking, SlotTimeoutClass,
89};
90#[cfg(test)]
91use handles::{open_standalone_on_blocking, open_standalone_reader, open_standalone_writer};
92
93mod sqlite_reader;
94#[cfg(test)]
95use sqlite_reader::CACHED_READ_TRANSACTION_LABEL;
96use sqlite_reader::{
97 execute_standalone_read, open_explicit_read_transaction_handle, SqliteReader, StandaloneHandle,
98};
99
100mod sqlite_writer;
101use sqlite_writer::{execute_top_level_maintenance, SqliteWriter};
102
103mod pool_backed;
104use pool_backed::{run_pool_reader_query, PoolBackedReader, PoolBackedWriter};
105
106mod inline_bridge;
107pub use inline_bridge::SqlBridge;
108#[cfg(test)]
109use inline_bridge::{block_on_sync, InlineWriter};
110
111#[cfg(test)]
112#[path = "sql_bridge_tests.rs"]
113mod tests;
114
115#[cfg(test)]
116#[path = "sql_bridge/direct_busy_tests.rs"]
117mod direct_busy_tests;
118
119#[cfg(test)]
120#[path = "sql_bridge/settlement_hazard_tests.rs"]
121mod settlement_hazard_tests;