| 2610 | return self.process(sql_element, **kw) |
| 2611 | |
| 2612 | def visit_column( |
| 2613 | self, |
| 2614 | column: ColumnClause[Any], |
| 2615 | add_to_result_map: Optional[_ResultMapAppender] = None, |
| 2616 | include_table: bool = True, |
| 2617 | result_map_targets: Tuple[Any, ...] = (), |
| 2618 | ambiguous_table_name_map: Optional[_AmbiguousTableNameMap] = None, |
| 2619 | **kwargs: Any, |
| 2620 | ) -> str: |
| 2621 | name = orig_name = column.name |
| 2622 | if name is None: |
| 2623 | name = self._fallback_column_name(column) |
| 2624 | |
| 2625 | is_literal = column.is_literal |
| 2626 | if not is_literal and isinstance(name, elements._truncated_label): |
| 2627 | name = self._truncated_identifier("colident", name) |
| 2628 | |
| 2629 | if add_to_result_map is not None: |
| 2630 | targets = (column, name, column.key) + result_map_targets |
| 2631 | if column._tq_label: |
| 2632 | targets += (column._tq_label,) |
| 2633 | |
| 2634 | add_to_result_map(name, orig_name, targets, column.type) |
| 2635 | |
| 2636 | if is_literal: |
| 2637 | # note we are not currently accommodating for |
| 2638 | # literal_column(quoted_name('ident', True)) here |
| 2639 | name = self.escape_literal_column(name) |
| 2640 | else: |
| 2641 | name = self.preparer.quote(name) |
| 2642 | table = column.table |
| 2643 | if table is None or not include_table or not table.named_with_column: |
| 2644 | return name |
| 2645 | else: |
| 2646 | effective_schema = self.preparer.schema_for_object(table) |
| 2647 | |
| 2648 | if effective_schema: |
| 2649 | schema_prefix = ( |
| 2650 | self.preparer.quote_schema(effective_schema) + "." |
| 2651 | ) |
| 2652 | else: |
| 2653 | schema_prefix = "" |
| 2654 | |
| 2655 | if TYPE_CHECKING: |
| 2656 | assert isinstance(table, NamedFromClause) |
| 2657 | tablename = table.name |
| 2658 | |
| 2659 | if ( |
| 2660 | not effective_schema |
| 2661 | and ambiguous_table_name_map |
| 2662 | and tablename in ambiguous_table_name_map |
| 2663 | ): |
| 2664 | tablename = ambiguous_table_name_map[tablename] |
| 2665 | |
| 2666 | if isinstance(tablename, elements._truncated_label): |
| 2667 | tablename = self._truncated_identifier("alias", tablename) |
| 2668 | |
| 2669 | return schema_prefix + self.preparer.quote(tablename) + "." + name |