use proof_of_sql_parser::Identifier;
use thiserror::Error;
#[derive(Error, Debug, PartialEq, Eq)]
pub enum PostprocessingError {
#[error("Error in slicing due to slice index beyond usize {0}")]
InvalidSliceIndex(i128),
#[error("Column not found: {0}")]
ColumnNotFound(String),
#[error(transparent)]
ExpressionEvaluationError(#[from] crate::base::database::ExpressionEvaluationError),
#[error(transparent)]
OwnedTableError(#[from] crate::base::database::OwnedTableError),
#[error("Invalid group by: column '{0}' must not appear outside aggregate functions or `GROUP BY` clause.")]
IdentifierNotInAggregationOperatorOrGroupByClause(Identifier),
#[error(transparent)]
AggregateColumnsError(#[from] crate::base::database::group_by_util::AggregateColumnsError),
#[error(transparent)]
OwnedColumnError(#[from] crate::base::database::OwnedColumnError),
#[error("Nested aggregation in `GROUP BY` clause: {0}")]
NestedAggregationInGroupByClause(String),
}
pub type PostprocessingResult<T> = core::result::Result<T, PostprocessingError>;