| 1798 | return columns |
| 1799 | |
| 1800 | def populate_enum_values( |
| 1801 | self, |
| 1802 | scoped_tbls: list[tuple[str | None, str, str | None]], |
| 1803 | column: str, |
| 1804 | parent: str | None = None, |
| 1805 | ) -> list[str]: |
| 1806 | values: list[str] = [] |
| 1807 | meta = self.dbmetadata["enum_values"] |
| 1808 | column_key = self._escape_identifier(column) |
| 1809 | parent_key = self._strip_backticks(parent) if parent else None |
| 1810 | |
| 1811 | for schema, relname, alias in scoped_tbls: |
| 1812 | if parent_key and not self._matches_parent(parent_key, schema, relname, alias): |
| 1813 | continue |
| 1814 | |
| 1815 | schema = schema or self.dbname |
| 1816 | table_meta = meta.get(schema, {}) |
| 1817 | escaped_relname = self.escape_name(relname) |
| 1818 | |
| 1819 | for rel_key in {relname, escaped_relname}: |
| 1820 | columns = table_meta.get(rel_key) |
| 1821 | if columns and column_key in columns: |
| 1822 | values.extend(columns[column_key]) |
| 1823 | |
| 1824 | return list(dict.fromkeys(values)) |
| 1825 | |
| 1826 | def _escape_identifier(self, name: str) -> str: |
| 1827 | return self.escape_name(self._strip_backticks(name)) |