You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2022/05/09 18:50:00 UTC

[jira] [Commented] (CALCITE-5144) table alias is lost by SqlToRelConverter

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

Julian Hyde commented on CALCITE-5144:
--------------------------------------

I don’t think this is a bug. The {{RelNode}} representation doesn’t contain names and that is what makes it powerful and flexible. Therefore {{SqlToRelConverter}} should not attempt to preserve names.

You seem to suggest that this is a problem for hints. Then it’s something that the hints system needs to deal with. Perhaps switch to position-based hints during sql-to-rel.

Attaching names as annotations/hints seems to be the wrong direction to go, because it will be brittle and will create two different code paths - one for {{RelNode}} instances that came from SQL via {{SqlToRelConverter}} and a different one for {{RelNode}} instances that were created manually.

> table alias is lost by SqlToRelConverter
> ----------------------------------------
>
>                 Key: CALCITE-5144
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5144
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: xuyang
>            Priority: Major
>
> I found that in SqlToRelConverter#convertFrom, "AS" only cares about the first operand and just ignore the second operand, and this behavior will cause the information of the table alias lost.
> The simple SQL is :
> {code:java}
> // code placeholder
> select * from (select * from emp) t1 {code}
> The "t1" will be lost in the final RelNode tree. I think we can retain this alias information in the RelNode by some way.
> The real scenarios that require table aliases are Join Hint on subquery just like:
> {code:java}
> // code placeholder
> SELECT /*+ USE_NL(v2) */ v2.a
> FROM (select * from test1) v2 join test2 ON v2.a = test2.a {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)