(
self, element, within_columns_clause=False, **kwargs
)
| 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 |
nothing calls this directly
no test coverage detected