MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / visit_label_reference

Method visit_label_reference

lib/sqlalchemy/sql/compiler.py:2462–2507  ·  view source on GitHub ↗
(
        self, element, within_columns_clause=False, **kwargs
    )

Source from the content-addressed store, hash-verified

2460 return "(" + grouping.element._compiler_dispatch(self, **kwargs) + ")"
2461
2462 def visit_label_reference(
2463 self, element, within_columns_clause=False, **kwargs
2464 ):
2465 if self.stack and self.dialect.supports_simple_order_by_label:
2466 try:
2467 compile_state = cast(
2468 "Union[SelectState, CompoundSelectState]",
2469 self.stack[-1]["compile_state"],
2470 )
2471 except KeyError as ke:
2472 raise exc.CompileError(
2473 "Can't resolve label reference for ORDER BY / "
2474 "GROUP BY / DISTINCT etc."
2475 ) from ke
2476
2477 (
2478 with_cols,
2479 only_froms,
2480 only_cols,
2481 ) = compile_state._label_resolve_dict
2482 if within_columns_clause:
2483 resolve_dict = only_froms
2484 else:
2485 resolve_dict = only_cols
2486
2487 # this can be None in the case that a _label_reference()
2488 # were subject to a replacement operation, in which case
2489 # the replacement of the Label element may have changed
2490 # to something else like a ColumnClause expression.
2491 order_by_elem = element.element._order_by_label_element
2492
2493 if (
2494 order_by_elem is not None
2495 and order_by_elem.name in resolve_dict
2496 and order_by_elem.shares_lineage(
2497 resolve_dict[order_by_elem.name]
2498 )
2499 ):
2500 kwargs["render_label_as_label"] = (
2501 element.element._order_by_label_element
2502 )
2503 return self.process(
2504 element.element,
2505 within_columns_clause=within_columns_clause,
2506 **kwargs,
2507 )
2508
2509 def visit_textual_label_reference(
2510 self, element, within_columns_clause=False, **kwargs

Callers

nothing calls this directly

Calls 3

castFunction · 0.85
shares_lineageMethod · 0.80
processMethod · 0.45

Tested by

no test coverage detected