1pub mod canon;
8pub mod catalog;
9pub mod cluster;
10pub mod collation;
11pub mod column;
12pub mod column_type;
13pub mod constraint;
14pub mod default_expr;
15pub mod default_privileges;
16pub mod difference;
17pub mod eq;
18pub mod extension;
19pub mod function;
20pub mod grant;
21pub mod index;
22pub mod partition;
23pub mod policy;
24pub mod publication;
25pub mod reloptions;
26pub mod schema;
27pub mod sequence;
28pub mod statistic;
29pub mod subscription;
30pub mod table;
31pub use function::*;
32pub mod procedure;
33pub use procedure::*;
34pub mod trigger;
35pub mod user_type;
36pub use user_type::*;
37pub mod view;
38pub use view::*;
39
40use thiserror::Error;
41
42#[derive(Debug, Error)]
44pub enum IrError {
45 #[error("invalid identifier: {0}")]
47 InvalidIdentifier(String),
48
49 #[error("invalid column type: {0}")]
51 InvalidColumnType(String),
52
53 #[error("missing required field: {0}")]
55 MissingField(&'static str),
56
57 #[error("publication {0:?}: empty Selective scope (no tables, no schemas)")]
59 EmptyPublication(crate::identifier::Identifier),
60 #[error("publication {0:?} table {1:?}: empty column list (use None to publish all columns)")]
62 EmptyColumnList(
63 crate::identifier::Identifier,
64 crate::identifier::QualifiedName,
65 ),
66 #[error("publication {0:?}: empty publish bitset (must enable at least one DML kind)")]
68 EmptyPublishBitset(crate::identifier::Identifier),
69 #[error("publication {0:?} table {1:?}: duplicate column {2:?} in column list")]
71 DuplicateColumnInPublication(
72 crate::identifier::Identifier,
73 crate::identifier::QualifiedName,
74 crate::identifier::Identifier,
75 ),
76
77 #[error("subscription {0:?}: empty publication list (PG requires at least one)")]
79 EmptySubscriptionPublications(crate::identifier::Identifier),
80 #[error("subscription {0:?}: empty connection string")]
82 EmptyConnection(crate::identifier::Identifier),
83
84 #[error(
86 "statistic {0}: empty kinds bitset (must enable at least one of ndistinct, dependencies, mcv)"
87 )]
88 EmptyStatisticKinds(crate::identifier::QualifiedName),
89 #[error("statistic {0}: empty column list")]
91 EmptyStatisticColumns(crate::identifier::QualifiedName),
92
93 #[error("collation {qname}: invalid — {reason}")]
95 InvalidCollation {
96 qname: crate::identifier::QualifiedName,
98 reason: String,
100 },
101}