1use {serde::Serialize, std::fmt::Debug, thiserror::Error as ThisError};
2
3pub use crate::{
4 ast_builder::AstBuilderError,
5 data::{
6 IntervalError, KeyError, RowError, SchemaParseError, StringExtError, TableError, ValueError,
7 },
8 executor::{
9 AlterError, DeleteError, EvaluateError, ExecuteError, FetchError, InsertError, SelectError,
10 SortError, UpdateError, ValidateError,
11 },
12 plan::PlanError,
13 row_conversion::RowConversionError,
14 store::{AlterTableError, IndexError},
15 translate::TranslateError,
16};
17
18#[derive(ThisError, Serialize, Debug, PartialEq)]
19pub enum Error {
20 #[error("storage: {0}")]
21 StorageMsg(String),
22
23 #[error("parser: {0}")]
24 Parser(String),
25
26 #[error("translate: {0}")]
27 Translate(#[from] TranslateError),
28
29 #[error("ast-builder: {0}")]
30 AstBuilder(#[from] AstBuilderError),
31
32 #[error("alter-table: {0}")]
33 AlterTable(#[from] AlterTableError),
34 #[error("index: {0}")]
35 Index(#[from] IndexError),
36 #[error("execute: {0}")]
37 Execute(#[from] ExecuteError),
38 #[error("alter: {0}")]
39 Alter(Box<AlterError>),
40 #[error("fetch: {0}")]
41 Fetch(#[from] FetchError),
42 #[error("select: {0}")]
43 Select(#[from] SelectError),
44 #[error("evaluate: {0}")]
45 Evaluate(#[from] EvaluateError),
46 #[error("sort: {0}")]
47 Sort(#[from] SortError),
48 #[error("insert: {0}")]
49 Insert(#[from] InsertError),
50 #[error("update: {0}")]
51 Delete(#[from] DeleteError),
52 #[error("delete: {0}")]
53 Update(#[from] UpdateError),
54 #[error("table: {0}")]
55 Table(#[from] TableError),
56 #[error("validate: {0}")]
57 Validate(#[from] ValidateError),
58 #[error("row: {0}")]
59 Row(#[from] RowError),
60 #[error("key: {0}")]
61 Key(#[from] KeyError),
62 #[error("value: {0}")]
63 Value(Box<ValueError>),
64 #[error("interval: {0}")]
65 Interval(#[from] IntervalError),
66 #[error("string-ext: {0}")]
67 StringExt(#[from] StringExtError),
68 #[error("plan: {0}")]
69 Plan(#[from] PlanError),
70 #[error("schema-parse: {0}")]
71 Schema(#[from] SchemaParseError),
72
73 #[error("row-conversion: {0}")]
74 RowConversion(#[from] RowConversionError),
75}
76
77pub type Result<T, E = Error> = std::result::Result<T, E>;
78
79impl From<AlterError> for Error {
80 fn from(e: AlterError) -> Error {
81 Error::Alter(Box::new(e))
82 }
83}
84
85impl From<ValueError> for Error {
86 fn from(e: ValueError) -> Error {
87 Error::Value(Box::new(e))
88 }
89}