1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, MongrelQueryError>;
4
5#[non_exhaustive]
6#[derive(Debug, Error)]
7pub enum MongrelQueryError {
8 #[error("mongreldb error: {0}")]
9 Core(#[from] mongreldb_core::MongrelError),
10 #[error("arrow error: {0}")]
11 Arrow(String),
12 #[error("datafusion error: {0}")]
13 DataFusion(String),
14 #[error("schema error: {0}")]
15 Schema(String),
16 #[error("query {query_id} cancelled: {reason:?}")]
17 QueryCancelled {
18 query_id: crate::QueryId,
19 reason: mongreldb_core::CancellationReason,
20 completed_statements: usize,
21 cancelled_statement_index: usize,
22 },
23 #[error("query {query_id} deadline exceeded")]
24 DeadlineExceeded {
25 query_id: crate::QueryId,
26 timeout_ms: Option<u64>,
27 completed_statements: usize,
28 cancelled_statement_index: usize,
29 },
30 #[error("query id {query_id} is already active")]
31 QueryIdConflict { query_id: crate::QueryId },
32 #[error("SQL query registry is full")]
33 QueryRegistryFull,
34 #[error("transaction is aborted; only ROLLBACK is allowed")]
35 TransactionAborted,
36 #[error("query {query_id} commit outcome: committed={committed}: {message}")]
37 CommitOutcome {
38 query_id: crate::QueryId,
39 committed: bool,
40 message: String,
41 },
42 #[error("invalid query state: {0}")]
43 InvalidQueryState(String),
44}