[ 
https://issues.apache.org/jira/browse/CALCITE-7505?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

krooswu reassigned CALCITE-7505:
--------------------------------

    Assignee: krooswu

> RelToSqlConverter produces duplicate FROM aliases for correlated subqueries 
> when hasImplicitTableAlias() is true
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-7505
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7505
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.39.0
>            Reporter: Haris Sattar
>            Assignee: krooswu
>            Priority: Major
>
> When using a dialect where hasImplicitTableAlias() returns true (e.g., 
> PrestoSqlDialect), SqlImplementor.Result.asSelect() bypasses alias 
> uniquification and hardcodes AS "t" for every FROM clause. For correlated 
> subqueries, this produces ambiguous SQL where both the outer and inner tables 
> share the same alias, causing the correlation reference to resolve to the 
> wrong table.
> *Example:*
> Input RelNode tree: a correlated EXISTS subquery with two table scans 
> (table_a outer, table_b inner), correlated on column "id".
> Expected SQL output:
> SELECT "id", SUM("amount") AS "total"
> FROM "table_a" AS "t"
> WHERE EXISTS (
>   SELECT * FROM "table_b" AS "t0"
>   WHERE "id" = "t"."id"
> )
> GROUP BY "id"
> *Actual SQL output:*
> SELECT "id", SUM("amount") AS "total"
> FROM "table_a" AS "t"
> WHERE EXISTS (
>   SELECT * FROM "table_b" AS "t"
>   WHERE "id" = "t"."id"
> )
> GROUP BY "id"
> Both tables get AS "t". The correlation reference "t"."id" is ambiguous — SQL 
> scoping resolves it to the inner table, making the condition WHERE "id" = 
> "id" (always true). The subquery never filters anything. Wrong results, no 
> error.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to