proof_of_sql/base/database/
table_operation_error.rs1use super::{ColumnField, ColumnOperationError, ColumnType};
2use alloc::vec::Vec;
3use core::result::Result;
4use snafu::Snafu;
5use sqlparser::ast::Ident;
6
7#[derive(Snafu, Debug, PartialEq, Eq)]
9pub enum TableOperationError {
10 #[snafu(display(
12 "Cannot union tables with incompatible schemas: {correct_schema:?} and {actual_schema:?}"
13 ))]
14 UnionIncompatibleSchemas {
15 correct_schema: Vec<ColumnField>,
17 actual_schema: Vec<ColumnField>,
19 },
20 #[snafu(display(
22 "Cannot join tables with different numbers of columns: {left_num_columns} and {right_num_columns}"
23 ))]
24 JoinWithDifferentNumberOfColumns {
25 left_num_columns: usize,
27 right_num_columns: usize,
29 },
30 #[snafu(display(
32 "Cannot join tables on columns with incompatible types: {left_type:?} and {right_type:?}"
33 ))]
34 JoinIncompatibleTypes {
35 left_type: ColumnType,
37 right_type: ColumnType,
39 },
40 #[snafu(display("Column {column_ident:?} does not exist in table"))]
42 ColumnDoesNotExist {
43 column_ident: Ident,
45 },
46 #[snafu(display("Some column is duplicated in table"))]
48 DuplicateColumn,
49 #[snafu(transparent)]
51 ColumnOperationError {
52 source: ColumnOperationError,
54 },
55 #[snafu(display("Column index out of bounds: {column_index}"))]
57 ColumnIndexOutOfBounds {
58 column_index: usize,
60 },
61}
62
63pub type TableOperationResult<T> = Result<T, TableOperationError>;