1use crate::{
8 Diagnostic, DiagnosticCode, DiagnosticDetail, ErrorClass, ErrorCode, ErrorOrigin,
9 QueryErrorKind, QueryProjectionCode, QueryResultShapeCode, RuntimeBoundaryCode,
10 RuntimeErrorKind, SchemaDdlAdmissionCode, SqlFeatureCode, SqlLoweringCode,
11 SqlSurfaceMismatchCode, SqlWriteBoundaryCode,
12};
13
14macro_rules! define_error_code_registry {
15 (
16 $(
17 $name:ident = $raw:literal => $diagnostic:ident
18 $(, detail($detail_variant:ident { $($detail_body:tt)* }))?;
19 )+
20 ) => {
21 impl ErrorCode {
22 $(
23 pub const $name: Self = Self($raw);
24 )+
25
26 #[must_use]
28 pub const fn known(raw: u16) -> Option<Self> {
29 match raw {
30 $(
31 $raw => Some(Self::$name),
32 )+
33 _ => None,
34 }
35 }
36
37 #[must_use]
39 pub const fn is_known(self) -> bool {
40 match Self::known(self.raw()) {
41 Some(_) => true,
42 None => false,
43 }
44 }
45
46 #[must_use]
48 pub const fn from_parts(
49 code: DiagnosticCode,
50 detail: Option<DiagnosticDetail>,
51 ) -> Self {
52 match (code, detail) {
53 $(
54 $(
55 (
56 DiagnosticCode::$diagnostic,
57 Some(DiagnosticDetail::$detail_variant { $($detail_body)* }),
58 ) => {
59 Self::$name
60 }
61 )?
62 )+
63 _ => code.error_code(),
64 }
65 }
66
67 #[must_use]
69 pub const fn diagnostic_code(self) -> DiagnosticCode {
70 match self.raw() {
71 $(
72 $raw => DiagnosticCode::$diagnostic,
73 )+
74 _ => DiagnosticCode::RuntimeInternal,
75 }
76 }
77
78 #[must_use]
80 pub const fn class(self) -> ErrorClass {
81 self.diagnostic_code().class()
82 }
83
84 #[must_use]
86 pub const fn diagnostic_detail(self) -> Option<DiagnosticDetail> {
87 match self.raw() {
88 $(
89 $(
90 $raw => Some(DiagnosticDetail::$detail_variant {
91 $($detail_body)*
92 }),
93 )?
94 )+
95 _ => None,
96 }
97 }
98
99 #[must_use]
101 pub const fn diagnostic(self, origin: ErrorOrigin) -> Diagnostic {
102 Diagnostic::new(self.diagnostic_code(), origin, self.diagnostic_detail())
103 }
104 }
105
106 impl DiagnosticDetail {
107 #[must_use]
109 pub const fn diagnostic_code(self) -> DiagnosticCode {
110 match self {
111 $(
112 $(
113 Self::$detail_variant { $($detail_body)* } => {
114 DiagnosticCode::$diagnostic
115 }
116 )?
117 )+
118 }
119 }
120 }
121
122 #[cfg(test)]
123 pub(super) const ORDERED_ERROR_CODES: &[ErrorCode] = &[
124 $(
125 ErrorCode::$name,
126 )+
127 ];
128
129 #[cfg(test)]
130 pub(super) const DETAIL_ERROR_CODES: &[(ErrorCode, DiagnosticCode, DiagnosticDetail)] = &[
131 $(
132 $(
133 (
134 ErrorCode::$name,
135 DiagnosticCode::$diagnostic,
136 DiagnosticDetail::$detail_variant {
137 $($detail_body)*
138 },
139 ),
140 )?
141 )+
142 ];
143 };
144}
145
146define_error_code_registry! {
149 QUERY_VALIDATE = 1 => QueryValidate,
150 detail(QueryKind { kind: QueryErrorKind::Validate });
151 QUERY_INTENT = 2 => QueryIntent,
152 detail(QueryKind { kind: QueryErrorKind::Intent });
153 QUERY_PLAN = 3 => QueryPlan,
154 detail(QueryKind { kind: QueryErrorKind::Plan });
155 QUERY_ACCESS_REQUIREMENT = 4 => QueryAccessRequirement,
156 detail(QueryKind { kind: QueryErrorKind::AccessRequirement });
157 QUERY_UNORDERED_PAGINATION = 5 => QueryUnorderedPagination,
158 detail(QueryKind { kind: QueryErrorKind::UnorderedPagination });
159 QUERY_INVALID_CONTINUATION_CURSOR = 6 => QueryInvalidContinuationCursor,
160 detail(QueryKind { kind: QueryErrorKind::InvalidContinuationCursor });
161 QUERY_NOT_FOUND = 7 => QueryNotFound,
162 detail(QueryKind { kind: QueryErrorKind::NotFound });
163 QUERY_NOT_UNIQUE = 8 => QueryNotUnique,
164 detail(QueryKind { kind: QueryErrorKind::NotUnique });
165 QUERY_NUMERIC_OVERFLOW = 9 => QueryNumericOverflow;
166 QUERY_NUMERIC_NOT_REPRESENTABLE = 10 => QueryNumericNotRepresentable;
167 QUERY_UNKNOWN_AGGREGATE_TARGET_FIELD = 11 => QueryUnknownAggregateTargetField;
168 QUERY_UNSUPPORTED_SQL_FEATURE = 12 => QueryUnsupportedSqlFeature;
169 QUERY_SQL_SURFACE_MISMATCH = 13 => QuerySqlSurfaceMismatch;
170 SCHEMA_DDL_ADMISSION = 14 => SchemaDdlAdmission;
171 STORE_NOT_FOUND = 15 => StoreNotFound;
172 STORE_CORRUPTION = 16 => StoreCorruption;
173 STORE_INVARIANT_VIOLATION = 17 => StoreInvariantViolation;
174 RUNTIME_CORRUPTION = 18 => RuntimeCorruption,
175 detail(RuntimeKind { kind: RuntimeErrorKind::Corruption });
176 RUNTIME_INCOMPATIBLE_PERSISTED_FORMAT = 19 => RuntimeIncompatiblePersistedFormat,
177 detail(RuntimeKind { kind: RuntimeErrorKind::IncompatiblePersistedFormat });
178 RUNTIME_INVARIANT_VIOLATION = 20 => RuntimeInvariantViolation,
179 detail(RuntimeKind { kind: RuntimeErrorKind::InvariantViolation });
180 RUNTIME_CONFLICT = 21 => RuntimeConflict,
181 detail(RuntimeKind { kind: RuntimeErrorKind::Conflict });
182 RUNTIME_NOT_FOUND = 22 => RuntimeNotFound,
183 detail(RuntimeKind { kind: RuntimeErrorKind::NotFound });
184 RUNTIME_UNSUPPORTED = 23 => RuntimeUnsupported,
185 detail(RuntimeKind { kind: RuntimeErrorKind::Unsupported });
186 RUNTIME_INTERNAL = 24 => RuntimeInternal,
187 detail(RuntimeKind { kind: RuntimeErrorKind::Internal });
188
189 RUNTIME_BOUNDARY_SQL_SURFACE_CONTROLLER_REQUIRED = 25 => RuntimeUnsupported,
190 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlSurfaceControllerRequired });
191 RUNTIME_BOUNDARY_SCHEMA_SURFACE_CONTROLLER_REQUIRED = 26 => RuntimeUnsupported,
192 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SchemaSurfaceControllerRequired });
193 RUNTIME_BOUNDARY_SQL_QUERY_NO_CONFIGURED_ENTITIES = 27 => RuntimeUnsupported,
194 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlQueryNoConfiguredEntities });
195 RUNTIME_BOUNDARY_SQL_QUERY_ENTITY_NOT_CONFIGURED = 28 => RuntimeUnsupported,
196 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlQueryEntityNotConfigured });
197 RUNTIME_BOUNDARY_SQL_DDL_TARGET_REQUIRED = 29 => RuntimeUnsupported,
198 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlDdlTargetRequired });
199 RUNTIME_BOUNDARY_SQL_DDL_ENTITY_NOT_CONFIGURED = 30 => RuntimeUnsupported,
200 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlDdlEntityNotConfigured });
201 RUNTIME_BOUNDARY_QUERY_RESPONSE_ROWS_REQUIRED = 31 => RuntimeUnsupported,
202 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::QueryResponseRowsRequired });
203 RUNTIME_BOUNDARY_QUERY_RESPONSE_GROUPED_ROWS_REQUIRED = 32 => RuntimeUnsupported,
204 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::QueryResponseGroupedRowsRequired });
205 RUNTIME_BOUNDARY_MUTATION_RESULT_ENTITY_REQUIRED = 33 => RuntimeUnsupported,
206 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::MutationResultEntityRequired });
207 RUNTIME_BOUNDARY_MUTATION_RESULT_ENTITIES_REQUIRED = 34 => RuntimeUnsupported,
208 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::MutationResultEntitiesRequired });
209 RUNTIME_BOUNDARY_MUTATION_RESULT_ID_REQUIRED = 35 => RuntimeUnsupported,
210 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::MutationResultIdRequired });
211 RUNTIME_BOUNDARY_MUTATION_RESULT_IDS_REQUIRED = 36 => RuntimeUnsupported,
212 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::MutationResultIdsRequired });
213 RUNTIME_BOUNDARY_ROW_PROJECTION_FIELD_NOT_CONFIGURED = 37 => RuntimeUnsupported,
214 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::RowProjectionFieldNotConfigured });
215
216 SQL_FEATURE_AGGREGATE_FILTER_CLAUSE = 38 => QueryUnsupportedSqlFeature,
217 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AggregateFilterClause });
218 SQL_FEATURE_ALTER_STATEMENT_BEYOND_ALTER_TABLE = 39 => QueryUnsupportedSqlFeature,
219 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterStatementBeyondAlterTable });
220 SQL_FEATURE_ALTER_TABLE_ADD_COLUMN_DUPLICATE_DEFAULT = 40 => QueryUnsupportedSqlFeature,
221 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddColumnDuplicateDefault });
222 SQL_FEATURE_ALTER_TABLE_ADD_COLUMN_MODIFIERS = 41 => QueryUnsupportedSqlFeature,
223 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddColumnModifiers });
224 SQL_FEATURE_ALTER_TABLE_ADD_STATEMENT_BEYOND_ADD_COLUMN = 42 => QueryUnsupportedSqlFeature,
225 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddStatementBeyondAddColumn });
226 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_DROP_UNSUPPORTED_ACTION = 43 => QueryUnsupportedSqlFeature,
227 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnDropUnsupportedAction });
228 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_MODIFIERS = 44 => QueryUnsupportedSqlFeature,
229 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnModifiers });
230 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_SET_UNSUPPORTED_ACTION = 45 => QueryUnsupportedSqlFeature,
231 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnSetUnsupportedAction });
232 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_UNSUPPORTED_ACTION = 46 => QueryUnsupportedSqlFeature,
233 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnUnsupportedAction });
234 SQL_FEATURE_ALTER_TABLE_ALTER_STATEMENT_BEYOND_ALTER_COLUMN = 47 => QueryUnsupportedSqlFeature,
235 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterStatementBeyondAlterColumn });
236 SQL_FEATURE_ALTER_TABLE_DROP_COLUMN_IF_EXISTS_SYNTAX = 48 => QueryUnsupportedSqlFeature,
237 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropColumnIfExistsSyntax });
238 SQL_FEATURE_ALTER_TABLE_DROP_COLUMN_MODIFIERS = 49 => QueryUnsupportedSqlFeature,
239 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropColumnModifiers });
240 SQL_FEATURE_ALTER_TABLE_DROP_STATEMENT_BEYOND_DROP_COLUMN = 50 => QueryUnsupportedSqlFeature,
241 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropStatementBeyondDropColumn });
242 SQL_FEATURE_ALTER_TABLE_RENAME_COLUMN_MISSING_TO = 51 => QueryUnsupportedSqlFeature,
243 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameColumnMissingTo });
244 SQL_FEATURE_ALTER_TABLE_RENAME_COLUMN_MODIFIERS = 52 => QueryUnsupportedSqlFeature,
245 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameColumnModifiers });
246 SQL_FEATURE_ALTER_TABLE_RENAME_STATEMENT_BEYOND_RENAME_COLUMN = 53 => QueryUnsupportedSqlFeature,
247 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameStatementBeyondRenameColumn });
248 SQL_FEATURE_ALTER_TABLE_UNSUPPORTED_OPERATION = 54 => QueryUnsupportedSqlFeature,
249 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableUnsupportedOperation });
250 SQL_FEATURE_COLUMN_ALIAS = 55 => QueryUnsupportedSqlFeature,
251 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ColumnAlias });
252 SQL_FEATURE_CREATE_INDEX_IF_NOT_EXISTS_SYNTAX = 56 => QueryUnsupportedSqlFeature,
253 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexIfNotExistsSyntax });
254 SQL_FEATURE_CREATE_INDEX_KEY_ORDERING_MODIFIERS = 57 => QueryUnsupportedSqlFeature,
255 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexKeyOrderingModifiers });
256 SQL_FEATURE_CREATE_INDEX_MODIFIERS = 58 => QueryUnsupportedSqlFeature,
257 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexModifiers });
258 SQL_FEATURE_CREATE_STATEMENT_BEYOND_CREATE_INDEX = 59 => QueryUnsupportedSqlFeature,
259 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateStatementBeyondCreateIndex });
260 SQL_FEATURE_DESCRIBE_MODIFIER = 60 => QueryUnsupportedSqlFeature,
261 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DescribeModifier });
262 SQL_FEATURE_DDL_SCHEMA_VERSION_DUPLICATE_EXPECTED_CLAUSE = 61 => QueryUnsupportedSqlFeature,
263 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DdlSchemaVersionDuplicateExpectedClause });
264 SQL_FEATURE_DDL_SCHEMA_VERSION_DUPLICATE_SET_CLAUSE = 62 => QueryUnsupportedSqlFeature,
265 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DdlSchemaVersionDuplicateSetClause });
266 SQL_FEATURE_DROP_INDEX_MODIFIERS = 63 => QueryUnsupportedSqlFeature,
267 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropIndexModifiers });
268 SQL_FEATURE_DROP_INDEX_IF_EXISTS_SYNTAX = 64 => QueryUnsupportedSqlFeature,
269 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropIndexIfExistsSyntax });
270 SQL_FEATURE_DROP_STATEMENT_BEYOND_DROP_INDEX = 65 => QueryUnsupportedSqlFeature,
271 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropStatementBeyondDropIndex });
272 SQL_FEATURE_EXPRESSION_INDEX_UNSUPPORTED_FUNCTION = 66 => QueryUnsupportedSqlFeature,
273 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ExpressionIndexUnsupportedFunction });
274 SQL_FEATURE_HAVING = 67 => QueryUnsupportedSqlFeature,
275 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Having });
276 SQL_FEATURE_INSERT = 68 => QueryUnsupportedSqlFeature,
277 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Insert });
278 SQL_FEATURE_JOIN = 69 => QueryUnsupportedSqlFeature,
279 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Join });
280 SQL_FEATURE_LIKE_PATTERN_BEYOND_TRAILING_PREFIX = 70 => QueryUnsupportedSqlFeature,
281 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::LikePatternBeyondTrailingPrefix });
282 SQL_FEATURE_LOWER_FIELD_PREDICATE_UNSUPPORTED = 71 => QueryUnsupportedSqlFeature,
283 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::LowerFieldPredicateUnsupported });
284 SQL_FEATURE_MULTI_STATEMENT_SQL = 72 => QueryUnsupportedSqlFeature,
285 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::MultiStatementSql });
286 SQL_FEATURE_NESTED_AGGREGATE_INPUT = 73 => QueryUnsupportedSqlFeature,
287 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NestedAggregateInput });
288 SQL_FEATURE_NESTED_PROJECTION_FUNCTION_IN_ARITHMETIC = 74 => QueryUnsupportedSqlFeature,
289 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NestedProjectionFunctionInArithmetic });
290 SQL_FEATURE_ORDER_BY_UNSUPPORTED_FORM = 75 => QueryUnsupportedSqlFeature,
291 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::OrderByUnsupportedForm });
292 SQL_FEATURE_OTHER = 76 => QueryUnsupportedSqlFeature,
293 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Other });
294 SQL_FEATURE_PARAMETER_BINDING = 77 => QueryUnsupportedSqlFeature,
295 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ParameterBinding });
296 SQL_FEATURE_PARAMETERIZED_SCHEMA_VERSION = 78 => QueryUnsupportedSqlFeature,
297 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ParameterizedSchemaVersion });
298 SQL_FEATURE_PREDICATE_STARTS_WITH_FIRST_ARGUMENT = 79 => QueryUnsupportedSqlFeature,
299 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::PredicateStartsWithFirstArgument });
300 SQL_FEATURE_QUOTED_IDENTIFIERS = 80 => QueryUnsupportedSqlFeature,
301 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::QuotedIdentifiers });
302 SQL_FEATURE_RETURNING_UNSUPPORTED_SHAPE = 81 => QueryUnsupportedSqlFeature,
303 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ReturningUnsupportedShape });
304 SQL_FEATURE_SCALAR_FUNCTION_EXPRESSION_POSITION = 82 => QueryUnsupportedSqlFeature,
305 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ScalarFunctionExpressionPosition });
306 SQL_FEATURE_SCALE_TAKING_NUMERIC_FUNCTION_EXPRESSION_POSITION = 83 => QueryUnsupportedSqlFeature,
307 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ScaleTakingNumericFunctionExpressionPosition });
308 SQL_FEATURE_SEARCHED_CASE_GROUPED_ORDER_BY = 84 => QueryUnsupportedSqlFeature,
309 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SearchedCaseGroupedOrderBy });
310 SQL_FEATURE_SHOW_COLUMNS_MODIFIERS = 85 => QueryUnsupportedSqlFeature,
311 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowColumnsModifiers });
312 SQL_FEATURE_SHOW_ENTITIES_MODIFIERS = 86 => QueryUnsupportedSqlFeature,
313 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowEntitiesModifiers });
314 SQL_FEATURE_SHOW_INDEXES_MODIFIERS = 87 => QueryUnsupportedSqlFeature,
315 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowIndexesModifiers });
316 SQL_FEATURE_SHOW_MEMORY_MODIFIERS = 88 => QueryUnsupportedSqlFeature,
317 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowMemoryModifiers });
318 SQL_FEATURE_SHOW_STORES_MODIFIERS = 89 => QueryUnsupportedSqlFeature,
319 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowStoresModifiers });
320 SQL_FEATURE_SHOW_UNSUPPORTED_COMMAND = 90 => QueryUnsupportedSqlFeature,
321 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowUnsupportedCommand });
322 SQL_FEATURE_SIMPLE_CASE_EXPRESSION = 91 => QueryUnsupportedSqlFeature,
323 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SimpleCaseExpression });
324 SQL_FEATURE_STANDALONE_LITERAL_PROJECTION_ITEM = 92 => QueryUnsupportedSqlFeature,
325 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::StandaloneLiteralProjectionItem });
326 SQL_FEATURE_SUPPORTED_GROUPED_ORDER_BY_EXPRESSION_FAMILY = 93 => QueryUnsupportedSqlFeature,
327 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SupportedGroupedOrderByExpressionFamily });
328 SQL_FEATURE_SUPPORTED_ORDER_BY_EXPRESSION_FAMILY = 94 => QueryUnsupportedSqlFeature,
329 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SupportedOrderByExpressionFamily });
330 SQL_FEATURE_UNION_INTERSECT_EXCEPT = 95 => QueryUnsupportedSqlFeature,
331 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UnionIntersectExcept });
332 SQL_FEATURE_UNSUPPORTED_FUNCTION_NAMESPACE = 96 => QueryUnsupportedSqlFeature,
333 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UnsupportedFunctionNamespace });
334 SQL_FEATURE_UPDATE = 97 => QueryUnsupportedSqlFeature,
335 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Update });
336 SQL_FEATURE_UPPER_FIELD_PREDICATE_UNSUPPORTED = 98 => QueryUnsupportedSqlFeature,
337 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UpperFieldPredicateUnsupported });
338 SQL_FEATURE_WINDOW_FUNCTION = 99 => QueryUnsupportedSqlFeature,
339 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::WindowFunction });
340 SQL_FEATURE_WITH = 100 => QueryUnsupportedSqlFeature,
341 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::With });
342 SQL_FEATURE_NUMERIC_SCALE_FUNCTION_ARGUMENTS = 101 => QueryUnsupportedSqlFeature,
343 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NumericScaleFunctionArguments });
344 SQL_FEATURE_ORDER_BY_FIELD_NOT_ORDERABLE = 102 => QueryUnsupportedSqlFeature,
345 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::OrderByFieldNotOrderable });
346
347 SQL_SURFACE_QUERY_REJECTS_INSERT = 103 => QuerySqlSurfaceMismatch,
348 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsInsert });
349 SQL_SURFACE_QUERY_REJECTS_UPDATE = 104 => QuerySqlSurfaceMismatch,
350 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsUpdate });
351 SQL_SURFACE_QUERY_REJECTS_DELETE = 105 => QuerySqlSurfaceMismatch,
352 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsDelete });
353 SQL_SURFACE_UPDATE_REJECTS_SELECT = 106 => QuerySqlSurfaceMismatch,
354 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsSelect });
355 SQL_SURFACE_UPDATE_REJECTS_EXPLAIN = 107 => QuerySqlSurfaceMismatch,
356 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsExplain });
357 SQL_SURFACE_UPDATE_REJECTS_DESCRIBE = 108 => QuerySqlSurfaceMismatch,
358 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsDescribe });
359 SQL_SURFACE_UPDATE_REJECTS_SHOW_INDEXES = 109 => QuerySqlSurfaceMismatch,
360 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowIndexes });
361 SQL_SURFACE_UPDATE_REJECTS_SHOW_COLUMNS = 110 => QuerySqlSurfaceMismatch,
362 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowColumns });
363 SQL_SURFACE_UPDATE_REJECTS_SHOW_ENTITIES = 111 => QuerySqlSurfaceMismatch,
364 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowEntities });
365 SQL_SURFACE_UPDATE_REJECTS_SHOW_STORES = 112 => QuerySqlSurfaceMismatch,
366 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowStores });
367 SQL_SURFACE_UPDATE_REJECTS_SHOW_MEMORY = 113 => QuerySqlSurfaceMismatch,
368 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowMemory });
369
370 SCHEMA_DDL_MISSING_EXPECTED_SCHEMA_VERSION = 114 => SchemaDdlAdmission,
371 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::MissingExpectedSchemaVersion });
372 SCHEMA_DDL_MISSING_NEXT_SCHEMA_VERSION = 115 => SchemaDdlAdmission,
373 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::MissingNextSchemaVersion });
374 SCHEMA_DDL_STALE_EXPECTED_SCHEMA_VERSION = 116 => SchemaDdlAdmission,
375 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::StaleExpectedSchemaVersion });
376 SCHEMA_DDL_INVALID_EXPECTED_SCHEMA_VERSION = 117 => SchemaDdlAdmission,
377 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidExpectedSchemaVersion });
378 SCHEMA_DDL_INVALID_NEXT_SCHEMA_VERSION = 118 => SchemaDdlAdmission,
379 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidNextSchemaVersion });
380 SCHEMA_DDL_ACCEPTED_SCHEMA_CHANGE_WITHOUT_VERSION_BUMP = 119 => SchemaDdlAdmission,
381 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::AcceptedSchemaChangeWithoutVersionBump });
382 SCHEMA_DDL_EMPTY_VERSION_BUMP = 120 => SchemaDdlAdmission,
383 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::EmptyVersionBump });
384 SCHEMA_DDL_VERSION_GAP = 121 => SchemaDdlAdmission,
385 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::VersionGap });
386 SCHEMA_DDL_VERSION_ROLLBACK = 122 => SchemaDdlAdmission,
387 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::VersionRollback });
388 SCHEMA_DDL_FINGERPRINT_METHOD_MISMATCH = 123 => SchemaDdlAdmission,
389 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::FingerprintMethodMismatch });
390 SCHEMA_DDL_UNSUPPORTED_TRANSITION_CLASS = 124 => SchemaDdlAdmission,
391 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::UnsupportedTransitionClass });
392 SCHEMA_DDL_PHYSICAL_RUNNER_MISSING = 125 => SchemaDdlAdmission,
393 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::PhysicalRunnerMissing });
394 SCHEMA_DDL_VALIDATION_FAILED = 126 => SchemaDdlAdmission,
395 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::ValidationFailed });
396 SCHEMA_DDL_PUBLICATION_RACE_LOST = 127 => SchemaDdlAdmission,
397 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::PublicationRaceLost });
398 SCHEMA_DDL_INVALID_ADD_COLUMN_DEFAULT = 128 => SchemaDdlAdmission,
399 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidAddColumnDefault });
400 SCHEMA_DDL_INVALID_ALTER_COLUMN_DEFAULT = 129 => SchemaDdlAdmission,
401 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidAlterColumnDefault });
402 SCHEMA_DDL_GENERATED_INDEX_DROP_REJECTED = 130 => SchemaDdlAdmission,
403 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedIndexDropRejected });
404 SCHEMA_DDL_REQUIRED_DROP_DEFAULT_UNSUPPORTED = 131 => SchemaDdlAdmission,
405 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::RequiredDropDefaultUnsupported });
406 SCHEMA_DDL_GENERATED_FIELD_DEFAULT_CHANGE_REJECTED = 132 => SchemaDdlAdmission,
407 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedFieldDefaultChangeRejected });
408 SCHEMA_DDL_GENERATED_FIELD_NULLABILITY_CHANGE_REJECTED = 133 => SchemaDdlAdmission,
409 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedFieldNullabilityChangeRejected });
410 SCHEMA_DDL_SET_NOT_NULL_VALIDATION_FAILED = 134 => SchemaDdlAdmission,
411 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::SetNotNullValidationFailed });
412
413 QUERY_SQL_WRITE_BOUNDARY = 135 => QuerySqlWriteBoundary;
414 SQL_WRITE_PRIMARY_KEY_LITERAL_SHAPE = 136 => QuerySqlWriteBoundary,
415 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralShape });
416 SQL_WRITE_PRIMARY_KEY_LITERAL_INCOMPATIBLE = 137 => QuerySqlWriteBoundary,
417 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralIncompatible });
418 SQL_WRITE_MISSING_PRIMARY_KEY = 138 => QuerySqlWriteBoundary,
419 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingPrimaryKey });
420 SQL_WRITE_MISSING_REQUIRED_FIELDS = 139 => QuerySqlWriteBoundary,
421 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingRequiredFields });
422 SQL_WRITE_EXPLICIT_MANAGED_FIELD = 140 => QuerySqlWriteBoundary,
423 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitManagedField });
424 SQL_WRITE_EXPLICIT_GENERATED_FIELD = 141 => QuerySqlWriteBoundary,
425 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitGeneratedField });
426 SQL_WRITE_INSERT_SELECT_REQUIRES_SCALAR = 142 => QuerySqlWriteBoundary,
427 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectRequiresScalar });
428 SQL_WRITE_INSERT_SELECT_AGGREGATE_PROJECTION = 143 => QuerySqlWriteBoundary,
429 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectAggregateProjection });
430 SQL_WRITE_INSERT_SELECT_WIDTH_MISMATCH = 144 => QuerySqlWriteBoundary,
431 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectWidthMismatch });
432 SQL_WRITE_UPDATE_PRIMARY_KEY_MUTATION = 145 => QuerySqlWriteBoundary,
433 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdatePrimaryKeyMutation });
434 SQL_WRITE_INVALID_FIELD_LITERAL = 146 => QuerySqlWriteBoundary,
435 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InvalidFieldLiteral });
436 SQL_WRITE_UNKNOWN_RETURNING_FIELD = 147 => QuerySqlWriteBoundary,
437 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UnknownReturningField });
438 SQL_WRITE_DUPLICATE_RETURNING_FIELD = 148 => QuerySqlWriteBoundary,
439 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::DuplicateReturningField });
440 SQL_WRITE_UPDATE_MISSING_WHERE_PREDICATE = 149 => QuerySqlWriteBoundary,
441 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdateMissingWherePredicate });
442 SQL_WRITE_ORDER_BY_UNSUPPORTED_SHAPE = 150 => QuerySqlWriteBoundary,
443 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::WriteOrderByUnsupportedShape });
444
445 QUERY_UNSUPPORTED_PROJECTION = 151 => QueryUnsupportedProjection;
446 QUERY_PROJECTION_NUMERIC_LITERAL_REQUIRED = 152 => QueryUnsupportedProjection,
447 detail(QueryProjection { reason: QueryProjectionCode::NumericLiteralRequired });
448 QUERY_PROJECTION_NUMERIC_SCALE_ARGUMENTS = 153 => QueryUnsupportedProjection,
449 detail(QueryProjection { reason: QueryProjectionCode::NumericScaleArguments });
450 QUERY_PROJECTION_NESTED_FIELD_PATH_PREVIEW = 154 => QueryUnsupportedProjection,
451 detail(QueryProjection { reason: QueryProjectionCode::NestedFieldPathPreview });
452 QUERY_PROJECTION_CASE_CONDITION_BOOLEAN_REQUIRED = 155 => QueryUnsupportedProjection,
453 detail(QueryProjection { reason: QueryProjectionCode::CaseConditionBooleanRequired });
454 QUERY_PROJECTION_NUMERIC_INPUT_REQUIRED = 156 => QueryUnsupportedProjection,
455 detail(QueryProjection { reason: QueryProjectionCode::NumericInputRequired });
456 QUERY_PROJECTION_TEXT_OR_BLOB_INPUT_REQUIRED = 157 => QueryUnsupportedProjection,
457 detail(QueryProjection { reason: QueryProjectionCode::TextOrBlobInputRequired });
458 QUERY_PROJECTION_TEXT_INPUT_REQUIRED = 158 => QueryUnsupportedProjection,
459 detail(QueryProjection { reason: QueryProjectionCode::TextInputRequired });
460 QUERY_PROJECTION_TEXT_OR_NULL_ARGUMENT_REQUIRED = 159 => QueryUnsupportedProjection,
461 detail(QueryProjection { reason: QueryProjectionCode::TextOrNullArgumentRequired });
462 QUERY_PROJECTION_INTEGER_OR_NULL_ARGUMENT_REQUIRED = 160 => QueryUnsupportedProjection,
463 detail(QueryProjection { reason: QueryProjectionCode::IntegerOrNullArgumentRequired });
464 QUERY_PROJECTION_UNARY_OPERAND_INCOMPATIBLE = 161 => QueryUnsupportedProjection,
465 detail(QueryProjection { reason: QueryProjectionCode::UnaryOperandIncompatible });
466 QUERY_PROJECTION_BINARY_OPERANDS_INCOMPATIBLE = 162 => QueryUnsupportedProjection,
467 detail(QueryProjection { reason: QueryProjectionCode::BinaryOperandsIncompatible });
468
469 QUERY_RESULT_SHAPE_MISMATCH = 163 => QueryResultShapeMismatch;
470 QUERY_RESULT_EXPECTED_ROWS = 164 => QueryResultShapeMismatch,
471 detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedRows });
472 QUERY_RESULT_EXPECTED_GROUPED = 165 => QueryResultShapeMismatch,
473 detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedGroupedRows });
474
475 SQL_LOWERING_ENTITY_MISMATCH = 166 => QueryUnsupportedSqlFeature,
476 detail(SqlLowering { reason: SqlLoweringCode::EntityMismatch });
477 SQL_LOWERING_SELECT_PROJECTION_SHAPE = 167 => QueryUnsupportedSqlFeature,
478 detail(SqlLowering { reason: SqlLoweringCode::SelectProjectionShape });
479 SQL_LOWERING_SELECT_DISTINCT = 168 => QueryUnsupportedSqlFeature,
480 detail(SqlLowering { reason: SqlLoweringCode::SelectDistinct });
481 SQL_LOWERING_DISTINCT_ORDER_BY_PROJECTION = 169 => QueryUnsupportedSqlFeature,
482 detail(SqlLowering { reason: SqlLoweringCode::DistinctOrderByProjection });
483 SQL_LOWERING_GLOBAL_AGGREGATE_PROJECTION = 170 => QueryUnsupportedSqlFeature,
484 detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateProjection });
485 SQL_LOWERING_GLOBAL_AGGREGATE_GROUP_BY = 171 => QueryUnsupportedSqlFeature,
486 detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateGroupBy });
487 SQL_LOWERING_SELECT_GROUP_BY_SHAPE = 172 => QueryUnsupportedSqlFeature,
488 detail(SqlLowering { reason: SqlLoweringCode::SelectGroupByShape });
489 SQL_LOWERING_GROUPED_PROJECTION_EXPLICIT_LIST_REQUIRED = 173 => QueryUnsupportedSqlFeature,
490 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionExplicitListRequired });
491 SQL_LOWERING_GROUPED_PROJECTION_AGGREGATE_REQUIRED = 174 => QueryUnsupportedSqlFeature,
492 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionAggregateRequired });
493 SQL_LOWERING_GROUPED_PROJECTION_NON_GROUP_FIELD = 175 => QueryUnsupportedSqlFeature,
494 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionNonGroupField });
495 SQL_LOWERING_GROUPED_PROJECTION_SCALAR_AFTER_AGGREGATE = 176 => QueryUnsupportedSqlFeature,
496 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionScalarAfterAggregate });
497 SQL_LOWERING_HAVING_REQUIRES_GROUP_BY = 177 => QueryUnsupportedSqlFeature,
498 detail(SqlLowering { reason: SqlLoweringCode::HavingRequiresGroupBy });
499 SQL_LOWERING_SELECT_HAVING_SHAPE = 178 => QueryUnsupportedSqlFeature,
500 detail(SqlLowering { reason: SqlLoweringCode::SelectHavingShape });
501 SQL_LOWERING_AGGREGATE_INPUT_EXPRESSIONS = 179 => QueryUnsupportedSqlFeature,
502 detail(SqlLowering { reason: SqlLoweringCode::AggregateInputExpressions });
503 SQL_LOWERING_WHERE_EXPRESSION_SHAPE = 180 => QueryUnsupportedSqlFeature,
504 detail(SqlLowering { reason: SqlLoweringCode::WhereExpressionShape });
505 SQL_LOWERING_PARAMETER_PLACEMENT = 181 => QueryUnsupportedSqlFeature,
506 detail(SqlLowering { reason: SqlLoweringCode::ParameterPlacement });
507 SQL_LOWERING_SQL_DDL_EXECUTION_UNSUPPORTED = 182 => QueryUnsupportedSqlFeature,
508 detail(SqlLowering { reason: SqlLoweringCode::SqlDdlExecutionUnsupported });
509
510 SQL_WRITE_RETURNING_RESPONSE_TOO_LARGE = 183 => QuerySqlWriteBoundary,
511 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningResponseTooLarge });
512 SQL_WRITE_RETURNING_ROWS_TOO_MANY = 184 => QuerySqlWriteBoundary,
513 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningRowsTooMany });
514 RUNTIME_BOUNDARY_SQL_INTROSPECTION_DISABLED = 185 => RuntimeUnsupported,
515 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlIntrospectionDisabled });
516}