001package gudusoft.gsqlparser.ir.semantic; 002 003/** 004 * Stable identifier for a SemanticIR rejection class. One enum value 005 * per logical reject; multiple throw sites in 006 * {@code SemanticIRBuilder} may share a code when they reject the 007 * same shape from different call sites (e.g. ON/USING/etc. JOIN-side 008 * checks). 009 * 010 * <p>External callers should pattern-match on {@code DiagnosticCode} 011 * rather than parse {@link Diagnostic#getMessage()} substrings. 012 * Message text remains user-visible English and may change without 013 * notice; the enum values are the public contract. 014 * 015 * <p>Slice 67 introduces 181 values, one per row in the slice-67 016 * audit ({@code /tmp/slice67-audit.tsv} at implementation time; 017 * archived in repo history). Subsequent slices may add codes when 018 * new reject sites land; existing codes are not renamed or removed 019 * without a deprecation window. 020 * 021 * <p>Slice 77 adds one WARN-severity code 022 * ({@code RELATION_NOT_FOUND_IN_CATALOG}) emitted by 023 * {@code SqlSemanticAnalyzer.analyze(sql, vendor, Catalog)} when the 024 * supplied DTO catalog is missing a FROM relation referenced by the 025 * resolved IR. It is the first non-ERROR diagnostic; the IR is still 026 * built and {@link Diagnostic#getSeverity()} stays {@code WARN} so 027 * {@code isSuccessful()} continues to return {@code true}. 028 * 029 * <p>Slice 77 deliberately does NOT add a corresponding 030 * {@code COLUMN_NOT_FOUND_IN_CATALOG} code: when a catalog declares 031 * the relation but not a referenced column, the 032 * {@link gudusoft.gsqlparser.resolver2 TSQLResolver2} pipeline already 033 * rejects the build with {@link #COLUMN_BINDING_NON_EXACT} (a NOT_FOUND 034 * status surfaces as that ERROR). Callers needing catalog-miss column 035 * diagnostics can pattern-match on {@code COLUMN_BINDING_NON_EXACT} 036 * when a non-null {@code Catalog} was supplied. A later slice may 037 * lift the column-miss path to a dedicated WARN if customer feedback 038 * shows the ERROR-vs-WARN asymmetry is confusing. 039 * 040 * <p>Slice 78 adds four ERROR-severity codes lifting 041 * {@code INSERT INTO target SELECT ...} into the analyzer pipeline: 042 * {@link #INSERT_SOURCE_NOT_SUPPORTED} (non-subquery sources like 043 * VALUES / DEFAULT VALUES / EXECUTE), {@link #INSERT_MULTI_TABLE_NOT_SUPPORTED} 044 * (Oracle INSERT ALL / INSERT FIRST and Hive multi-insert), 045 * {@link #INSERT_COLUMN_COUNT_MISMATCH} (explicit column list arity does 046 * not match the source SELECT's output count), and 047 * {@link #INSERT_TARGET_MISSING} (defensive — INSERT without a resolvable 048 * target table). DELETE / MERGE / CREATE INDEX / CREATE PROCEDURE etc. 049 * remain rejected via {@link #STATEMENT_KIND_NOT_SUPPORTED}. 050 * 051 * <p>Slice 80 adds nine ERROR-severity codes lifting 052 * {@code UPDATE target SET c = expr [WHERE pred]} into the analyzer 053 * pipeline: {@link #UPDATE_TARGET_MISSING} (defensive), 054 * {@link #UPDATE_CTE_NOT_SUPPORTED} (top-level WITH on UPDATE), 055 * {@link #UPDATE_JOINED_NOT_SUPPORTED} 056 * (FROM / JOIN clause on UPDATE — PG / SQL Server cross-table UPDATE), 057 * {@link #UPDATE_RETURNING_CLAUSE_NOT_SUPPORTED} 058 * (PG / Oracle RETURNING projections), 059 * {@link #UPDATE_OUTPUT_CLAUSE_NOT_SUPPORTED} 060 * (SQL Server OUTPUT clause), 061 * {@link #UPDATE_ORDER_BY_OR_LIMIT_NOT_SUPPORTED} 062 * (MySQL / Couchbase ordering + row-limit on UPDATE), 063 * {@link #UPDATE_NO_SET_CLAUSE} (defensive — also covers Couchbase 064 * UNSET-only updates), {@link #UPDATE_TUPLE_ASSIGNMENT_NOT_SUPPORTED} 065 * (Oracle {@code SET (a, b) = (...)} tuple assignment), and 066 * {@link #UPDATE_SET_HAS_SUBQUERY_NOT_SUPPORTED} (scalar subquery on 067 * the right-hand side of a SET assignment). Window functions in SET 068 * RHS reuse the existing {@link #CLAUSE_WINDOW_FUNCTION_LEAK} code 069 * via the shared {@code rejectWindowFunctionInScope} helper. 070 * 071 * <p>Slice 82 lifts the slice-80 {@link #UPDATE_JOINED_NOT_SUPPORTED} 072 * reject for the common PG / MSSQL / BigQuery / Snowflake / Redshift 073 * FROM-side joined UPDATE shapes (single FROM table, comma-FROM, 074 * explicit JOIN ON, CROSS JOIN). Four new ERROR-severity codes pin the 075 * sub-shapes still deferred to a future slice: 076 * {@link #UPDATE_FROM_SUBQUERY_NOT_SUPPORTED} (subquery as a FROM 077 * source), {@link #UPDATE_FROM_JOIN_USING_NOT_SUPPORTED} (USING in any 078 * FROM-side join item), {@link #UPDATE_FROM_JOIN_NATURAL_NOT_SUPPORTED} 079 * (NATURAL JOIN in any FROM-side join item), 080 * {@link #UPDATE_FROM_NESTED_JOIN_NOT_SUPPORTED} (defensive: FROM-side 081 * TTable wraps a TJoin — distinct from the subquery case per the 082 * slice-80 message-text-discrimination contract), and 083 * {@link #UPDATE_JOIN_ON_HAS_SUBQUERY_NOT_SUPPORTED} (subquery in any 084 * ON condition). Window functions in ON reuse the existing 085 * {@link #CLAUSE_WINDOW_FUNCTION_LEAK} via 086 * {@code rejectWindowFunctionInScope}. {@link #UPDATE_JOINED_NOT_SUPPORTED} 087 * is retained declared-but-unreached for API stability (slice-71/72 088 * retain-for-documentation precedent — the residual join-form-target 089 * shape {@code UPDATE (a JOIN b) SET ...} does not parse in any 090 * supported dialect). 091 * 092 * <p>Group naming convention (clause-prefix): 093 * <ul> 094 * <li>CTE / WITH: {@code DUPLICATE_CTE_NAME}, 095 * {@code CTE_FORWARD_REFERENCE}, 096 * {@code CTE_WITH_RECURSIVE_NOT_SUPPORTED}, 097 * {@code NESTED_WITH_NOT_SUPPORTED}, {@code CTE_BODY_MISSING}</li> 098 * <li>FROM-clause subquery: {@code FROM_SUBQUERY_*}</li> 099 * <li>Scalar subquery projection: {@code SCALAR_SUBQUERY_*}, 100 * {@code CORRELATED_SCALAR_SUBQUERY_*}, 101 * {@code NESTED_SCALAR_SUBQUERY_*}</li> 102 * <li>Set-op: {@code SET_OP_*}, 103 * {@code SET_OPERATION_*}, {@code MIXED_SET_OPERATORS_*}, 104 * {@code MALFORMED_SET_OP_AST}, 105 * {@code BRANCH_COLUMN_REF_UNKNOWN_RELATION}</li> 106 * <li>ORDER BY: {@code ORDER_BY_*}, 107 * {@code ORDER_SIBLINGS_BY_*}</li> 108 * <li>SELECT row filter / limit: {@code SELECT_ROW_FILTER_*}, 109 * {@code DISTINCT_ON_NOT_SUPPORTED}, {@code ROW_LIMIT_*}</li> 110 * <li>GROUP BY / HAVING / WHERE / QUALIFY: 111 * {@code *_HAS_SUBQUERY_NOT_SUPPORTED}, {@code HAVING_*}, 112 * {@code QUALIFY_NOT_SUPPORTED}</li> 113 * <li>FROM / JOIN shape: {@code SELECT_NO_FROM_SOURCE}, 114 * {@code COMMA_FROM_*}, {@code CROSS_JOIN_*}, {@code USING_*}, 115 * {@code NATURAL_*}, {@code JOIN_*}, 116 * {@code TABLE_BINDING_UNRESOLVED}</li> 117 * <li>Merged-key (USING / NATURAL): 118 * {@code USING_KEY_NOT_DECLARED}, 119 * {@code MERGED_JOIN_AGAINST_CTE_WITH_EXPLICIT_COLUMN_LIST}, 120 * {@code UNQUALIFIED_MERGED_KEY_IN_JOIN_ON}</li> 121 * <li>JOIN ON predicate subquery: {@code JOIN_ON_*}</li> 122 * <li>Window function: {@code WINDOW_*}, 123 * {@code CLAUSE_WINDOW_FUNCTION_LEAK}</li> 124 * <li>Result column: {@code RESULT_COLUMN_*}, 125 * {@code SELECT_NO_PROJECTED_COLUMNS}</li> 126 * <li>Star expansion: {@code STAR_EXPANSION_*}</li> 127 * <li>Binding / ambiguity: {@code COLUMN_BINDING_NON_EXACT}, 128 * {@code UNQUALIFIED_COLUMN_AMBIGUOUS}, 129 * {@code OUTPUT_REFERENCES_UNKNOWN_RELATION}, 130 * {@code OUTPUT_REFERENCES_UNSUPPORTED_BINDING_KIND}</li> 131 * </ul> 132 */ 133public enum DiagnosticCode { 134 BRANCH_COLUMN_REF_UNKNOWN_RELATION, 135 CLAUSE_WINDOW_FUNCTION_LEAK, 136 COLUMN_BINDING_NON_EXACT, 137 COMMA_FROM_IN_BODY_NOT_SUPPORTED, 138 CORRELATED_SCALAR_SUBQUERY_UNKNOWN_OUTER_BINDING, 139 CREATE_AS_COLUMN_COUNT_MISMATCH, 140 CREATE_AS_NO_SOURCE_SELECT, 141 CREATE_AS_TARGET_MISSING, 142 CROSS_JOIN_IN_BODY_NOT_SUPPORTED, 143 CROSS_WITH_ON, 144 CROSS_WITH_USING, 145 CTE_BODY_MISSING, 146 /** 147 * Slice 103 — {@code WITH cte(a, b, c) AS (SELECT x, y FROM t) SELECT ...} 148 * — explicit CTE column list arity does not match the body's projection 149 * count, in a SELECT-side WITH clause. Slice 103 lifts the SELECT-side 150 * {@link StarExpansionKind#EXPLICIT_CTE_COLUMN_LIST_DEFERRED} family by 151 * routing the slice-102 rename helper through the SELECT-side CTE 152 * walker; the rename requires a 1-to-1 ordinal mapping, so both 153 * under- and over-specified lists reject with this code. 154 * 155 * <p>The parallel MERGE-side code is 156 * {@link #MERGE_CTE_EXPLICIT_COLUMN_LIST_ARITY_MISMATCH} (slice 102); 157 * the slice-103 helper carries a {@code dmlKind} discriminator and 158 * picks the right code per call site. 159 */ 160 CTE_EXPLICIT_COLUMN_LIST_ARITY_MISMATCH, 161 CTE_FORWARD_REFERENCE, 162 CTE_WITH_RECURSIVE_NOT_SUPPORTED, 163 DELETE_CTE_NOT_SUPPORTED, 164 DELETE_FROM_JOIN_NATURAL_NOT_SUPPORTED, 165 DELETE_FROM_JOIN_USING_NOT_SUPPORTED, 166 DELETE_FROM_NESTED_JOIN_NOT_SUPPORTED, 167 DELETE_JOINED_NOT_SUPPORTED, 168 DELETE_JOIN_ON_HAS_SUBQUERY_NOT_SUPPORTED, 169 DELETE_ORDER_BY_OR_LIMIT_NOT_SUPPORTED, 170 DELETE_OUTPUT_CLAUSE_NOT_SUPPORTED, 171 DELETE_RETURNING_CLAUSE_NOT_SUPPORTED, 172 DELETE_TARGET_MISSING, 173 /** 174 * Slice 111 — DELETE WHERE-side {@code EXISTS (SELECT 1 FROM r WHERE …)} 175 * was admitted by the slice-23+ predicate-subquery walker but the 176 * inner relation is missing (cannot resolve a producer for any column 177 * referenced inside the EXISTS body). Parallel to slice-110 178 * {@link #UPDATE_WHERE_EXISTS_BODY_MISSING}. 179 */ 180 DELETE_WHERE_EXISTS_BODY_MISSING, 181 /** 182 * Slice 111 — DELETE WHERE-side correlated {@code EXISTS} body 183 * references an outer alias the walker cannot resolve in the 184 * DELETE's scope. Parallel to slice-110 185 * {@link #UPDATE_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS}. 186 */ 187 DELETE_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS, 188 /** 189 * Slice 111 — DELETE WHERE-side {@code EXISTS} body has a relation 190 * the walker cannot resolve (no producer for the inner SELECT's 191 * FROM-list). Parallel to slice-110 192 * {@link #UPDATE_WHERE_EXISTS_INNER_RELATION_UNKNOWN}. 193 */ 194 DELETE_WHERE_EXISTS_INNER_RELATION_UNKNOWN, 195 /** 196 * Slice 111 — DELETE WHERE-side predicate has an outer-shape the 197 * walker cannot lift to an uncorrelated body extraction 198 * (e.g., tuple LHS in IN-SELECT, mixed operands). Parallel to 199 * slice-110 {@link #UPDATE_WHERE_OUTER_SHAPE_REJECTED}. 200 */ 201 DELETE_WHERE_OUTER_SHAPE_REJECTED, 202 /** 203 * Slice 111 — DELETE WHERE-side predicate-subquery shape is not 204 * supported by the slice-23+ walker (generic catch-all when no more 205 * specific code applies). Parallel to slice-110 206 * {@link #UPDATE_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED}. 207 */ 208 DELETE_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED, 209 /** 210 * Slice 111 — DELETE WHERE-side predicate has a subquery on the 211 * LHS (not the RHS), which is not liftable in the slice-23+ 212 * walker's canonical form. Parallel to slice-110 213 * {@link #UPDATE_WHERE_PREDICATE_NOT_LIFTABLE}. 214 */ 215 DELETE_WHERE_PREDICATE_NOT_LIFTABLE, 216 /** 217 * Slice 111 — DELETE WHERE-side {@code NOT (subq-wrapper)} where 218 * the inner is not an EXISTS — the slice-23+ walker only admits 219 * NOT EXISTS. Parallel to slice-110 220 * {@link #UPDATE_WHERE_PREDICATE_NOT_NOT_SUPPORTED}. 221 */ 222 DELETE_WHERE_PREDICATE_NOT_NOT_SUPPORTED, 223 /** 224 * Slice 111 — DELETE WHERE-side scalar comparison 225 * {@code col <op> (SELECT …)} where both sides are subqueries (the 226 * walker only admits a scalar comparison with a single subquery 227 * operand). Parallel to slice-110 228 * {@link #UPDATE_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE}. 229 */ 230 DELETE_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE, 231 DISTINCT_ON_EMPTY_COLUMN_LIST, 232 DISTINCT_ON_HAS_SUBQUERY_NOT_SUPPORTED, 233 DISTINCT_ON_NOT_SUPPORTED, 234 DUPLICATE_CTE_NAME, 235 DUPLICATE_FROM_SUBQUERY_ALIAS, 236 DUPLICATE_OUTPUT_NAME, 237 DUPLICATE_RELATION_ALIAS, 238 FROM_SOURCE_NO_TABLE, 239 FROM_SUBQUERY_ALIAS_REQUIRED, 240 FROM_SUBQUERY_BINDING_UNRESOLVED, 241 FROM_SUBQUERY_INNER_SUBQUERY_IN_GROUP_BY, 242 FROM_SUBQUERY_INNER_SUBQUERY_IN_JOIN_ON, 243 FROM_SUBQUERY_INNER_SUBQUERY_IN_WHERE, 244 FROM_SUBQUERY_IN_BODY_CONTEXT_NOT_SUPPORTED, 245 FROM_SUBQUERY_IN_SET_OP_BRANCH_FROM, 246 FROM_SUBQUERY_NO_INNER_SELECT, 247 FROM_SUBQUERY_ON_JOIN_SIDE_IN_SET_OP_BRANCH, 248 GROUP_BY_HAS_SUBQUERY_NOT_SUPPORTED, 249 HAVING_HAS_SUBQUERY_NOT_SUPPORTED, 250 HAVING_SUBQUERY_NOT_SUPPORTED, 251 HAVING_WINDOW_FUNCTION_NOT_SUPPORTED, 252 INSERT_COLUMN_COUNT_MISMATCH, 253 INSERT_MIXED_OUTER_AND_INNER_WITH_NOT_SUPPORTED, 254 INSERT_MULTI_TABLE_NOT_SUPPORTED, 255 INSERT_OUTER_WITH_ON_HIVE_MULTI_INSERT_NOT_SUPPORTED, 256 INSERT_SOURCE_NOT_SUPPORTED, 257 INSERT_TARGET_MISSING, 258 JOIN_ITEM_NO_TABLE, 259 JOIN_MISSING_ON_OR_USING, 260 JOIN_ON_EXISTS_BODY_MISSING, 261 JOIN_ON_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS, 262 JOIN_ON_EXISTS_INNER_COLUMN_COUNT, 263 JOIN_ON_EXISTS_INNER_COMMA_FROM, 264 JOIN_ON_EXISTS_INNER_CROSS_JOIN, 265 JOIN_ON_EXISTS_INNER_FROM_SUBQUERY, 266 JOIN_ON_EXISTS_INNER_FROM_SUBQUERY_ON_JOIN, 267 JOIN_ON_EXISTS_INNER_IS_SET_OP, 268 JOIN_ON_EXISTS_INNER_MISSING_FROM, 269 JOIN_ON_EXISTS_INNER_NATURAL, 270 JOIN_ON_EXISTS_INNER_NON_CONSTANT_PROJECTION, 271 JOIN_ON_EXISTS_INNER_RELATION_UNKNOWN, 272 JOIN_ON_EXISTS_INNER_ROW_LIMIT, 273 JOIN_ON_EXISTS_INNER_SUBQUERY_IN_GROUP_BY, 274 JOIN_ON_EXISTS_INNER_SUBQUERY_IN_JOIN_ON, 275 JOIN_ON_EXISTS_INNER_SUBQUERY_IN_WHERE, 276 JOIN_ON_EXISTS_INNER_USING, 277 JOIN_ON_EXISTS_INNER_WITH, 278 JOIN_ON_EXISTS_WITHIN_GROUP_AGGREGATE, 279 JOIN_ON_EXISTS_WITHIN_GROUP_NON_WHITELISTED, 280 JOIN_ON_OUTER_SHAPE_REJECTED, 281 JOIN_ON_PREDICATE_GENERIC_NOT_SUPPORTED, 282 JOIN_ON_PREDICATE_NOT_LIFTABLE, 283 JOIN_ON_PREDICATE_NOT_NOT_SUPPORTED, 284 JOIN_ON_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE, 285 JOIN_ON_TOP_LEVEL_SUBQUERY_NOT_SUPPORTED, 286 JOIN_WITH_BOTH_ON_AND_USING, 287 MALFORMED_SET_OP_AST, 288 MERGED_JOIN_AGAINST_CTE_WITH_EXPLICIT_COLUMN_LIST, 289 /** 290 * Slice 102 — {@code WITH cte(a, b, c) AS (SELECT x, y FROM t) MERGE ...} 291 * — explicit CTE column list arity does not match the body's projection 292 * count. Slice 102 lifts {@link #MERGE_CTE_EXPLICIT_COLUMN_LIST_NOT_SUPPORTED} 293 * by renaming the body's output column names to the explicit list, but 294 * the rename requires a 1-to-1 ordinal mapping. Both under- and 295 * over-specified lists reject with this code. 296 */ 297 MERGE_CTE_EXPLICIT_COLUMN_LIST_ARITY_MISMATCH, 298 /** 299 * Slice 101 — {@code WITH cte(a, b) AS (...) MERGE ...} (CTE has an 300 * explicit column list) is not supported. PostgreSQL and SQL Server 301 * parsers admit this shape, but slice 101 defers because the inner CTE 302 * body's output columns are named by the inner SELECT (e.g. 303 * {@code id, name}), while the user-visible CTE columns are renamed 304 * ({@code a, b}). Slice 102 lifts this reject by rebuilding the CTE 305 * body's {@link StatementGraph} with the explicit-list names and 306 * rewriting outgoing {@link LineageRef.Kind#STATEMENT_OUTPUT} refs; 307 * the code stays declared for API stability and as a fallback for 308 * shapes the rename helper still cannot handle (none today). 309 */ 310 MERGE_CTE_EXPLICIT_COLUMN_LIST_NOT_SUPPORTED, 311 MERGE_CTE_NOT_SUPPORTED, 312 MERGE_DO_NOTHING_NOT_SUPPORTED, 313 MERGE_ERROR_LOGGING_NOT_SUPPORTED, 314 MERGE_INSERT_DEFAULT_VALUES_NOT_SUPPORTED, 315 MERGE_INSERT_VALUES_HAS_SUBQUERY_NOT_SUPPORTED, 316 MERGE_LIMIT_NOT_SUPPORTED, 317 /** 318 * Slice 97 — {@code WHEN NOT MATCHED BY SOURCE THEN INSERT (...) VALUES (...)} 319 * is parser-admitted by the MSSQL grammar even though SQL Server 320 * rejects it semantically (a row absent from source cannot 321 * INSERT into source). Semantic IR rejects to surface the 322 * SQL Server semantic invariant rather than silently producing 323 * lineage for an impossible action. 324 */ 325 MERGE_NOT_MATCHED_BY_SOURCE_INSERT_NOT_VALID, 326 /** 327 * Slice 97 — {@code WHEN NOT MATCHED BY SOURCE} branches must not 328 * reference source columns: there is no matching source row. 329 * Fires when SET RHS, per-WHEN AND condition, or a nested 330 * expression contains a column ref whose alias matches the 331 * USING source alias / qualified name. 332 */ 333 MERGE_NOT_MATCHED_BY_SOURCE_REFERENCES_SOURCE, 334 MERGE_ON_CONDITION_MISSING, 335 MERGE_RETURNING_CLAUSE_NOT_SUPPORTED, 336 MERGE_SOURCE_NOT_SUPPORTED, 337 MERGE_TARGET_MISSING, 338 MERGE_UPDATE_DELETE_WHERE_NOT_SUPPORTED, 339 MERGE_USING_SOURCE_MISSING, 340 MERGE_WHEN_CONDITION_HAS_SUBQUERY_NOT_SUPPORTED, 341 MERGE_WHEN_NOT_MATCHED_BY_SOURCE_NOT_SUPPORTED, 342 MERGE_WHEN_NO_ACTION, 343 MIXED_SET_OPERATORS_NOT_SUPPORTED, 344 MULTIPLE_STATEMENTS_NOT_SUPPORTED, 345 NATURAL_CATALOG_REQUIRED, 346 NATURAL_IN_BODY_NOT_SUPPORTED, 347 NATURAL_WITH_ON, 348 NATURAL_WITH_USING, 349 NESTED_SCALAR_SUBQUERY_IN_PROJECTION, 350 NESTED_WITH_NOT_SUPPORTED, 351 ORDER_BY_CONSTANT_NOT_SUPPORTED, 352 ORDER_BY_FETCH_FIRST_NOT_SUPPORTED, 353 ORDER_BY_HAS_SUBQUERY_NOT_SUPPORTED, 354 ORDER_BY_NAME_NOT_MATCHED_IN_SET_OP_OUTPUT, 355 ORDER_BY_NO_PHYSICAL_COLUMN_REFS, 356 ORDER_BY_OBJECT_REFERENCE_NO_USABLE_NAME, 357 ORDER_BY_OBJECT_REFERENCE_UNSUPPORTED, 358 ORDER_BY_OFFSET_NOT_SUPPORTED, 359 ORDER_BY_ORDINAL_NOT_SUPPORTED, 360 ORDER_BY_ORDINAL_OUT_OF_RANGE, 361 ORDER_BY_PROJECTION_ALIAS_NOT_SUPPORTED, 362 ORDER_BY_QUALIFIED_REFERENCE_NOT_SUPPORTED, 363 ORDER_BY_RESET_WHEN_NOT_SUPPORTED, 364 ORDER_BY_SUBQUERY_NOT_SUPPORTED, 365 ORDER_BY_UNSUPPORTED_SORT_KEY_SHAPE, 366 ORDER_BY_WINDOW_FUNCTION_NOT_SUPPORTED, 367 ORDER_SIBLINGS_BY_NOT_SUPPORTED, 368 OUTPUT_DELETED_ON_INSERT_NOT_SUPPORTED, 369 OUTPUT_INSERTED_ON_DELETE_NOT_SUPPORTED, 370 OUTPUT_INTO_NOT_SUPPORTED, 371 OUTPUT_REFERENCES_UNKNOWN_RELATION, 372 OUTPUT_REFERENCES_UNSUPPORTED_BINDING_KIND, 373 PARSE_FAILED, 374 QUALIFY_NOT_SUPPORTED, 375 RELATION_NOT_FOUND_IN_CATALOG, 376 RESULT_COLUMN_NO_COLUMN_REFS, 377 RESULT_COLUMN_NO_NAME, 378 RESULT_COLUMN_NULL_EXPRESSION, 379 RESULT_COLUMN_SCALAR_SUBQUERY_EMBEDDED, 380 RETURNING_EMPTY_PROJECTION, 381 RETURNING_HAS_AGGREGATE_NOT_SUPPORTED, 382 RETURNING_HAS_SUBQUERY_NOT_SUPPORTED, 383 RETURNING_INTO_NOT_SUPPORTED, 384 RETURNING_STAR_CATALOG_REQUIRED, 385 RETURNING_STAR_NOT_SUPPORTED, 386 RETURNING_STAR_QUALIFIER_UNKNOWN, 387 ROW_LIMIT_COUNT_UNRESOLVED, 388 ROW_LIMIT_FETCH_FIRST_NOT_SUPPORTED, 389 ROW_LIMIT_HIVE_LIMIT_GRAMMAR_QUIRK, 390 ROW_LIMIT_LIMIT_NOT_SUPPORTED, 391 ROW_LIMIT_OFFSET_NOT_SUPPORTED, 392 ROW_LIMIT_TOP_NOT_SUPPORTED, 393 ROW_LIMIT_TOP_PERCENT_NOT_SUPPORTED, 394 ROW_LIMIT_TOP_WITH_TIES_NOT_SUPPORTED, 395 SCALAR_SUBQUERY_ALIAS_REQUIRED, 396 SCALAR_SUBQUERY_COLUMN_COUNT, 397 SCALAR_SUBQUERY_INNER_PROJECTION_UNNAMED, 398 SCALAR_SUBQUERY_INNER_SUBQUERY_IN_GROUP_BY, 399 SCALAR_SUBQUERY_INNER_SUBQUERY_IN_JOIN_ON, 400 SCALAR_SUBQUERY_INNER_SUBQUERY_IN_WHERE, 401 SCALAR_SUBQUERY_NO_INNER_SELECT, 402 SCALAR_SUBQUERY_UNKNOWN_RELATION_ALIAS, 403 SELECT_NO_FROM_SOURCE, 404 SELECT_NO_PROJECTED_COLUMNS, 405 SELECT_ROW_FILTER_NOT_SUPPORTED, 406 SELECT_ROW_FILTER_NULL, 407 SELECT_ROW_FILTER_UNKNOWN, 408 /** 409 * Slice 112 — top-level SELECT WHERE-side {@code EXISTS} body is 410 * empty (parser-level shape with no inner SELECT). Parallel to 411 * slice-110 {@link #UPDATE_WHERE_EXISTS_BODY_MISSING} / 412 * slice-111 {@link #DELETE_WHERE_EXISTS_BODY_MISSING}. 413 */ 414 SELECT_WHERE_EXISTS_BODY_MISSING, 415 /** 416 * Slice 112 — top-level SELECT WHERE-side correlated {@code EXISTS} 417 * body references an outer alias the walker cannot resolve in the 418 * SELECT's scope. Parallel to slice-110 419 * {@link #UPDATE_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS} / 420 * slice-111 {@link #DELETE_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS}. 421 */ 422 SELECT_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS, 423 /** 424 * Slice 112 — top-level SELECT WHERE-side {@code EXISTS} body has 425 * a relation the walker cannot resolve (no producer for the inner 426 * SELECT's FROM-list). Parallel to slice-110 427 * {@link #UPDATE_WHERE_EXISTS_INNER_RELATION_UNKNOWN} / 428 * slice-111 {@link #DELETE_WHERE_EXISTS_INNER_RELATION_UNKNOWN}. 429 */ 430 SELECT_WHERE_EXISTS_INNER_RELATION_UNKNOWN, 431 /** 432 * Slice 112 — top-level SELECT WHERE-side predicate has an 433 * outer-shape the walker cannot lift to an uncorrelated body 434 * extraction (e.g., tuple LHS in IN-SELECT, mixed operands). 435 * Parallel to slice-110 {@link #UPDATE_WHERE_OUTER_SHAPE_REJECTED} 436 * / slice-111 {@link #DELETE_WHERE_OUTER_SHAPE_REJECTED}. 437 */ 438 SELECT_WHERE_OUTER_SHAPE_REJECTED, 439 /** 440 * Slice 112 — top-level SELECT WHERE-side predicate-subquery 441 * shape is not supported by the slice-23+ walker (generic 442 * catch-all when no more specific code applies). Parallel to 443 * slice-110 {@link #UPDATE_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED} 444 * / slice-111 {@link #DELETE_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED}. 445 */ 446 SELECT_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED, 447 /** 448 * Slice 112 — top-level SELECT WHERE-side predicate has a 449 * subquery on the LHS (not the RHS), which is not liftable in the 450 * slice-23+ walker's canonical form. Parallel to slice-110 451 * {@link #UPDATE_WHERE_PREDICATE_NOT_LIFTABLE} / slice-111 452 * {@link #DELETE_WHERE_PREDICATE_NOT_LIFTABLE}. 453 */ 454 SELECT_WHERE_PREDICATE_NOT_LIFTABLE, 455 /** 456 * Slice 112 — top-level SELECT WHERE-side 457 * {@code NOT (subq-wrapper)} where the inner is not an EXISTS — 458 * the slice-23+ walker only admits NOT EXISTS. Parallel to 459 * slice-110 {@link #UPDATE_WHERE_PREDICATE_NOT_NOT_SUPPORTED} / 460 * slice-111 {@link #DELETE_WHERE_PREDICATE_NOT_NOT_SUPPORTED}. 461 */ 462 SELECT_WHERE_PREDICATE_NOT_NOT_SUPPORTED, 463 /** 464 * Slice 112 — top-level SELECT WHERE-side scalar comparison 465 * {@code col <op> (SELECT …)} where both sides are subqueries 466 * (the walker only admits a scalar comparison with a single 467 * subquery operand). Parallel to slice-110 468 * {@link #UPDATE_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE} 469 * / slice-111 470 * {@link #DELETE_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE}. 471 */ 472 SELECT_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE, 473 SET_OPERATION_NOT_SUPPORTED_IN_CONTEXT, 474 SET_OP_BRANCH_COLUMN_COUNT_MISMATCH, 475 SET_OP_BRANCH_COUNT_TOO_FEW, 476 SET_OP_BRANCH_DUPLICATE_OUTPUT_NAME, 477 SET_OP_BRANCH_IS_SET_OP, 478 SET_OP_BRANCH_OUTPUT_NAME_UNUSABLE, 479 SET_OP_DUPLICATE_OUTER_OUTPUT_NAME, 480 SET_OP_NON_ROOT_ORDER_BY_NOT_SUPPORTED, 481 SET_OP_ORDER_BY_BRANCH_OUTPUT_NO_SOURCES, 482 SET_OP_OUTER_ORDER_BY_NO_PHYSICAL_COLUMN_REFS, 483 SET_OP_ROOT_TYPE_NONE, 484 SET_OP_ROOT_TYPE_NULL, 485 SET_OP_ROW_LIMIT_NOT_SUPPORTED, 486 SET_OP_UNKNOWN_OPERATOR_TYPE, 487 STAR_EXPANSION_EXPLICIT_CTE_COLUMN_LIST, 488 STAR_EXPANSION_MULTI_RELATION_FROM, 489 STAR_EXPANSION_NON_BASE_TABLE, 490 STAR_EXPANSION_NO_CATALOG, 491 STAR_EXPANSION_NO_INSCOPE_RELATION_COLUMNS, 492 STAR_EXPANSION_PREDICATE_BODY, 493 STAR_EXPANSION_QUALIFIER_AMBIGUOUS, 494 STAR_EXPANSION_QUALIFIER_NOT_FOUND, 495 STAR_EXPANSION_SYNTHETIC_BODY, 496 STAR_EXPANSION_UNHANDLED_KIND, 497 STATEMENT_KIND_NOT_SUPPORTED, 498 TABLE_BINDING_UNRESOLVED, 499 UNQUALIFIED_COLUMN_AMBIGUOUS, 500 UNQUALIFIED_MERGED_KEY_IN_JOIN_ON, 501 UNSUPPORTED_JOIN_TYPE, 502 UPDATE_CTE_NOT_SUPPORTED, 503 UPDATE_FROM_JOIN_NATURAL_NOT_SUPPORTED, 504 UPDATE_FROM_JOIN_USING_NOT_SUPPORTED, 505 UPDATE_FROM_NESTED_JOIN_NOT_SUPPORTED, 506 UPDATE_FROM_SUBQUERY_NOT_SUPPORTED, 507 UPDATE_JOINED_NOT_SUPPORTED, 508 UPDATE_JOIN_ON_HAS_SUBQUERY_NOT_SUPPORTED, 509 UPDATE_NO_SET_CLAUSE, 510 UPDATE_ORDER_BY_OR_LIMIT_NOT_SUPPORTED, 511 UPDATE_OUTPUT_CLAUSE_NOT_SUPPORTED, 512 UPDATE_RETURNING_CLAUSE_NOT_SUPPORTED, 513 UPDATE_SET_HAS_SUBQUERY_NOT_SUPPORTED, 514 UPDATE_TARGET_MISSING, 515 UPDATE_TUPLE_ASSIGNMENT_NOT_SUPPORTED, 516 UPDATE_WHERE_EXISTS_BODY_MISSING, 517 UPDATE_WHERE_EXISTS_CORRELATED_UNKNOWN_OUTER_ALIAS, 518 UPDATE_WHERE_EXISTS_INNER_RELATION_UNKNOWN, 519 UPDATE_WHERE_OUTER_SHAPE_REJECTED, 520 UPDATE_WHERE_PREDICATE_GENERIC_NOT_SUPPORTED, 521 UPDATE_WHERE_PREDICATE_NOT_LIFTABLE, 522 UPDATE_WHERE_PREDICATE_NOT_NOT_SUPPORTED, 523 UPDATE_WHERE_PREDICATE_SCALAR_COMPARISON_NOT_LIFTABLE, 524 USING_IN_BODY_NOT_SUPPORTED, 525 USING_KEY_NOT_DECLARED, 526 WHERE_HAS_SUBQUERY_NOT_SUPPORTED, 527 WINDOW_CLUSTER_BY_NOT_SUPPORTED, 528 WINDOW_DISTRIBUTE_BY_NOT_SUPPORTED, 529 WINDOW_EMPTY_OVER_NOT_SUPPORTED, 530 WINDOW_FILTER_NOT_SUPPORTED, 531 WINDOW_FRAME_EXCLUDE_NOT_SUPPORTED, 532 WINDOW_FRAME_NULL_BOUNDARY_TYPE, 533 WINDOW_FRAME_NULL_LIMIT_ROW_TYPE, 534 WINDOW_FRAME_NULL_START_BOUNDARY, 535 WINDOW_FRAME_OFFSET_NON_CONSTANT, 536 WINDOW_FRAME_UNEXPECTED_OFFSET, 537 WINDOW_FRAME_UNSUPPORTED_BOUNDARY_TYPE, 538 WINDOW_FRAME_UNSUPPORTED_LIMIT_ROW_TYPE, 539 WINDOW_FUNCTION_AS_PROJECTION_NOT_SUPPORTED, 540 WINDOW_FUNCTION_EMBEDDED_NOT_SUPPORTED, 541 WINDOW_FUNCTION_LEVEL_ORDER_BY_NOT_SUPPORTED, 542 WINDOW_FUNCTION_LEVEL_SORT_NOT_SUPPORTED, 543 WINDOW_FUNCTION_UNSUPPORTED, 544 WINDOW_FUNCTION_USED_NOT_SUPPORTED, 545 WINDOW_KEEP_DENSE_RANK_NOT_SUPPORTED, 546 WINDOW_NAMED_WINDOW_DECLARATION_NOT_SUPPORTED, 547 WINDOW_NAMED_WINDOW_REFERENCE_NOT_SUPPORTED, 548 WINDOW_OVER_ORDER_BY_AGGREGATE, 549 WINDOW_OVER_ORDER_BY_CALCULATED_ALIAS, 550 WINDOW_OVER_ORDER_BY_ITEM_UNUSABLE, 551 WINDOW_OVER_ORDER_BY_LITERAL, 552 WINDOW_OVER_ORDER_BY_NULL_SORT_KEY, 553 WINDOW_OVER_ORDER_BY_RESET_WHEN_NOT_SUPPORTED, 554 WINDOW_OVER_ORDER_BY_SIBLINGS_NOT_SUPPORTED, 555 WINDOW_OVER_ORDER_BY_SUBQUERY, 556 WINDOW_OVER_ORDER_BY_UNKNOWN_REFERENCE, 557 WINDOW_OVER_ORDER_BY_WINDOW_FUNCTION, 558 WINDOW_PARTITION_BY_AGGREGATE, 559 WINDOW_PARTITION_BY_CALCULATED_ALIAS, 560 WINDOW_PARTITION_BY_ITEM_UNUSABLE, 561 WINDOW_PARTITION_BY_LITERAL, 562 WINDOW_PARTITION_BY_PROJECTION_ALIAS, 563 WINDOW_PARTITION_BY_SORT_NOT_SUPPORTED, 564 WINDOW_PARTITION_BY_SUBQUERY, 565 WINDOW_PARTITION_BY_UNKNOWN_REFERENCE, 566 WINDOW_SORT_BY_NOT_SUPPORTED, 567 WINDOW_WITHIN_GROUP_INSIDE_PROJECTION_NOT_SUPPORTED, 568 WINDOW_WITHIN_GROUP_NOT_SUPPORTED 569}