1use crate::{
8 Diagnostic, DiagnosticCode, DiagnosticDetail, ErrorClass, ErrorCode, ErrorOrigin,
9 QueryErrorKind, QueryProjectionCode, QueryReadAdmissionCode, QueryResultShapeCode,
10 RuntimeBoundaryCode, 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_ROW_PROJECTION_FIELD_NOT_CONFIGURED = 33 => RuntimeUnsupported,
206 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::RowProjectionFieldNotConfigured });
207
208 SQL_FEATURE_AGGREGATE_FILTER_CLAUSE = 34 => QueryUnsupportedSqlFeature,
209 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AggregateFilterClause });
210 SQL_FEATURE_ALTER_STATEMENT_BEYOND_ALTER_TABLE = 35 => QueryUnsupportedSqlFeature,
211 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterStatementBeyondAlterTable });
212 SQL_FEATURE_ALTER_TABLE_ADD_COLUMN_DUPLICATE_DEFAULT = 36 => QueryUnsupportedSqlFeature,
213 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddColumnDuplicateDefault });
214 SQL_FEATURE_ALTER_TABLE_ADD_COLUMN_MODIFIERS = 37 => QueryUnsupportedSqlFeature,
215 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddColumnModifiers });
216 SQL_FEATURE_ALTER_TABLE_ADD_STATEMENT_BEYOND_ADD_COLUMN = 38 => QueryUnsupportedSqlFeature,
217 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddStatementBeyondAddColumn });
218 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_DROP_UNSUPPORTED_ACTION = 39 => QueryUnsupportedSqlFeature,
219 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnDropUnsupportedAction });
220 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_MODIFIERS = 40 => QueryUnsupportedSqlFeature,
221 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnModifiers });
222 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_SET_UNSUPPORTED_ACTION = 41 => QueryUnsupportedSqlFeature,
223 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnSetUnsupportedAction });
224 SQL_FEATURE_ALTER_TABLE_ALTER_COLUMN_UNSUPPORTED_ACTION = 42 => QueryUnsupportedSqlFeature,
225 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterColumnUnsupportedAction });
226 SQL_FEATURE_ALTER_TABLE_ALTER_STATEMENT_BEYOND_ALTER_COLUMN = 43 => QueryUnsupportedSqlFeature,
227 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAlterStatementBeyondAlterColumn });
228 SQL_FEATURE_ALTER_TABLE_DROP_COLUMN_IF_EXISTS_SYNTAX = 44 => QueryUnsupportedSqlFeature,
229 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropColumnIfExistsSyntax });
230 SQL_FEATURE_ALTER_TABLE_DROP_COLUMN_MODIFIERS = 45 => QueryUnsupportedSqlFeature,
231 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropColumnModifiers });
232 SQL_FEATURE_ALTER_TABLE_DROP_STATEMENT_BEYOND_DROP_COLUMN = 46 => QueryUnsupportedSqlFeature,
233 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropStatementBeyondDropColumn });
234 SQL_FEATURE_ALTER_TABLE_RENAME_COLUMN_MISSING_TO = 47 => QueryUnsupportedSqlFeature,
235 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameColumnMissingTo });
236 SQL_FEATURE_ALTER_TABLE_RENAME_COLUMN_MODIFIERS = 48 => QueryUnsupportedSqlFeature,
237 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameColumnModifiers });
238 SQL_FEATURE_ALTER_TABLE_RENAME_STATEMENT_BEYOND_RENAME_COLUMN = 49 => QueryUnsupportedSqlFeature,
239 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableRenameStatementBeyondRenameColumn });
240 SQL_FEATURE_ALTER_TABLE_UNSUPPORTED_OPERATION = 50 => QueryUnsupportedSqlFeature,
241 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableUnsupportedOperation });
242 SQL_FEATURE_COLUMN_ALIAS = 51 => QueryUnsupportedSqlFeature,
243 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ColumnAlias });
244 SQL_FEATURE_CREATE_INDEX_IF_NOT_EXISTS_SYNTAX = 52 => QueryUnsupportedSqlFeature,
245 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexIfNotExistsSyntax });
246 SQL_FEATURE_CREATE_INDEX_KEY_ORDERING_MODIFIERS = 53 => QueryUnsupportedSqlFeature,
247 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexKeyOrderingModifiers });
248 SQL_FEATURE_CREATE_INDEX_MODIFIERS = 54 => QueryUnsupportedSqlFeature,
249 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateIndexModifiers });
250 SQL_FEATURE_CREATE_STATEMENT_BEYOND_CREATE_INDEX = 55 => QueryUnsupportedSqlFeature,
251 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::CreateStatementBeyondCreateIndex });
252 SQL_FEATURE_DESCRIBE_MODIFIER = 56 => QueryUnsupportedSqlFeature,
253 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DescribeModifier });
254 SQL_FEATURE_DDL_SCHEMA_VERSION_DUPLICATE_EXPECTED_CLAUSE = 57 => QueryUnsupportedSqlFeature,
255 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DdlSchemaVersionDuplicateExpectedClause });
256 SQL_FEATURE_DDL_SCHEMA_VERSION_DUPLICATE_SET_CLAUSE = 58 => QueryUnsupportedSqlFeature,
257 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DdlSchemaVersionDuplicateSetClause });
258 SQL_FEATURE_DROP_INDEX_MODIFIERS = 59 => QueryUnsupportedSqlFeature,
259 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropIndexModifiers });
260 SQL_FEATURE_DROP_INDEX_IF_EXISTS_SYNTAX = 60 => QueryUnsupportedSqlFeature,
261 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropIndexIfExistsSyntax });
262 SQL_FEATURE_DROP_STATEMENT_BEYOND_DROP_INDEX = 61 => QueryUnsupportedSqlFeature,
263 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::DropStatementBeyondDropIndex });
264 SQL_FEATURE_EXPRESSION_INDEX_UNSUPPORTED_FUNCTION = 62 => QueryUnsupportedSqlFeature,
265 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ExpressionIndexUnsupportedFunction });
266 SQL_FEATURE_HAVING = 63 => QueryUnsupportedSqlFeature,
267 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Having });
268 SQL_FEATURE_INSERT = 64 => QueryUnsupportedSqlFeature,
269 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Insert });
270 SQL_FEATURE_JOIN = 65 => QueryUnsupportedSqlFeature,
271 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Join });
272 SQL_FEATURE_LIKE_PATTERN_BEYOND_TRAILING_PREFIX = 66 => QueryUnsupportedSqlFeature,
273 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::LikePatternBeyondTrailingPrefix });
274 SQL_FEATURE_LOWER_FIELD_PREDICATE_UNSUPPORTED = 67 => QueryUnsupportedSqlFeature,
275 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::LowerFieldPredicateUnsupported });
276 SQL_FEATURE_MULTI_STATEMENT_SQL = 68 => QueryUnsupportedSqlFeature,
277 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::MultiStatementSql });
278 SQL_FEATURE_NESTED_AGGREGATE_INPUT = 69 => QueryUnsupportedSqlFeature,
279 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NestedAggregateInput });
280 SQL_FEATURE_NESTED_PROJECTION_FUNCTION_IN_ARITHMETIC = 70 => QueryUnsupportedSqlFeature,
281 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NestedProjectionFunctionInArithmetic });
282 SQL_FEATURE_ORDER_BY_UNSUPPORTED_FORM = 71 => QueryUnsupportedSqlFeature,
283 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::OrderByUnsupportedForm });
284 SQL_FEATURE_OTHER = 72 => QueryUnsupportedSqlFeature,
285 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Other });
286 SQL_FEATURE_PREDICATE_STARTS_WITH_FIRST_ARGUMENT = 73 => QueryUnsupportedSqlFeature,
287 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::PredicateStartsWithFirstArgument });
288 SQL_FEATURE_QUOTED_IDENTIFIERS = 74 => QueryUnsupportedSqlFeature,
289 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::QuotedIdentifiers });
290 SQL_FEATURE_RETURNING_UNSUPPORTED_SHAPE = 75 => QueryUnsupportedSqlFeature,
291 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ReturningUnsupportedShape });
292 SQL_FEATURE_SCALAR_FUNCTION_EXPRESSION_POSITION = 76 => QueryUnsupportedSqlFeature,
293 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ScalarFunctionExpressionPosition });
294 SQL_FEATURE_SCALE_TAKING_NUMERIC_FUNCTION_EXPRESSION_POSITION = 77 => QueryUnsupportedSqlFeature,
295 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ScaleTakingNumericFunctionExpressionPosition });
296 SQL_FEATURE_SEARCHED_CASE_GROUPED_ORDER_BY = 78 => QueryUnsupportedSqlFeature,
297 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SearchedCaseGroupedOrderBy });
298 SQL_FEATURE_SHOW_COLUMNS_MODIFIERS = 79 => QueryUnsupportedSqlFeature,
299 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowColumnsModifiers });
300 SQL_FEATURE_SHOW_ENTITIES_MODIFIERS = 80 => QueryUnsupportedSqlFeature,
301 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowEntitiesModifiers });
302 SQL_FEATURE_SHOW_INDEXES_MODIFIERS = 81 => QueryUnsupportedSqlFeature,
303 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowIndexesModifiers });
304 SQL_FEATURE_SHOW_MEMORY_MODIFIERS = 82 => QueryUnsupportedSqlFeature,
305 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowMemoryModifiers });
306 SQL_FEATURE_SHOW_STORES_MODIFIERS = 83 => QueryUnsupportedSqlFeature,
307 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowStoresModifiers });
308 SQL_FEATURE_SHOW_UNSUPPORTED_COMMAND = 84 => QueryUnsupportedSqlFeature,
309 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowUnsupportedCommand });
310 SQL_FEATURE_SIMPLE_CASE_EXPRESSION = 85 => QueryUnsupportedSqlFeature,
311 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SimpleCaseExpression });
312 SQL_FEATURE_STANDALONE_LITERAL_PROJECTION_ITEM = 86 => QueryUnsupportedSqlFeature,
313 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::StandaloneLiteralProjectionItem });
314 SQL_FEATURE_SUPPORTED_GROUPED_ORDER_BY_EXPRESSION_FAMILY = 87 => QueryUnsupportedSqlFeature,
315 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SupportedGroupedOrderByExpressionFamily });
316 SQL_FEATURE_SUPPORTED_ORDER_BY_EXPRESSION_FAMILY = 88 => QueryUnsupportedSqlFeature,
317 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::SupportedOrderByExpressionFamily });
318 SQL_FEATURE_UNION_INTERSECT_EXCEPT = 89 => QueryUnsupportedSqlFeature,
319 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UnionIntersectExcept });
320 SQL_FEATURE_UNSUPPORTED_FUNCTION_NAMESPACE = 90 => QueryUnsupportedSqlFeature,
321 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UnsupportedFunctionNamespace });
322 SQL_FEATURE_UPDATE = 91 => QueryUnsupportedSqlFeature,
323 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::Update });
324 SQL_FEATURE_UPPER_FIELD_PREDICATE_UNSUPPORTED = 92 => QueryUnsupportedSqlFeature,
325 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::UpperFieldPredicateUnsupported });
326 SQL_FEATURE_WINDOW_FUNCTION = 93 => QueryUnsupportedSqlFeature,
327 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::WindowFunction });
328 SQL_FEATURE_WITH = 94 => QueryUnsupportedSqlFeature,
329 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::With });
330 SQL_FEATURE_NUMERIC_SCALE_FUNCTION_ARGUMENTS = 95 => QueryUnsupportedSqlFeature,
331 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::NumericScaleFunctionArguments });
332 SQL_FEATURE_ORDER_BY_FIELD_NOT_ORDERABLE = 96 => QueryUnsupportedSqlFeature,
333 detail(UnsupportedSqlFeature { feature: SqlFeatureCode::OrderByFieldNotOrderable });
334
335 SQL_SURFACE_QUERY_REJECTS_INSERT = 97 => QuerySqlSurfaceMismatch,
336 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsInsert });
337 SQL_SURFACE_QUERY_REJECTS_UPDATE = 98 => QuerySqlSurfaceMismatch,
338 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsUpdate });
339 SQL_SURFACE_QUERY_REJECTS_DELETE = 99 => QuerySqlSurfaceMismatch,
340 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::QueryRejectsDelete });
341 SQL_SURFACE_UPDATE_REJECTS_SELECT = 100 => QuerySqlSurfaceMismatch,
342 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsSelect });
343 SQL_SURFACE_UPDATE_REJECTS_EXPLAIN = 101 => QuerySqlSurfaceMismatch,
344 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsExplain });
345 SQL_SURFACE_UPDATE_REJECTS_DESCRIBE = 102 => QuerySqlSurfaceMismatch,
346 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsDescribe });
347 SQL_SURFACE_UPDATE_REJECTS_SHOW_INDEXES = 103 => QuerySqlSurfaceMismatch,
348 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowIndexes });
349 SQL_SURFACE_UPDATE_REJECTS_SHOW_COLUMNS = 104 => QuerySqlSurfaceMismatch,
350 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowColumns });
351 SQL_SURFACE_UPDATE_REJECTS_SHOW_ENTITIES = 105 => QuerySqlSurfaceMismatch,
352 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowEntities });
353 SQL_SURFACE_UPDATE_REJECTS_SHOW_STORES = 106 => QuerySqlSurfaceMismatch,
354 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowStores });
355 SQL_SURFACE_UPDATE_REJECTS_SHOW_MEMORY = 107 => QuerySqlSurfaceMismatch,
356 detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::UpdateRejectsShowMemory });
357
358 SCHEMA_DDL_MISSING_EXPECTED_SCHEMA_VERSION = 108 => SchemaDdlAdmission,
359 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::MissingExpectedSchemaVersion });
360 SCHEMA_DDL_MISSING_NEXT_SCHEMA_VERSION = 109 => SchemaDdlAdmission,
361 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::MissingNextSchemaVersion });
362 SCHEMA_DDL_STALE_EXPECTED_SCHEMA_VERSION = 110 => SchemaDdlAdmission,
363 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::StaleExpectedSchemaVersion });
364 SCHEMA_DDL_INVALID_EXPECTED_SCHEMA_VERSION = 111 => SchemaDdlAdmission,
365 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidExpectedSchemaVersion });
366 SCHEMA_DDL_INVALID_NEXT_SCHEMA_VERSION = 112 => SchemaDdlAdmission,
367 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidNextSchemaVersion });
368 SCHEMA_DDL_ACCEPTED_SCHEMA_CHANGE_WITHOUT_VERSION_BUMP = 113 => SchemaDdlAdmission,
369 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::AcceptedSchemaChangeWithoutVersionBump });
370 SCHEMA_DDL_EMPTY_VERSION_BUMP = 114 => SchemaDdlAdmission,
371 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::EmptyVersionBump });
372 SCHEMA_DDL_VERSION_GAP = 115 => SchemaDdlAdmission,
373 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::VersionGap });
374 SCHEMA_DDL_VERSION_ROLLBACK = 116 => SchemaDdlAdmission,
375 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::VersionRollback });
376 SCHEMA_DDL_FINGERPRINT_METHOD_MISMATCH = 117 => SchemaDdlAdmission,
377 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::FingerprintMethodMismatch });
378 SCHEMA_DDL_UNSUPPORTED_TRANSITION_CLASS = 118 => SchemaDdlAdmission,
379 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::UnsupportedTransitionClass });
380 SCHEMA_DDL_PHYSICAL_RUNNER_MISSING = 119 => SchemaDdlAdmission,
381 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::PhysicalRunnerMissing });
382 SCHEMA_DDL_VALIDATION_FAILED = 120 => SchemaDdlAdmission,
383 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::ValidationFailed });
384 SCHEMA_DDL_PUBLICATION_RACE_LOST = 121 => SchemaDdlAdmission,
385 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::PublicationRaceLost });
386 SCHEMA_DDL_INVALID_ADD_COLUMN_DEFAULT = 122 => SchemaDdlAdmission,
387 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidAddColumnDefault });
388 SCHEMA_DDL_INVALID_ALTER_COLUMN_DEFAULT = 123 => SchemaDdlAdmission,
389 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::InvalidAlterColumnDefault });
390 SCHEMA_DDL_GENERATED_INDEX_DROP_REJECTED = 124 => SchemaDdlAdmission,
391 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedIndexDropRejected });
392 SCHEMA_DDL_REQUIRED_DROP_DEFAULT_UNSUPPORTED = 125 => SchemaDdlAdmission,
393 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::RequiredDropDefaultUnsupported });
394 SCHEMA_DDL_GENERATED_FIELD_DEFAULT_CHANGE_REJECTED = 126 => SchemaDdlAdmission,
395 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedFieldDefaultChangeRejected });
396 SCHEMA_DDL_GENERATED_FIELD_NULLABILITY_CHANGE_REJECTED = 127 => SchemaDdlAdmission,
397 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::GeneratedFieldNullabilityChangeRejected });
398 SCHEMA_DDL_SET_NOT_NULL_VALIDATION_FAILED = 128 => SchemaDdlAdmission,
399 detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::SetNotNullValidationFailed });
400
401 QUERY_SQL_WRITE_BOUNDARY = 129 => QuerySqlWriteBoundary;
402 SQL_WRITE_PRIMARY_KEY_LITERAL_SHAPE = 130 => QuerySqlWriteBoundary,
403 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralShape });
404 SQL_WRITE_PRIMARY_KEY_LITERAL_INCOMPATIBLE = 131 => QuerySqlWriteBoundary,
405 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralIncompatible });
406 SQL_WRITE_MISSING_PRIMARY_KEY = 132 => QuerySqlWriteBoundary,
407 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingPrimaryKey });
408 SQL_WRITE_MISSING_REQUIRED_FIELDS = 133 => QuerySqlWriteBoundary,
409 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingRequiredFields });
410 SQL_WRITE_EXPLICIT_MANAGED_FIELD = 134 => QuerySqlWriteBoundary,
411 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitManagedField });
412 SQL_WRITE_EXPLICIT_GENERATED_FIELD = 135 => QuerySqlWriteBoundary,
413 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitGeneratedField });
414 SQL_WRITE_INSERT_SELECT_REQUIRES_SCALAR = 136 => QuerySqlWriteBoundary,
415 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectRequiresScalar });
416 SQL_WRITE_INSERT_SELECT_AGGREGATE_PROJECTION = 137 => QuerySqlWriteBoundary,
417 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectAggregateProjection });
418 SQL_WRITE_INSERT_SELECT_WIDTH_MISMATCH = 138 => QuerySqlWriteBoundary,
419 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectWidthMismatch });
420 SQL_WRITE_UPDATE_PRIMARY_KEY_MUTATION = 139 => QuerySqlWriteBoundary,
421 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdatePrimaryKeyMutation });
422 SQL_WRITE_INVALID_FIELD_LITERAL = 140 => QuerySqlWriteBoundary,
423 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InvalidFieldLiteral });
424 SQL_WRITE_UNKNOWN_RETURNING_FIELD = 141 => QuerySqlWriteBoundary,
425 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UnknownReturningField });
426 SQL_WRITE_DUPLICATE_RETURNING_FIELD = 142 => QuerySqlWriteBoundary,
427 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::DuplicateReturningField });
428 SQL_WRITE_UPDATE_MISSING_WHERE_PREDICATE = 143 => QuerySqlWriteBoundary,
429 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdateMissingWherePredicate });
430 SQL_WRITE_ORDER_BY_UNSUPPORTED_SHAPE = 144 => QuerySqlWriteBoundary,
431 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::WriteOrderByUnsupportedShape });
432
433 QUERY_UNSUPPORTED_PROJECTION = 145 => QueryUnsupportedProjection;
434 QUERY_PROJECTION_NUMERIC_LITERAL_REQUIRED = 146 => QueryUnsupportedProjection,
435 detail(QueryProjection { reason: QueryProjectionCode::NumericLiteralRequired });
436 QUERY_PROJECTION_NUMERIC_SCALE_ARGUMENTS = 147 => QueryUnsupportedProjection,
437 detail(QueryProjection { reason: QueryProjectionCode::NumericScaleArguments });
438 QUERY_PROJECTION_NESTED_FIELD_PATH_PREVIEW = 148 => QueryUnsupportedProjection,
439 detail(QueryProjection { reason: QueryProjectionCode::NestedFieldPathPreview });
440 QUERY_PROJECTION_CASE_CONDITION_BOOLEAN_REQUIRED = 149 => QueryUnsupportedProjection,
441 detail(QueryProjection { reason: QueryProjectionCode::CaseConditionBooleanRequired });
442 QUERY_PROJECTION_NUMERIC_INPUT_REQUIRED = 150 => QueryUnsupportedProjection,
443 detail(QueryProjection { reason: QueryProjectionCode::NumericInputRequired });
444 QUERY_PROJECTION_TEXT_OR_BLOB_INPUT_REQUIRED = 151 => QueryUnsupportedProjection,
445 detail(QueryProjection { reason: QueryProjectionCode::TextOrBlobInputRequired });
446 QUERY_PROJECTION_TEXT_INPUT_REQUIRED = 152 => QueryUnsupportedProjection,
447 detail(QueryProjection { reason: QueryProjectionCode::TextInputRequired });
448 QUERY_PROJECTION_TEXT_OR_NULL_ARGUMENT_REQUIRED = 153 => QueryUnsupportedProjection,
449 detail(QueryProjection { reason: QueryProjectionCode::TextOrNullArgumentRequired });
450 QUERY_PROJECTION_INTEGER_OR_NULL_ARGUMENT_REQUIRED = 154 => QueryUnsupportedProjection,
451 detail(QueryProjection { reason: QueryProjectionCode::IntegerOrNullArgumentRequired });
452 QUERY_PROJECTION_UNARY_OPERAND_INCOMPATIBLE = 155 => QueryUnsupportedProjection,
453 detail(QueryProjection { reason: QueryProjectionCode::UnaryOperandIncompatible });
454 QUERY_PROJECTION_BINARY_OPERANDS_INCOMPATIBLE = 156 => QueryUnsupportedProjection,
455 detail(QueryProjection { reason: QueryProjectionCode::BinaryOperandsIncompatible });
456
457 QUERY_RESULT_SHAPE_MISMATCH = 157 => QueryResultShapeMismatch;
458 QUERY_RESULT_EXPECTED_ROWS = 158 => QueryResultShapeMismatch,
459 detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedRows });
460 QUERY_RESULT_EXPECTED_GROUPED = 159 => QueryResultShapeMismatch,
461 detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedGroupedRows });
462
463 SQL_LOWERING_ENTITY_MISMATCH = 160 => QueryUnsupportedSqlFeature,
464 detail(SqlLowering { reason: SqlLoweringCode::EntityMismatch });
465 SQL_LOWERING_SELECT_PROJECTION_SHAPE = 161 => QueryUnsupportedSqlFeature,
466 detail(SqlLowering { reason: SqlLoweringCode::SelectProjectionShape });
467 SQL_LOWERING_SELECT_DISTINCT = 162 => QueryUnsupportedSqlFeature,
468 detail(SqlLowering { reason: SqlLoweringCode::SelectDistinct });
469 SQL_LOWERING_DISTINCT_ORDER_BY_PROJECTION = 163 => QueryUnsupportedSqlFeature,
470 detail(SqlLowering { reason: SqlLoweringCode::DistinctOrderByProjection });
471 SQL_LOWERING_GLOBAL_AGGREGATE_PROJECTION = 164 => QueryUnsupportedSqlFeature,
472 detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateProjection });
473 SQL_LOWERING_GLOBAL_AGGREGATE_GROUP_BY = 165 => QueryUnsupportedSqlFeature,
474 detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateGroupBy });
475 SQL_LOWERING_SELECT_GROUP_BY_SHAPE = 166 => QueryUnsupportedSqlFeature,
476 detail(SqlLowering { reason: SqlLoweringCode::SelectGroupByShape });
477 SQL_LOWERING_GROUPED_PROJECTION_EXPLICIT_LIST_REQUIRED = 167 => QueryUnsupportedSqlFeature,
478 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionExplicitListRequired });
479 SQL_LOWERING_GROUPED_PROJECTION_AGGREGATE_REQUIRED = 168 => QueryUnsupportedSqlFeature,
480 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionAggregateRequired });
481 SQL_LOWERING_GROUPED_PROJECTION_NON_GROUP_FIELD = 169 => QueryUnsupportedSqlFeature,
482 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionNonGroupField });
483 SQL_LOWERING_GROUPED_PROJECTION_SCALAR_AFTER_AGGREGATE = 170 => QueryUnsupportedSqlFeature,
484 detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionScalarAfterAggregate });
485 SQL_LOWERING_HAVING_REQUIRES_GROUP_BY = 171 => QueryUnsupportedSqlFeature,
486 detail(SqlLowering { reason: SqlLoweringCode::HavingRequiresGroupBy });
487 SQL_LOWERING_SELECT_HAVING_SHAPE = 172 => QueryUnsupportedSqlFeature,
488 detail(SqlLowering { reason: SqlLoweringCode::SelectHavingShape });
489 SQL_LOWERING_AGGREGATE_INPUT_EXPRESSIONS = 173 => QueryUnsupportedSqlFeature,
490 detail(SqlLowering { reason: SqlLoweringCode::AggregateInputExpressions });
491 SQL_LOWERING_WHERE_EXPRESSION_SHAPE = 174 => QueryUnsupportedSqlFeature,
492 detail(SqlLowering { reason: SqlLoweringCode::WhereExpressionShape });
493 SQL_LOWERING_PARAMETER_PLACEMENT = 175 => QueryUnsupportedSqlFeature,
494 detail(SqlLowering { reason: SqlLoweringCode::ParameterPlacement });
495 SQL_LOWERING_SQL_DDL_EXECUTION_UNSUPPORTED = 176 => QueryUnsupportedSqlFeature,
496 detail(SqlLowering { reason: SqlLoweringCode::SqlDdlExecutionUnsupported });
497
498 SQL_WRITE_RETURNING_RESPONSE_TOO_LARGE = 177 => QuerySqlWriteBoundary,
499 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningResponseTooLarge });
500 SQL_WRITE_RETURNING_ROWS_TOO_MANY = 178 => QuerySqlWriteBoundary,
501 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningRowsTooMany });
502 RUNTIME_BOUNDARY_SQL_INTROSPECTION_DISABLED = 179 => RuntimeUnsupported,
503 detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlIntrospectionDisabled });
504 SQL_WRITE_STAGED_ROWS_TOO_MANY = 180 => QuerySqlWriteBoundary,
505 detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::StagedRowsTooMany });
506
507 QUERY_READ_ADMISSION = 181 => QueryReadAdmission;
508 QUERY_READ_PUBLIC_REQUIRES_LIMIT = 182 => QueryReadAdmission,
509 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PublicQueryRequiresLimit });
510 QUERY_READ_PUBLIC_REQUIRES_INDEX = 183 => QueryReadAdmission,
511 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PublicQueryRequiresIndex });
512 QUERY_READ_UNBOUNDED_FULL_SCAN_REJECTED = 184 => QueryReadAdmission,
513 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::UnboundedFullScanRejected });
514 QUERY_READ_SORT_REQUIRES_MATERIALIZATION = 185 => QueryReadAdmission,
515 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::SortRequiresMaterialization });
516 QUERY_READ_GROUPED_QUERY_REQUIRES_LIMITS = 186 => QueryReadAdmission,
517 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::GroupedQueryRequiresLimits });
518 QUERY_READ_GROUPED_QUERY_EXCEEDS_BUDGET = 187 => QueryReadAdmission,
519 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::GroupedQueryExceedsBudget });
520 QUERY_READ_DIAGNOSTIC_LANE_DOES_NOT_EXECUTE = 188 => QueryReadAdmission,
521 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::DiagnosticLaneDoesNotExecute });
522 QUERY_READ_RETURNED_ROW_BOUND_EXCEEDS_POLICY = 189 => QueryReadAdmission,
523 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::ReturnedRowBoundExceedsPolicy });
524 QUERY_READ_PRIMARY_KEY_INPUT_EXCEEDS_POLICY = 190 => QueryReadAdmission,
525 detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PrimaryKeyInputExceedsPolicy });
526}