zzwqqq created CALCITE-7642:
-------------------------------
Summary: RelToSqlConverter may generate duplicate output column
names for case-insensitive dialects
Key: CALCITE-7642
URL: https://issues.apache.org/jira/browse/CALCITE-7642
Project: Calcite
Issue Type: Bug
Components: core
Reporter: zzwqqq
RelToSqlConverter can emit output column names that are distinct in a row type
but not distinct for the target dialect.
Reproducer:
Use a case-insensitive PostgreSQL dialect:
{code:java}
new PostgresqlSqlDialect(
PostgresqlSqlDialect.DEFAULT_CONTEXT.withCaseSensitive(false)){code}
Input SQL:
{code:sql}
SELECT *
FROM (VALUES (1)) AS "t" ("id")
JOIN (VALUES (1)) AS "t0" ("ID") ON TRUE
{code}
Current output:
{code:java}
SELECT "t"."id", "t0"."ID"
FROM (VALUES (1)) AS "t" ("id"),
(VALUES (1)) AS "t0" ("ID"){code}
The output column names are "id" and "ID", which are duplicates for a
case-insensitive dialect.
Expected output:
{code:sql}
SELECT "t"."id", "t0"."ID" AS "ID0"
FROM (VALUES (1)) AS "t" ("id"),
(VALUES (1)) AS "t0" ("ID"){code}
I think RelToSqlConverter should uniquify generated output names using the
target dialect's case-sensitivity.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)