MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / visit_textual_select

Method visit_textual_select

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

Source from the content-addressed store, hash-verified

2807 return "".join(self.process(part, **kw) for part in tstring.parts)
2808
2809 def visit_textual_select(
2810 self, taf, compound_index=None, asfrom=False, **kw
2811 ):
2812 if self._collect_params:
2813 self._add_to_params(taf)
2814 toplevel = not self.stack
2815 entry = self._default_stack_entry if toplevel else self.stack[-1]
2816
2817 new_entry: _CompilerStackEntry = {
2818 "correlate_froms": set(),
2819 "asfrom_froms": set(),
2820 "selectable": taf,
2821 }
2822 self.stack.append(new_entry)
2823
2824 if taf._independent_ctes:
2825 self._dispatch_independent_ctes(taf, kw)
2826
2827 populate_result_map = (
2828 toplevel
2829 or (
2830 compound_index == 0
2831 and entry.get("need_result_map_for_compound", False)
2832 )
2833 or entry.get("need_result_map_for_nested", False)
2834 )
2835
2836 if populate_result_map:
2837 self._ordered_columns = self._textual_ordered_columns = (
2838 taf.positional
2839 )
2840
2841 # enable looser result column matching when the SQL text links to
2842 # Column objects by name only
2843 self._loose_column_name_matching = not taf.positional and bool(
2844 taf.column_args
2845 )
2846
2847 for c in taf.column_args:
2848 self.process(
2849 c,
2850 within_columns_clause=True,
2851 add_to_result_map=self._add_to_result_map,
2852 )
2853
2854 text = self.process(taf.element, **kw)
2855 if self.ctes:
2856 nesting_level = len(self.stack) if not toplevel else None
2857 text = self._render_cte_clause(nesting_level=nesting_level) + text
2858
2859 self.stack.pop(-1)
2860
2861 return text
2862
2863 def visit_null(self, expr: Null, **kw: Any) -> str:
2864 return "NULL"

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected