|
50 | 50 | from sqlalchemy.engine.default import DefaultDialect, DefaultExecutionContext
|
51 | 51 | from sqlalchemy.engine.base import Engine
|
52 | 52 | from sqlalchemy.sql.schema import Column
|
| 53 | +from sqlalchemy.sql.schema import Table |
53 | 54 | from sqlalchemy.sql import elements, selectable
|
54 | 55 | import re
|
55 | 56 |
|
@@ -289,12 +290,18 @@ def visit_column(
|
289 | 290 | if isinstance(tablename, elements._truncated_label):
|
290 | 291 | tablename = self._truncated_identifier("alias", tablename)
|
291 | 292 | elif TABLE_VALUED_ALIAS_ALIASES in kwargs:
|
292 |
| - aliases = kwargs[TABLE_VALUED_ALIAS_ALIASES] |
293 |
| - if tablename not in aliases: |
294 |
| - aliases[tablename] = self.anon_map[ |
295 |
| - f"{TABLE_VALUED_ALIAS_ALIASES} {tablename}" |
296 |
| - ] |
297 |
| - tablename = aliases[tablename] |
| 293 | + known_tables = set( |
| 294 | + from_.name |
| 295 | + for from_ in self.compile_state.froms |
| 296 | + if isinstance(from_, Table) |
| 297 | + ) |
| 298 | + if tablename not in known_tables: |
| 299 | + aliases = kwargs[TABLE_VALUED_ALIAS_ALIASES] |
| 300 | + if tablename not in aliases: |
| 301 | + aliases[tablename] = self.anon_map[ |
| 302 | + f"{TABLE_VALUED_ALIAS_ALIASES} {tablename}" |
| 303 | + ] |
| 304 | + tablename = aliases[tablename] |
298 | 305 |
|
299 | 306 | return self.preparer.quote(tablename) + "." + name
|
300 | 307 |
|
|
0 commit comments