summaryrefslogtreecommitdiffstats
path: root/sqlglot/schema.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlglot/schema.py')
-rw-r--r--sqlglot/schema.py41
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