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 text_search;
38pub mod trigger;
39pub mod user_type;
40pub use user_type::*;
41pub mod view;
42pub use view::*;
43
44use thiserror::Error;
45
46#[derive(Debug, Error)]
48pub enum IrError {
49 #[error("invalid identifier: {0}")]
51 InvalidIdentifier(String),
52
53 #[error("invalid column type: {0}")]
55 InvalidColumnType(String),
56
57 #[error("missing required field: {0}")]
59 MissingField(&'static str),
60
61 #[error("publication {0:?}: empty Selective scope (no tables, no schemas)")]
63 EmptyPublication(crate::identifier::Identifier),
64 #[error("publication {0:?} table {1:?}: empty column list (use None to publish all columns)")]
66 EmptyColumnList(
67 crate::identifier::Identifier,
68 crate::identifier::QualifiedName,
69 ),
70 #[error("publication {0:?}: empty publish bitset (must enable at least one DML kind)")]
72 EmptyPublishBitset(crate::identifier::Identifier),
73 #[error("publication {0:?} table {1:?}: duplicate column {2:?} in column list")]
75 DuplicateColumnInPublication(
76 crate::identifier::Identifier,
77 crate::identifier::QualifiedName,
78 crate::identifier::Identifier,
79 ),
80
81 #[error("view {view}: column {column} has an unresolved type (internal resolver bug)")]
83 UnresolvedViewColumn {
84 view: crate::identifier::QualifiedName,
86 column: crate::identifier::Identifier,
88 },
89
90 #[error("subscription {0:?}: empty publication list (PG requires at least one)")]
92 EmptySubscriptionPublications(crate::identifier::Identifier),
93 #[error("subscription {0:?}: empty connection string")]
95 EmptyConnection(crate::identifier::Identifier),
96
97 #[error(
99 "statistic {0}: empty kinds bitset (must enable at least one of ndistinct, dependencies, mcv)"
100 )]
101 EmptyStatisticKinds(crate::identifier::QualifiedName),
102 #[error("statistic {0}: empty column list")]
104 EmptyStatisticColumns(crate::identifier::QualifiedName),
105
106 #[error("duplicate event trigger: {0}")]
108 DuplicateEventTrigger(crate::identifier::Identifier),
109
110 #[error("duplicate aggregate overload: {0} (same name and argument types)")]
112 DuplicateAggregate(crate::identifier::QualifiedName),
113
114 #[error("duplicate text search dictionary: {0}")]
116 DuplicateTsDictionary(crate::identifier::QualifiedName),
117
118 #[error("duplicate text search configuration: {0}")]
120 DuplicateTsConfiguration(crate::identifier::QualifiedName),
121
122 #[error("duplicate cast ({src} AS {tgt})")]
124 DuplicateCast {
125 src: crate::identifier::QualifiedName,
127 tgt: crate::identifier::QualifiedName,
129 },
130
131 #[error("duplicate tablespace: {0}")]
133 DuplicateTablespace(crate::identifier::Identifier),
134
135 #[error("duplicate {kind}: {key}")]
138 DuplicateObject {
139 kind: &'static str,
141 key: String,
143 },
144
145 #[error("collation {qname}: invalid — {reason}")]
147 InvalidCollation {
148 qname: crate::identifier::QualifiedName,
150 reason: String,
152 },
153}