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 event_trigger;
35pub mod trigger;
36pub mod user_type;
37pub use user_type::*;
38pub mod view;
39pub use view::*;
40
41use thiserror::Error;
42
43#[derive(Debug, Error)]
45pub enum IrError {
46 #[error("invalid identifier: {0}")]
48 InvalidIdentifier(String),
49
50 #[error("invalid column type: {0}")]
52 InvalidColumnType(String),
53
54 #[error("missing required field: {0}")]
56 MissingField(&'static str),
57
58 #[error("publication {0:?}: empty Selective scope (no tables, no schemas)")]
60 EmptyPublication(crate::identifier::Identifier),
61 #[error("publication {0:?} table {1:?}: empty column list (use None to publish all columns)")]
63 EmptyColumnList(
64 crate::identifier::Identifier,
65 crate::identifier::QualifiedName,
66 ),
67 #[error("publication {0:?}: empty publish bitset (must enable at least one DML kind)")]
69 EmptyPublishBitset(crate::identifier::Identifier),
70 #[error("publication {0:?} table {1:?}: duplicate column {2:?} in column list")]
72 DuplicateColumnInPublication(
73 crate::identifier::Identifier,
74 crate::identifier::QualifiedName,
75 crate::identifier::Identifier,
76 ),
77
78 #[error("subscription {0:?}: empty publication list (PG requires at least one)")]
80 EmptySubscriptionPublications(crate::identifier::Identifier),
81 #[error("subscription {0:?}: empty connection string")]
83 EmptyConnection(crate::identifier::Identifier),
84
85 #[error(
87 "statistic {0}: empty kinds bitset (must enable at least one of ndistinct, dependencies, mcv)"
88 )]
89 EmptyStatisticKinds(crate::identifier::QualifiedName),
90 #[error("statistic {0}: empty column list")]
92 EmptyStatisticColumns(crate::identifier::QualifiedName),
93
94 #[error("duplicate event trigger: {0}")]
96 DuplicateEventTrigger(crate::identifier::Identifier),
97
98 #[error("duplicate tablespace: {0}")]
100 DuplicateTablespace(crate::identifier::Identifier),
101
102 #[error("collation {qname}: invalid — {reason}")]
104 InvalidCollation {
105 qname: crate::identifier::QualifiedName,
107 reason: String,
109 },
110}