use thiserror::Error;
use crate::catalog::CatalogQuery;
use crate::ir::IrError;
use crate::parse::ParseError;
#[derive(Debug, Error)]
pub enum CatalogError {
#[error("catalog query {query:?} failed: {message}")]
QueryFailed {
query: CatalogQuery,
message: String,
},
#[error("catalog query {query:?} returned no rows")]
MissingResult {
query: CatalogQuery,
},
#[error("catalog row missing column {column:?} for query {query:?}")]
MissingColumn {
query: CatalogQuery,
column: String,
},
#[error("catalog row column {column:?} had unexpected type for query {query:?}: {message}")]
BadColumnType {
query: CatalogQuery,
column: String,
message: String,
},
#[error("unsupported Postgres major version: {0} (supported: 14, 15, 16, 17)")]
UnsupportedPgVersion(u32),
#[error("schema {0:?} is reserved and cannot be managed by pgevolve")]
CannotManageReservedSchema(String),
#[error("invalid ignore glob {0:?}: {1}")]
InvalidIgnoreGlob(String, glob::PatternError),
#[error("IR error while assembling catalog: {0}")]
Ir(#[from] IrError),
#[error("re-parsing introspected SQL fragment failed: {0}")]
ReparseFailed(#[from] ParseError),
#[error("catalog assembly: dangling reference {kind} for {what}")]
DanglingReference {
kind: &'static str,
what: String,
},
}