reifydb_sub_server/
execute.rs1use std::{error, fmt, sync::Arc};
10
11use reifydb_type::error::Diagnostic;
12
13#[derive(Debug)]
15pub enum ExecuteError {
16 Timeout,
18 Cancelled,
20 Disconnected,
22 Engine {
24 diagnostic: Arc<Diagnostic>,
26 statement: String,
28 },
29 Rejected {
31 code: String,
33 message: String,
35 },
36}
37
38impl fmt::Display for ExecuteError {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 match self {
41 ExecuteError::Timeout => write!(f, "Query execution timed out"),
42 ExecuteError::Cancelled => write!(f, "Query was cancelled"),
43 ExecuteError::Disconnected => write!(f, "Query stream disconnected unexpectedly"),
44 ExecuteError::Engine {
45 diagnostic,
46 ..
47 } => write!(f, "Engine error: {}", diagnostic.message),
48 ExecuteError::Rejected {
49 code,
50 message,
51 } => write!(f, "Rejected [{}]: {}", code, message),
52 }
53 }
54}
55
56impl error::Error for ExecuteError {}
57
58pub type ExecuteResult<T> = Result<T, ExecuteError>;