pub enum QueryError {
Show 16 variants
TableNotFound(String),
ColumnNotFound {
table: String,
column: String,
},
TypeError(String),
JoinLimitExceeded,
NestedLoopPairLimitExceeded {
left_rows: usize,
right_rows: usize,
limit: usize,
},
SortLimitExceeded,
MemoryLimitExceeded {
limit_bytes: usize,
requested_bytes: usize,
},
Parse(String),
IndexError(String),
ViewError(String),
StorageError(String),
ReadonlyNeedsWrite,
ReadonlyMode,
Timeout {
timeout_ms: u64,
},
Cancelled,
Execution(String),
}Expand description
Typed error enum for query execution failures.
Replaces the previous Result<QueryResult, String> pattern with
structured variants that callers can programmatically match on.
The From<String> impl enables gradual migration: existing
Err(format!(...)) sites continue to compile via ? propagation.
Display strings are wire-visible behavior: the server’s egress
sanitization prefix-matches them and clients assert on them. Every
message is pinned byte-exact by tests/error_display.rs; do not
reword one without updating that suite deliberately.
Variants§
TableNotFound(String)
Table does not exist.
ColumnNotFound
Column does not exist on table.
TypeError(String)
Type mismatch in expression.
JoinLimitExceeded
Join result exceeded MAX_JOIN_ROWS.
NestedLoopPairLimitExceeded
A fallback nested-loop join would evaluate more candidate pairs than the measured safety cap.
SortLimitExceeded
Sort exceeded MAX_SORT_ROWS.
MemoryLimitExceeded
Per-query memory budget exceeded during materialization (sort buffer, join build side, GROUP BY hash table, or IN-list). Returned cleanly so the server process is never OOM-killed by a crafted query.
Parse(String)
Parse error (wraps parser error).
IndexError(String)
Index-related error.
ViewError(String)
View-related error.
StorageError(String)
WAL or I/O error.
ReadonlyNeedsWrite
Readonly path needs write lock (internal sentinel). The server intercepts this variant before Display, so the sentinel string must never cross the wire.
ReadonlyMode
The engine was opened read-only (snapshot serving) and the statement
requires a writer. Unlike QueryError::ReadonlyNeedsWrite, this is a
terminal error with an operator-facing message: there is no writer to
escalate to in this mode.
Timeout
The per-query deadline elapsed before execution finished. Returned as a
clean early-return from an unbounded executor loop so the query releases
its locks instead of running to completion. timeout_ms is the
configured per-query timeout.
Cancelled
Execution was cancelled cooperatively (e.g. the issuing client
disconnected). Like QueryError::Timeout, a clean early-return.
Execution(String)
Generic execution error (catch-all for migration).
Trait Implementations§
Source§impl Clone for QueryError
impl Clone for QueryError
Source§fn clone(&self) -> QueryError
fn clone(&self) -> QueryError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for QueryError
impl Debug for QueryError
Source§impl Display for QueryError
impl Display for QueryError
Source§impl Error for QueryError
impl Error for QueryError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()