diff options
Diffstat (limited to 'sqlglot/schema.py')
-rw-r--r-- | sqlglot/schema.py | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/sqlglot/schema.py b/sqlglot/schema.py index 7a3c88b..f028f5a 100644 --- a/sqlglot/schema.py +++ b/sqlglot/schema.py @@ -372,21 +372,12 @@ class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema): is_table: bool = False, normalize: t.Optional[bool] = None, ) -> str: - dialect = dialect or self.dialect - normalize = self.normalize if normalize is None else normalize - - try: - identifier = sqlglot.maybe_parse(name, dialect=dialect, into=exp.Identifier) - except ParseError: - return name if isinstance(name, str) else name.name - - name = identifier.name - if not normalize: - return name - - # This can be useful for normalize_identifier - identifier.meta["is_table"] = is_table - return Dialect.get_or_raise(dialect).normalize_identifier(identifier).name + return normalize_name( + name, + dialect=dialect or self.dialect, + is_table=is_table, + normalize=self.normalize if normalize is None else normalize, + ) def depth(self) -> int: if not self.empty and not self._depth: @@ -418,6 +409,26 @@ class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema): return self._type_mapping_cache[schema_type] +def normalize_name( + name: str | exp.Identifier, + dialect: DialectType = None, + is_table: bool = False, + normalize: t.Optional[bool] = True, +) -> str: + try: + identifier = sqlglot.maybe_parse(name, dialect=dialect, into=exp.Identifier) + except ParseError: + return name if isinstance(name, str) else name.name + + name = identifier.name + if not normalize: + return name + + # This can be useful for normalize_identifier + identifier.meta["is_table"] = is_table + return Dialect.get_or_raise(dialect).normalize_identifier(identifier).name + + def ensure_schema(schema: Schema | t.Optional[t.Dict], **kwargs: t.Any) -> Schema: if isinstance(schema, Schema): return schema |