diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-06-22 18:53:31 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-06-22 18:53:31 +0000 |
commit | 20d090151fbc2e75394fc456f49f0078e59752d8 (patch) | |
tree | 084494962f092ff80f5ef8fdba1b917206abbc83 /sqlglot/optimizer/normalize_identifiers.py | |
parent | Adding upstream version 16.2.1. (diff) | |
download | sqlglot-upstream/16.4.0.tar.xz sqlglot-upstream/16.4.0.zip |
Adding upstream version 16.4.0.upstream/16.4.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/optimizer/normalize_identifiers.py')
-rw-r--r-- | sqlglot/optimizer/normalize_identifiers.py | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/sqlglot/optimizer/normalize_identifiers.py b/sqlglot/optimizer/normalize_identifiers.py index 1e5c104..99e605d 100644 --- a/sqlglot/optimizer/normalize_identifiers.py +++ b/sqlglot/optimizer/normalize_identifiers.py @@ -1,12 +1,15 @@ -from sqlglot import exp from sqlglot._typing import E -from sqlglot.dialects.dialect import RESOLVES_IDENTIFIERS_AS_UPPERCASE, DialectType +from sqlglot.dialects.dialect import Dialect, DialectType def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: """ - Normalize all unquoted identifiers to either lower or upper case, depending on - the dialect. This essentially makes those identifiers case-insensitive. + Normalize all unquoted identifiers to either lower or upper case, depending + on the dialect. This essentially makes those identifiers case-insensitive. + + Note: + Some dialects (e.g. BigQuery) treat identifiers as case-insensitive even + when they're quoted, so in these cases all identifiers are normalized. Example: >>> import sqlglot @@ -21,16 +24,4 @@ def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: Returns: The transformed expression. """ - return expression.transform(_normalize, dialect, copy=False) - - -def _normalize(node: exp.Expression, dialect: DialectType = None) -> exp.Expression: - if isinstance(node, exp.Identifier) and not node.quoted: - node.set( - "this", - node.this.upper() - if dialect in RESOLVES_IDENTIFIERS_AS_UPPERCASE - else node.this.lower(), - ) - - return node + return expression.transform(Dialect.get_or_raise(dialect).normalize_identifier, copy=False) |