proof_of_sql/sql/
error.rs1use crate::base::{
2 database::ColumnType,
3 math::decimal::{DecimalError, IntermediateDecimalError},
4};
5use alloc::string::{String, ToString};
6use core::result::Result;
7use snafu::Snafu;
8
9#[derive(Snafu, Debug, PartialEq, Eq)]
12pub enum AnalyzeError {
13 #[snafu(display("Expected '{expected}' but found '{actual}'"))]
14 InvalidDataType {
16 expected: ColumnType,
18 actual: ColumnType,
20 },
21
22 #[snafu(display("Left side has '{left_type}' type but right side has '{right_type}' type"))]
23 DataTypeMismatch {
25 left_type: String,
27 right_type: String,
29 },
30
31 #[snafu(display("Columns have different lengths: {len_a} != {len_b}"))]
32 DifferentColumnLength {
34 len_a: usize,
36 len_b: usize,
38 },
39
40 #[snafu(transparent)]
41 DecimalConversionError {
43 source: DecimalError,
45 },
46}
47
48impl From<AnalyzeError> for String {
49 fn from(error: AnalyzeError) -> Self {
50 error.to_string()
51 }
52}
53
54impl From<IntermediateDecimalError> for AnalyzeError {
55 fn from(err: IntermediateDecimalError) -> AnalyzeError {
56 AnalyzeError::DecimalConversionError {
57 source: DecimalError::IntermediateDecimalConversionError { source: err },
58 }
59 }
60}
61
62pub type AnalyzeResult<T> = Result<T, AnalyzeError>;