proof_of_sql/base/database/
table_operation_error.rsuse super::{ColumnField, ColumnOperationError, ColumnType};
use alloc::vec::Vec;
use core::result::Result;
use snafu::Snafu;
use sqlparser::ast::Ident;
#[derive(Snafu, Debug, PartialEq, Eq)]
pub enum TableOperationError {
#[snafu(display(
"Cannot union tables with incompatible schemas: {correct_schema:?} and {actual_schema:?}"
))]
UnionIncompatibleSchemas {
correct_schema: Vec<ColumnField>,
actual_schema: Vec<ColumnField>,
},
#[snafu(display(
"Cannot join tables on columns with incompatible types: {left_type:?} and {right_type:?}"
))]
JoinIncompatibleTypes {
left_type: ColumnType,
right_type: ColumnType,
},
#[snafu(display("Column {column_ident:?} does not exist in table"))]
ColumnDoesNotExist {
column_ident: Ident,
},
#[snafu(display("Some column is duplicated in table"))]
DuplicateColumn,
#[snafu(transparent)]
ColumnOperationError {
source: ColumnOperationError,
},
}
pub type TableOperationResult<T> = Result<T, TableOperationError>;