diff options
Diffstat (limited to 'sqlglot/optimizer/normalize_identifiers.py')
-rw-r--r-- | sqlglot/optimizer/normalize_identifiers.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sqlglot/optimizer/normalize_identifiers.py b/sqlglot/optimizer/normalize_identifiers.py index 99e605d..9d4860e 100644 --- a/sqlglot/optimizer/normalize_identifiers.py +++ b/sqlglot/optimizer/normalize_identifiers.py @@ -1,8 +1,23 @@ +from __future__ import annotations + +import typing as t + +from sqlglot import exp from sqlglot._typing import E from sqlglot.dialects.dialect import Dialect, DialectType +@t.overload def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: + ... + + +@t.overload +def normalize_identifiers(expression: str, dialect: DialectType = None) -> exp.Expression: + ... + + +def normalize_identifiers(expression, dialect=None): """ Normalize all unquoted identifiers to either lower or upper case, depending on the dialect. This essentially makes those identifiers case-insensitive. @@ -16,6 +31,8 @@ def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') >>> normalize_identifiers(expression).sql() 'SELECT bar.a AS a FROM "Foo".bar' + >>> normalize_identifiers("foo", dialect="snowflake").sql(dialect="snowflake") + 'FOO' Args: expression: The expression to transform. @@ -24,4 +41,5 @@ def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: Returns: The transformed expression. """ + expression = exp.maybe_parse(expression, dialect=dialect) return expression.transform(Dialect.get_or_raise(dialect).normalize_identifier, copy=False) |