Skip to main content

icydb_diagnostic_code/
registry.rs

1//! Module: registry
2//!
3//! Responsibility: single public diagnostic-code registry.
4//! Does not own: diagnostic prose or runtime error construction.
5//! Boundary: generates numeric constants and reconstruction from one table.
6
7use 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            /// Recover a known public error code from its raw wire value.
27            #[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            /// Return whether this error code is in the public registry.
38            #[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            /// Collapse a rich diagnostic into one public leaf code.
47            #[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            /// Return the broad diagnostic reason represented by this public code.
68            #[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            /// Return the diagnostic class represented by this public code.
79            #[must_use]
80            pub const fn class(self) -> ErrorClass {
81                self.diagnostic_code().class()
82            }
83
84            /// Reconstruct rich diagnostic detail for host-side rendering, when known.
85            #[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            /// Reconstruct a rich diagnostic payload for host-side rendering.
100            #[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            /// Return the broad diagnostic reason required by this detail payload.
108            #[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
146// This table is the public numeric registry. Raw values are wire-significant;
147// keep them contiguous unless a gap is represented by an explicit reservation.
148define_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_MUTATION_REJECTS_SELECT = 100 => QuerySqlSurfaceMismatch,
342        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsSelect });
343    SQL_SURFACE_MUTATION_REJECTS_EXPLAIN = 101 => QuerySqlSurfaceMismatch,
344        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsExplain });
345    SQL_SURFACE_MUTATION_REJECTS_DESCRIBE = 102 => QuerySqlSurfaceMismatch,
346        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsDescribe });
347    SQL_SURFACE_MUTATION_REJECTS_SHOW_INDEXES = 103 => QuerySqlSurfaceMismatch,
348        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowIndexes });
349    SQL_SURFACE_MUTATION_REJECTS_SHOW_COLUMNS = 104 => QuerySqlSurfaceMismatch,
350        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowColumns });
351    SQL_SURFACE_MUTATION_REJECTS_SHOW_ENTITIES = 105 => QuerySqlSurfaceMismatch,
352        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowEntities });
353    SQL_SURFACE_MUTATION_REJECTS_SHOW_STORES = 106 => QuerySqlSurfaceMismatch,
354        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowStores });
355    SQL_SURFACE_MUTATION_REJECTS_SHOW_MEMORY = 107 => QuerySqlSurfaceMismatch,
356        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowMemory });
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_REWRITE_REQUIRES_MIGRATION = 125 => SchemaDdlAdmission,
393        detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::SchemaRewriteRequiresMigration });
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    SQL_FEATURE_SHOW_CONSTRAINTS_MODIFIERS = 128 => QueryUnsupportedSqlFeature,
399        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::ShowConstraintsModifiers });
400    QUERY_SQL_WRITE_BOUNDARY = 129 => QuerySqlWriteBoundary;
401    SQL_WRITE_PRIMARY_KEY_LITERAL_SHAPE = 130 => QuerySqlWriteBoundary,
402        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralShape });
403    SQL_WRITE_PRIMARY_KEY_LITERAL_INCOMPATIBLE = 131 => QuerySqlWriteBoundary,
404        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::PrimaryKeyLiteralIncompatible });
405    SQL_WRITE_MISSING_PRIMARY_KEY = 132 => QuerySqlWriteBoundary,
406        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingPrimaryKey });
407    SQL_WRITE_MISSING_REQUIRED_FIELDS = 133 => QuerySqlWriteBoundary,
408        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::MissingRequiredFields });
409    SQL_WRITE_EXPLICIT_MANAGED_FIELD = 134 => QuerySqlWriteBoundary,
410        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitManagedField });
411    SQL_WRITE_EXPLICIT_GENERATED_FIELD = 135 => QuerySqlWriteBoundary,
412        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExplicitGeneratedField });
413    SQL_WRITE_INSERT_SELECT_REQUIRES_SCALAR = 136 => QuerySqlWriteBoundary,
414        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectRequiresScalar });
415    SQL_WRITE_INSERT_SELECT_AGGREGATE_PROJECTION = 137 => QuerySqlWriteBoundary,
416        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectAggregateProjection });
417    SQL_WRITE_INSERT_SELECT_WIDTH_MISMATCH = 138 => QuerySqlWriteBoundary,
418        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertSelectWidthMismatch });
419    SQL_WRITE_UPDATE_PRIMARY_KEY_MUTATION = 139 => QuerySqlWriteBoundary,
420        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdatePrimaryKeyMutation });
421    SQL_WRITE_INVALID_FIELD_LITERAL = 140 => QuerySqlWriteBoundary,
422        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InvalidFieldLiteral });
423    SQL_WRITE_UNKNOWN_RETURNING_FIELD = 141 => QuerySqlWriteBoundary,
424        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UnknownReturningField });
425    SQL_WRITE_DUPLICATE_RETURNING_FIELD = 142 => QuerySqlWriteBoundary,
426        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::DuplicateReturningField });
427    SQL_WRITE_UPDATE_MISSING_WHERE_PREDICATE = 143 => QuerySqlWriteBoundary,
428        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdateMissingWherePredicate });
429    SQL_WRITE_ORDER_BY_UNSUPPORTED_SHAPE = 144 => QuerySqlWriteBoundary,
430        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::WriteOrderByUnsupportedShape });
431
432    QUERY_UNSUPPORTED_PROJECTION = 145 => QueryUnsupportedProjection;
433    QUERY_PROJECTION_NUMERIC_LITERAL_REQUIRED = 146 => QueryUnsupportedProjection,
434        detail(QueryProjection { reason: QueryProjectionCode::NumericLiteralRequired });
435    QUERY_PROJECTION_NUMERIC_SCALE_ARGUMENTS = 147 => QueryUnsupportedProjection,
436        detail(QueryProjection { reason: QueryProjectionCode::NumericScaleArguments });
437    QUERY_PROJECTION_NESTED_FIELD_PATH_PREVIEW = 148 => QueryUnsupportedProjection,
438        detail(QueryProjection { reason: QueryProjectionCode::NestedFieldPathPreview });
439    QUERY_PROJECTION_CASE_CONDITION_BOOLEAN_REQUIRED = 149 => QueryUnsupportedProjection,
440        detail(QueryProjection { reason: QueryProjectionCode::CaseConditionBooleanRequired });
441    QUERY_PROJECTION_NUMERIC_INPUT_REQUIRED = 150 => QueryUnsupportedProjection,
442        detail(QueryProjection { reason: QueryProjectionCode::NumericInputRequired });
443    QUERY_PROJECTION_TEXT_OR_BLOB_INPUT_REQUIRED = 151 => QueryUnsupportedProjection,
444        detail(QueryProjection { reason: QueryProjectionCode::TextOrBlobInputRequired });
445    QUERY_PROJECTION_TEXT_INPUT_REQUIRED = 152 => QueryUnsupportedProjection,
446        detail(QueryProjection { reason: QueryProjectionCode::TextInputRequired });
447    QUERY_PROJECTION_TEXT_OR_NULL_ARGUMENT_REQUIRED = 153 => QueryUnsupportedProjection,
448        detail(QueryProjection { reason: QueryProjectionCode::TextOrNullArgumentRequired });
449    QUERY_PROJECTION_INTEGER_OR_NULL_ARGUMENT_REQUIRED = 154 => QueryUnsupportedProjection,
450        detail(QueryProjection { reason: QueryProjectionCode::IntegerOrNullArgumentRequired });
451    QUERY_PROJECTION_UNARY_OPERAND_INCOMPATIBLE = 155 => QueryUnsupportedProjection,
452        detail(QueryProjection { reason: QueryProjectionCode::UnaryOperandIncompatible });
453    QUERY_PROJECTION_BINARY_OPERANDS_INCOMPATIBLE = 156 => QueryUnsupportedProjection,
454        detail(QueryProjection { reason: QueryProjectionCode::BinaryOperandsIncompatible });
455
456    QUERY_RESULT_SHAPE_MISMATCH = 157 => QueryResultShapeMismatch;
457    QUERY_RESULT_EXPECTED_ROWS = 158 => QueryResultShapeMismatch,
458        detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedRows });
459    QUERY_RESULT_EXPECTED_GROUPED = 159 => QueryResultShapeMismatch,
460        detail(QueryResultShape { reason: QueryResultShapeCode::ExpectedGroupedRows });
461
462    SQL_LOWERING_ENTITY_MISMATCH = 160 => QueryUnsupportedSqlFeature,
463        detail(SqlLowering { reason: SqlLoweringCode::EntityMismatch });
464    SQL_LOWERING_SELECT_PROJECTION_SHAPE = 161 => QueryUnsupportedSqlFeature,
465        detail(SqlLowering { reason: SqlLoweringCode::SelectProjectionShape });
466    SQL_LOWERING_SELECT_DISTINCT = 162 => QueryUnsupportedSqlFeature,
467        detail(SqlLowering { reason: SqlLoweringCode::SelectDistinct });
468    SQL_LOWERING_DISTINCT_ORDER_BY_PROJECTION = 163 => QueryUnsupportedSqlFeature,
469        detail(SqlLowering { reason: SqlLoweringCode::DistinctOrderByProjection });
470    SQL_LOWERING_GLOBAL_AGGREGATE_PROJECTION = 164 => QueryUnsupportedSqlFeature,
471        detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateProjection });
472    SQL_LOWERING_GLOBAL_AGGREGATE_GROUP_BY = 165 => QueryUnsupportedSqlFeature,
473        detail(SqlLowering { reason: SqlLoweringCode::GlobalAggregateGroupBy });
474    SQL_LOWERING_SELECT_GROUP_BY_SHAPE = 166 => QueryUnsupportedSqlFeature,
475        detail(SqlLowering { reason: SqlLoweringCode::SelectGroupByShape });
476    SQL_LOWERING_GROUPED_PROJECTION_EXPLICIT_LIST_REQUIRED = 167 => QueryUnsupportedSqlFeature,
477        detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionExplicitListRequired });
478    SQL_LOWERING_GROUPED_PROJECTION_AGGREGATE_REQUIRED = 168 => QueryUnsupportedSqlFeature,
479        detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionAggregateRequired });
480    SQL_LOWERING_GROUPED_PROJECTION_NON_GROUP_FIELD = 169 => QueryUnsupportedSqlFeature,
481        detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionNonGroupField });
482    SQL_LOWERING_GROUPED_PROJECTION_SCALAR_AFTER_AGGREGATE = 170 => QueryUnsupportedSqlFeature,
483        detail(SqlLowering { reason: SqlLoweringCode::GroupedProjectionScalarAfterAggregate });
484    SQL_LOWERING_HAVING_REQUIRES_GROUP_BY = 171 => QueryUnsupportedSqlFeature,
485        detail(SqlLowering { reason: SqlLoweringCode::HavingRequiresGroupBy });
486    SQL_LOWERING_SELECT_HAVING_SHAPE = 172 => QueryUnsupportedSqlFeature,
487        detail(SqlLowering { reason: SqlLoweringCode::SelectHavingShape });
488    SQL_LOWERING_AGGREGATE_INPUT_EXPRESSIONS = 173 => QueryUnsupportedSqlFeature,
489        detail(SqlLowering { reason: SqlLoweringCode::AggregateInputExpressions });
490    SQL_LOWERING_WHERE_EXPRESSION_SHAPE = 174 => QueryUnsupportedSqlFeature,
491        detail(SqlLowering { reason: SqlLoweringCode::WhereExpressionShape });
492    SQL_LOWERING_PARAMETER_PLACEMENT = 175 => QueryUnsupportedSqlFeature,
493        detail(SqlLowering { reason: SqlLoweringCode::ParameterPlacement });
494    SQL_LOWERING_SQL_DDL_EXECUTION_UNSUPPORTED = 176 => QueryUnsupportedSqlFeature,
495        detail(SqlLowering { reason: SqlLoweringCode::SqlDdlExecutionUnsupported });
496
497    SQL_WRITE_RETURNING_RESPONSE_TOO_LARGE = 177 => QuerySqlWriteBoundary,
498        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningResponseTooLarge });
499    SQL_WRITE_RETURNING_ROWS_TOO_MANY = 178 => QuerySqlWriteBoundary,
500        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ReturningRowsTooMany });
501    RUNTIME_BOUNDARY_SQL_INTROSPECTION_DISABLED = 179 => RuntimeUnsupported,
502        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::SqlIntrospectionDisabled });
503    SQL_WRITE_STAGED_ROWS_TOO_MANY = 180 => QuerySqlWriteBoundary,
504        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::StagedRowsTooMany });
505
506    QUERY_READ_ADMISSION = 181 => QueryReadAdmission;
507    QUERY_READ_PUBLIC_REQUIRES_LIMIT = 182 => QueryReadAdmission,
508        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PublicQueryRequiresLimit });
509    QUERY_READ_PUBLIC_REQUIRES_INDEX = 183 => QueryReadAdmission,
510        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PublicQueryRequiresIndex });
511    QUERY_READ_UNBOUNDED_FULL_SCAN_REJECTED = 184 => QueryReadAdmission,
512        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::UnboundedFullScanRejected });
513    QUERY_READ_SORT_REQUIRES_MATERIALIZATION = 185 => QueryReadAdmission,
514        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::SortRequiresMaterialization });
515    QUERY_READ_GROUPED_QUERY_REQUIRES_LIMITS = 186 => QueryReadAdmission,
516        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::GroupedQueryRequiresLimits });
517    QUERY_READ_GROUPED_QUERY_EXCEEDS_BUDGET = 187 => QueryReadAdmission,
518        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::GroupedQueryExceedsBudget });
519    QUERY_READ_DIAGNOSTIC_LANE_DOES_NOT_EXECUTE = 188 => QueryReadAdmission,
520        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::DiagnosticLaneDoesNotExecute });
521    QUERY_READ_RETURNED_ROW_BOUND_EXCEEDS_POLICY = 189 => QueryReadAdmission,
522        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::ReturnedRowBoundExceedsPolicy });
523    QUERY_READ_PRIMARY_KEY_INPUT_EXCEEDS_POLICY = 190 => QueryReadAdmission,
524        detail(QueryReadAdmission { reason: QueryReadAdmissionCode::PrimaryKeyInputExceedsPolicy });
525
526    SCHEMA_DDL_ROW_LAYOUT_VERSION_EXHAUSTED = 191 => SchemaDdlAdmission,
527        detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::RowLayoutVersionExhausted });
528    SCHEMA_DDL_TRANSITION_BUDGET_EXCEEDED = 192 => SchemaDdlAdmission,
529        detail(SchemaDdlAdmission { reason: SchemaDdlAdmissionCode::SchemaTransitionBudgetExceeded });
530    SQL_WRITE_INSERT_DEFAULT_REQUIRED_FIELD = 193 => QuerySqlWriteBoundary,
531        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::InsertDefaultRequiredField });
532    SQL_WRITE_UPDATE_DEFAULT_REQUIRED_FIELD = 194 => QuerySqlWriteBoundary,
533        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdateDefaultRequiredField });
534    SQL_WRITE_UPDATE_DEFAULT_DATABASE_OWNED_FIELD = 195 => QuerySqlWriteBoundary,
535        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::UpdateDefaultDatabaseOwnedField });
536    RUNTIME_BOUNDARY_MUTATION_REQUIRED_FIELD_MISSING = 196 => RuntimeUnsupported,
537        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::MutationRequiredFieldMissing });
538    RUNTIME_BOUNDARY_PERSISTED_ROW_LAYOUT_OUTSIDE_ACCEPTED_WINDOW = 197 => RuntimeCorruption,
539        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::PersistedRowLayoutOutsideAcceptedWindow });
540    RUNTIME_BOUNDARY_PERSISTED_ROW_SLOT_COUNT_MISMATCH = 198 => RuntimeCorruption,
541        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::PersistedRowSlotCountMismatch });
542    RUNTIME_BOUNDARY_GENERATED_FIELD_AFTER_DDL_FIELD = 199 => RuntimeUnsupported,
543        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::GeneratedFieldAfterDdlField });
544    SQL_SURFACE_MUTATION_REQUIRES_EXPLICIT_UPDATE_INTENT = 200 => QuerySqlSurfaceMismatch,
545        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRequiresExplicitUpdateIntent });
546    SQL_WRITE_EXACT_UPDATE_ASSERTION_REQUIRED = 201 => QuerySqlWriteBoundary,
547        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExactUpdateAssertionRequired });
548    SQL_WRITE_EXACT_UPDATE_ASSERTION_TOO_HIGH = 202 => QuerySqlWriteBoundary,
549        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExactUpdateAssertionTooHigh });
550    SQL_WRITE_EXACT_UPDATE_AFFECTED_ROWS_EXCEEDED = 203 => QuerySqlWriteBoundary,
551        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExactUpdateAffectedRowsExceeded });
552    SQL_WRITE_EXACT_UPDATE_WINDOW_UNSUPPORTED = 204 => QuerySqlWriteBoundary,
553        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExactUpdateWindowUnsupported });
554    SQL_WRITE_EXACT_UPDATE_SCAN_BUDGET_EXCEEDED = 205 => QuerySqlWriteBoundary,
555        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ExactUpdateScanBudgetExceeded });
556    SQL_WRITE_RESUMABLE_UPDATE_WINDOW_UNSUPPORTED = 206 => QuerySqlWriteBoundary,
557        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateWindowUnsupported });
558    SQL_WRITE_RESUMABLE_UPDATE_RETURNING_UNSUPPORTED = 207 => QuerySqlWriteBoundary,
559        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateReturningUnsupported });
560    SQL_WRITE_RESUMABLE_UPDATE_REQUIRES_JOURNALED_STORE = 208 => QuerySqlWriteBoundary,
561        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateRequiresJournaledStore });
562    SQL_WRITE_RESUMABLE_UPDATE_ASSIGNED_FIELD_HAS_GLOBAL_CONSTRAINT = 209 => QuerySqlWriteBoundary,
563        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateAssignedFieldHasGlobalConstraint });
564    SQL_WRITE_RESUMABLE_UPDATE_SCOPE_DEPENDS_ON_ASSIGNED_FIELD = 210 => QuerySqlWriteBoundary,
565        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateScopeDependsOnAssignedField });
566    SQL_WRITE_RESUMABLE_UPDATE_SCOPE_DEPENDENCY_UNKNOWN = 211 => QuerySqlWriteBoundary,
567        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateScopeDependencyUnknown });
568    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_MALFORMED = 212 => QuerySqlWriteBoundary,
569        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationMalformed });
570    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_TARGET_MISMATCH = 213 => QuerySqlWriteBoundary,
571        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationTargetMismatch });
572    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_SCHEMA_MISMATCH = 214 => QuerySqlWriteBoundary,
573        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationSchemaMismatch });
574    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_SCOPE_MISMATCH = 215 => QuerySqlWriteBoundary,
575        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationScopeMismatch });
576    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_PATCH_MISMATCH = 216 => QuerySqlWriteBoundary,
577        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationPatchMismatch });
578    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_BATCH_POLICY_MISMATCH = 217 => QuerySqlWriteBoundary,
579        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationBatchPolicyMismatch });
580    SQL_WRITE_RESUMABLE_UPDATE_SINGLE_ROW_RESOURCE_EXCEEDED = 218 => QuerySqlWriteBoundary,
581        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateSingleRowResourceExceeded });
582    SQL_WRITE_RESUMABLE_UPDATE_APPLICATION_CALLBACKS_UNSUPPORTED = 219 => QuerySqlWriteBoundary,
583        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateApplicationCallbacksUnsupported });
584    SQL_WRITE_RESUMABLE_UPDATE_MANAGED_FIELD_HAS_GLOBAL_CONSTRAINT = 220 => QuerySqlWriteBoundary,
585        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateManagedFieldHasGlobalConstraint });
586    SQL_WRITE_RESUMABLE_UPDATE_CONTINUATION_OPERATION_MISMATCH = 221 => QuerySqlWriteBoundary,
587        detail(SqlWriteBoundary { boundary: SqlWriteBoundaryCode::ResumableUpdateContinuationOperationMismatch });
588    RUNTIME_BOUNDARY_JOURNAL_MUTATION_REVISION_EXHAUSTED = 222 => RuntimeUnsupported,
589        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::JournalMutationRevisionExhausted });
590    SQL_SURFACE_MUTATION_REJECTS_SHOW_CONSTRAINTS = 223 => QuerySqlSurfaceMismatch,
591        detail(SqlSurfaceMismatch { mismatch: SqlSurfaceMismatchCode::MutationRejectsShowConstraints });
592    RUNTIME_BOUNDARY_CONSTRAINT_VIOLATION = 224 => RuntimeInvariantViolation,
593        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::ConstraintViolation });
594    RUNTIME_BOUNDARY_ACCEPTED_ROW_CONSTRAINT_PROGRAM_CORRUPT = 225 => RuntimeCorruption,
595        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::AcceptedRowConstraintProgramCorrupt });
596    RUNTIME_BOUNDARY_CONSTRAINT_ACTIVATION_WRITE_BLOCKED = 226 => RuntimeConflict,
597        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::ConstraintActivationWriteBlocked });
598    SQL_FEATURE_ALTER_TABLE_ADD_CONSTRAINT_BEYOND_CHECK = 227 => QueryUnsupportedSqlFeature,
599        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddConstraintBeyondCheck });
600    SQL_FEATURE_ALTER_TABLE_ADD_CONSTRAINT_MODIFIERS = 228 => QueryUnsupportedSqlFeature,
601        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableAddConstraintModifiers });
602    SQL_FEATURE_ALTER_TABLE_DROP_CONSTRAINT_IF_EXISTS_SYNTAX = 229 => QueryUnsupportedSqlFeature,
603        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropConstraintIfExistsSyntax });
604    SQL_FEATURE_ALTER_TABLE_DROP_CONSTRAINT_MODIFIERS = 230 => QueryUnsupportedSqlFeature,
605        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableDropConstraintModifiers });
606    SQL_FEATURE_ALTER_TABLE_VALIDATE_BEYOND_CONSTRAINT = 231 => QueryUnsupportedSqlFeature,
607        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableValidateBeyondConstraint });
608    SQL_FEATURE_ALTER_TABLE_VALIDATE_CONSTRAINT_MODIFIERS = 232 => QueryUnsupportedSqlFeature,
609        detail(UnsupportedSqlFeature { feature: SqlFeatureCode::AlterTableValidateConstraintModifiers });
610    RUNTIME_BOUNDARY_GENERATED_CONSTRAINT_ACTIVATION_STALE = 233 => RuntimeConflict,
611        detail(RuntimeBoundary { boundary: RuntimeBoundaryCode::GeneratedConstraintActivationStale });
612}