MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / visit_label_reference

Method visit_label_reference

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

Source from the content-addressed store, hash-verified

2520 return "(" + grouping.element._compiler_dispatch(self, **kwargs) + ")"
2521
2522 def visit_label_reference(
2523 self, element, within_columns_clause=False, **kwargs
2524 ):
2525 if self.stack and self.dialect.supports_simple_order_by_label:
2526 try:
2527 compile_state = cast(
2528 "Union[SelectState, CompoundSelectState]",
2529 self.stack[-1]["compile_state"],
2530 )
2531 except KeyError as ke:
2532 raise exc.CompileError(
2533 "Can't resolve label reference for ORDER BY / "
2534 "GROUP BY / DISTINCT etc."
2535 ) from ke
2536
2537 (
2538 with_cols,
2539 only_froms,
2540 only_cols,
2541 ) = compile_state._label_resolve_dict
2542 if within_columns_clause:
2543 resolve_dict = only_froms
2544 else:
2545 resolve_dict = only_cols
2546
2547 # this can be None in the case that a _label_reference()
2548 # were subject to a replacement operation, in which case
2549 # the replacement of the Label element may have changed
2550 # to something else like a ColumnClause expression.
2551 order_by_elem = element.element._order_by_label_element
2552
2553 if (
2554 order_by_elem is not None
2555 and order_by_elem.name in resolve_dict
2556 and order_by_elem.shares_lineage(
2557 resolve_dict[order_by_elem.name]
2558 )
2559 ):
2560 kwargs["render_label_as_label"] = (
2561 element.element._order_by_label_element
2562 )
2563 return self.process(
2564 element.element,
2565 within_columns_clause=within_columns_clause,
2566 **kwargs,
2567 )
2568
2569 def visit_textual_label_reference(
2570 self, element, within_columns_clause=False, **kwargs

Callers

nothing calls this directly

Calls 3

shares_lineageMethod · 0.80
castFunction · 0.70
processMethod · 0.45

Tested by

no test coverage detected