1pub mod aggregate;
8pub mod canon;
9pub mod cast;
10pub mod catalog;
11pub mod cluster;
12pub mod collation;
13pub mod column;
14pub mod column_type;
15pub mod constraint;
16pub mod default_expr;
17pub mod default_privileges;
18pub mod difference;
19pub mod eq;
20pub mod extension;
21pub mod function;
22pub mod grant;
23pub mod index;
24pub mod partition;
25pub mod policy;
26pub mod publication;
27pub mod reloptions;
28pub mod schema;
29pub mod sequence;
30pub mod statistic;
31pub mod subscription;
32pub mod table;
33pub use function::*;
34pub mod procedure;
35pub use procedure::*;
36pub mod event_trigger;
37pub mod trigger;
38pub mod user_type;
39pub use user_type::*;
40pub mod view;
41pub use view::*;
42
43use thiserror::Error;
44
45#[derive(Debug, Error)]
47pub enum IrError {
48 #[error("invalid identifier: {0}")]
50 InvalidIdentifier(String),
51
52 #[error("invalid column type: {0}")]
54 InvalidColumnType(String),
55
56 #[error("missing required field: {0}")]
58 MissingField(&'static str),
59
60 #[error("publication {0:?}: empty Selective scope (no tables, no schemas)")]
62 EmptyPublication(crate::identifier::Identifier),
63 #[error("publication {0:?} table {1:?}: empty column list (use None to publish all columns)")]
65 EmptyColumnList(
66 crate::identifier::Identifier,
67 crate::identifier::QualifiedName,
68 ),
69 #[error("publication {0:?}: empty publish bitset (must enable at least one DML kind)")]
71 EmptyPublishBitset(crate::identifier::Identifier),
72 #[error("publication {0:?} table {1:?}: duplicate column {2:?} in column list")]
74 DuplicateColumnInPublication(
75 crate::identifier::Identifier,
76 crate::identifier::QualifiedName,
77 crate::identifier::Identifier,
78 ),
79
80 #[error("subscription {0:?}: empty publication list (PG requires at least one)")]
82 EmptySubscriptionPublications(crate::identifier::Identifier),
83 #[error("subscription {0:?}: empty connection string")]
85 EmptyConnection(crate::identifier::Identifier),
86
87 #[error(
89 "statistic {0}: empty kinds bitset (must enable at least one of ndistinct, dependencies, mcv)"
90 )]
91 EmptyStatisticKinds(crate::identifier::QualifiedName),
92 #[error("statistic {0}: empty column list")]
94 EmptyStatisticColumns(crate::identifier::QualifiedName),
95
96 #[error("duplicate event trigger: {0}")]
98 DuplicateEventTrigger(crate::identifier::Identifier),
99
100 #[error("duplicate aggregate overload: {0} (same name and argument types)")]
102 DuplicateAggregate(crate::identifier::QualifiedName),
103
104 #[error("duplicate cast ({src} AS {tgt})")]
106 DuplicateCast {
107 src: crate::identifier::QualifiedName,
109 tgt: crate::identifier::QualifiedName,
111 },
112
113 #[error("duplicate tablespace: {0}")]
115 DuplicateTablespace(crate::identifier::Identifier),
116
117 #[error("collation {qname}: invalid — {reason}")]
119 InvalidCollation {
120 qname: crate::identifier::QualifiedName,
122 reason: String,
124 },
125}