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)

Reply via email to