[ 
https://issues.apache.org/jira/browse/CALCITE-7642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18093891#comment-18093891
 ] 

Zhen Chen commented on CALCITE-7642:
------------------------------------

I feel you still haven't grasped my point: the example in the Jira issue 
executes successfully in PostgreSQL—there is nothing wrong with it. You need to 
describe your problem precisely and provide a minimal example demonstrating 
that while PostgreSQL executes the query successfully, the SQL generated by 
Calcite results in column name ambiguity.

> 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
>            Assignee: zzwqqq
>            Priority: Major
>              Labels: pull-request-available
>
> RelToSqlConverter can emit output column names that are distinct in a row 
> type but not distinct for the target dialect.
> Reproducer using a RelNode input:
> {code:java}
>   @Test void testCaseInsensitiveAliasesProjectJoin() {
>     final SqlDialect dialect =
>         new PostgresqlSqlDialect(
>             PostgresqlSqlDialect.DEFAULT_CONTEXT.withCaseSensitive(false));
>     final String expected = "SELECT \"t\".\"id\", \"t0\".\"ID\" AS \"ID0\"\n"
>         + "FROM (VALUES (1)) AS \"t\" (\"id\"),\n"
>         + "(VALUES (1)) AS \"t0\" (\"ID\")";
>     relFn(b -> {
>       b.values(new String[]{"id"}, 1);
>       b.values(new String[]{"ID"}, 1);
>       return b.join(JoinRelType.INNER)
>           .project(b.fields(), ImmutableList.of(), true)
>           .build();
>     }).dialect(dialect).ok(expected);
>   }
> {code}
>  
> The projection does not specify duplicate aliases. The output names are 
> inferred from the projection input fields.
> Currently, RelToSqlConverter emits:
> {code:sql}
> SELECT "t"."id", "t0"."ID"
> 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