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

Method visit_textual_select

lib/sqlalchemy/sql/compiler.py:2722–2772  ·  view source on GitHub ↗
(
        self, taf, compound_index=None, asfrom=False, **kw
    )

Source from the content-addressed store, hash-verified

2720 )
2721
2722 def visit_textual_select(
2723 self, taf, compound_index=None, asfrom=False, **kw
2724 ):
2725 toplevel = not self.stack
2726 entry = self._default_stack_entry if toplevel else self.stack[-1]
2727
2728 new_entry: _CompilerStackEntry = {
2729 "correlate_froms": set(),
2730 "asfrom_froms": set(),
2731 "selectable": taf,
2732 }
2733 self.stack.append(new_entry)
2734
2735 if taf._independent_ctes:
2736 self._dispatch_independent_ctes(taf, kw)
2737
2738 populate_result_map = (
2739 toplevel
2740 or (
2741 compound_index == 0
2742 and entry.get("need_result_map_for_compound", False)
2743 )
2744 or entry.get("need_result_map_for_nested", False)
2745 )
2746
2747 if populate_result_map:
2748 self._ordered_columns = self._textual_ordered_columns = (
2749 taf.positional
2750 )
2751
2752 # enable looser result column matching when the SQL text links to
2753 # Column objects by name only
2754 self._loose_column_name_matching = not taf.positional and bool(
2755 taf.column_args
2756 )
2757
2758 for c in taf.column_args:
2759 self.process(
2760 c,
2761 within_columns_clause=True,
2762 add_to_result_map=self._add_to_result_map,
2763 )
2764
2765 text = self.process(taf.element, **kw)
2766 if self.ctes:
2767 nesting_level = len(self.stack) if not toplevel else None
2768 text = self._render_cte_clause(nesting_level=nesting_level) + text
2769
2770 self.stack.pop(-1)
2771
2772 return text
2773
2774 def visit_null(self, expr: Null, **kw: Any) -> str:
2775 return "NULL"

Callers

nothing calls this directly

Calls 6

_render_cte_clauseMethod · 0.95
appendMethod · 0.45
getMethod · 0.45
processMethod · 0.45
popMethod · 0.45

Tested by

no test coverage detected