mirror of
https://github.com/apache/superset.git
synced 2026-09-01 21:11:28 +00:00
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""
|
|
SAP HANA dialect.
|
|
|
|
HANA has no first-party sqlglot dialect, so Superset maps it to Postgres.
|
|
Postgres normalizes function-call names to uppercase on generation
|
|
(``NORMALIZE_FUNCTIONS = "upper"``). HANA calculation-view invocations are
|
|
addressed as a quoted, case-sensitive identifier followed by a PLACEHOLDER
|
|
parameter list, e.g. ``"zbw.10_001/INVENTORY"('PLACEHOLDER' = (...))`` --
|
|
sqlglot parses that shape as a function call, so the inherited
|
|
normalization silently re-cases the quoted identifier to
|
|
``"ZBW.10_001/INVENTORY"``. HANA resolves calculation-view names
|
|
case-sensitively, so the re-cased identifier no longer exists and the
|
|
query fails at execution time.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from sqlglot.dialects.postgres import Postgres
|
|
|
|
|
|
class Hana(Postgres):
|
|
"""
|
|
SAP HANA dialect.
|
|
|
|
Extends PostgreSQL but disables function-name case normalization, since
|
|
HANA calculation-view calls are quoted, case-sensitive identifiers that
|
|
sqlglot's parser treats as function names.
|
|
"""
|
|
|
|
NORMALIZE_FUNCTIONS = False
|