(
self,
cte: CTE,
asfrom: bool = False,
ashint: bool = False,
fromhints: Optional[_FromHintsType] = None,
visiting_cte: Optional[CTE] = None,
from_linter: Optional[FromLinter] = None,
cte_opts: selectable._CTEOpts = selectable._CTEOpts(False),
**kwargs: Any,
)
| 4053 | cte._compiler_dispatch(self, cte_opts=opt, **local_kw) |
| 4054 | |
| 4055 | def visit_cte( |
| 4056 | self, |
| 4057 | cte: CTE, |
| 4058 | asfrom: bool = False, |
| 4059 | ashint: bool = False, |
| 4060 | fromhints: Optional[_FromHintsType] = None, |
| 4061 | visiting_cte: Optional[CTE] = None, |
| 4062 | from_linter: Optional[FromLinter] = None, |
| 4063 | cte_opts: selectable._CTEOpts = selectable._CTEOpts(False), |
| 4064 | **kwargs: Any, |
| 4065 | ) -> Optional[str]: |
| 4066 | self_ctes = self._init_cte_state() |
| 4067 | assert self_ctes is self.ctes |
| 4068 | |
| 4069 | kwargs["visiting_cte"] = cte |
| 4070 | |
| 4071 | cte_name = cte.name |
| 4072 | |
| 4073 | if isinstance(cte_name, elements._truncated_label): |
| 4074 | cte_name = self._truncated_identifier("alias", cte_name) |
| 4075 | |
| 4076 | is_new_cte = True |
| 4077 | embedded_in_current_named_cte = False |
| 4078 | |
| 4079 | _reference_cte = cte._get_reference_cte() |
| 4080 | |
| 4081 | nesting = cte.nesting or cte_opts.nesting |
| 4082 | |
| 4083 | # check for CTE already encountered |
| 4084 | if _reference_cte in self.level_name_by_cte: |
| 4085 | cte_level, _, existing_cte_opts = self.level_name_by_cte[ |
| 4086 | _reference_cte |
| 4087 | ] |
| 4088 | assert _ == cte_name |
| 4089 | |
| 4090 | cte_level_name = (cte_level, cte_name) |
| 4091 | existing_cte = self.ctes_by_level_name[cte_level_name] |
| 4092 | |
| 4093 | # check if we are receiving it here with a specific |
| 4094 | # "nest_here" location; if so, move it to this location |
| 4095 | |
| 4096 | if cte_opts.nesting: |
| 4097 | if existing_cte_opts.nesting: |
| 4098 | raise exc.CompileError( |
| 4099 | "CTE is stated as 'nest_here' in " |
| 4100 | "more than one location" |
| 4101 | ) |
| 4102 | |
| 4103 | old_level_name = (cte_level, cte_name) |
| 4104 | cte_level = len(self.stack) if nesting else 1 |
| 4105 | cte_level_name = new_level_name = (cte_level, cte_name) |
| 4106 | |
| 4107 | del self.ctes_by_level_name[old_level_name] |
| 4108 | self.ctes_by_level_name[new_level_name] = existing_cte |
| 4109 | self.level_name_by_cte[_reference_cte] = new_level_name + ( |
| 4110 | cte_opts, |
| 4111 | ) |
| 4112 |
nothing calls this directly
no test coverage detected