(
self,
alias,
asfrom=False,
ashint=False,
iscrud=False,
fromhints=None,
subquery=False,
lateral=False,
enclosing_alias=None,
from_linter=None,
**kwargs,
)
| 4280 | return self.visit_column(element, **kw) |
| 4281 | |
| 4282 | def visit_alias( |
| 4283 | self, |
| 4284 | alias, |
| 4285 | asfrom=False, |
| 4286 | ashint=False, |
| 4287 | iscrud=False, |
| 4288 | fromhints=None, |
| 4289 | subquery=False, |
| 4290 | lateral=False, |
| 4291 | enclosing_alias=None, |
| 4292 | from_linter=None, |
| 4293 | **kwargs, |
| 4294 | ): |
| 4295 | if lateral: |
| 4296 | if "enclosing_lateral" not in kwargs: |
| 4297 | # if lateral is set and enclosing_lateral is not |
| 4298 | # present, we assume we are being called directly |
| 4299 | # from visit_lateral() and we need to set enclosing_lateral. |
| 4300 | assert alias._is_lateral |
| 4301 | kwargs["enclosing_lateral"] = alias |
| 4302 | |
| 4303 | # for lateral objects, we track a second from_linter that is... |
| 4304 | # lateral! to the level above us. |
| 4305 | if ( |
| 4306 | from_linter |
| 4307 | and "lateral_from_linter" not in kwargs |
| 4308 | and "enclosing_lateral" in kwargs |
| 4309 | ): |
| 4310 | kwargs["lateral_from_linter"] = from_linter |
| 4311 | |
| 4312 | if enclosing_alias is not None and enclosing_alias.element is alias: |
| 4313 | inner = alias.element._compiler_dispatch( |
| 4314 | self, |
| 4315 | asfrom=asfrom, |
| 4316 | ashint=ashint, |
| 4317 | iscrud=iscrud, |
| 4318 | fromhints=fromhints, |
| 4319 | lateral=lateral, |
| 4320 | enclosing_alias=alias, |
| 4321 | **kwargs, |
| 4322 | ) |
| 4323 | if subquery and (asfrom or lateral): |
| 4324 | inner = "(%s)" % (inner,) |
| 4325 | return inner |
| 4326 | else: |
| 4327 | kwargs["enclosing_alias"] = alias |
| 4328 | |
| 4329 | if asfrom or ashint: |
| 4330 | if isinstance(alias.name, elements._truncated_label): |
| 4331 | alias_name = self._truncated_identifier("alias", alias.name) |
| 4332 | else: |
| 4333 | alias_name = alias.name |
| 4334 | |
| 4335 | if ashint: |
| 4336 | return self.preparer.format_alias(alias, alias_name) |
| 4337 | elif asfrom: |
| 4338 | if from_linter: |
| 4339 | from_linter.froms[alias._de_clone()] = alias_name |
no test coverage detected