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 2019/10/15 21:24:00 UTC

[jira] [Updated] (CALCITE-3417) The alias is invalid in RelBuilder#join(JoinRelType, RexNode)

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

Julian Hyde updated CALCITE-3417:
---------------------------------
    Description: 
bad code:
{code}
RelBuilder relBuilder = RelBuilder.create(config);
RelNode table = relBuilder
 .scan("testdb","travelrecord")
 .as("t")
 .scan("testdb","address")
 .as("a")
 .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field("t","id"),
 relBuilder.field("a","id")))
 .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
 .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
 .build();
{code}

occur exception:
{noformat}
java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}]java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}] at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:511) at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:487)
{noformat}
 

but  it is ok :
{code}
RelBuilder relBuilder = RelBuilder.create(config);
RelNode table = relBuilder
 .scan("testdb","travelrecord")
 .as("t")
 .scan("testdb","address")
 .as("a")
 .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field({color:#de350b}2{color},"t","id"),
 relBuilder.field(2,"a","id")))
 .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
 .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
 .build();
{code}

  was:
bad code:

RelBuilder relBuilder = RelBuilder.create(config);
RelNode table = relBuilder
 .scan("testdb","travelrecord")
 .as("t")
 .scan("testdb","address")
 .as("a")
 .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field("t","id"),
 relBuilder.field("a","id")))
 .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
 .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
 .build();

 

occur exception:

java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}]java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}] at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:511) at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:487)

 

but  it is ok :

RelBuilder relBuilder = RelBuilder.create(config);
RelNode table = relBuilder
 .scan("testdb","travelrecord")
 .as("t")
 .scan("testdb","address")
 .as("a")
 .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field({color:#de350b}2{color},"t","id"),
 relBuilder.field(2,"a","id")))
 .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
 .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
 .build();


> The alias is invalid in RelBuilder#join(JoinRelType, RexNode)
> -------------------------------------------------------------
>
>                 Key: CALCITE-3417
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3417
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.20.0, 1.21.0
>            Reporter: jamie12221
>            Priority: Trivial
>
> bad code:
> {code}
> RelBuilder relBuilder = RelBuilder.create(config);
> RelNode table = relBuilder
>  .scan("testdb","travelrecord")
>  .as("t")
>  .scan("testdb","address")
>  .as("a")
>  .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field("t","id"),
>  relBuilder.field("a","id")))
>  .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
>  .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
>  .build();
> {code}
> occur exception:
> {noformat}
> java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}]java.lang.IllegalArgumentException: no aliased field found; fields are: [\{aliases=[address, a],fieldName=id}, \{aliases=[address, a],fieldName=addressname}] at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:511) at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:487)
> {noformat}
>  
> but  it is ok :
> {code}
> RelBuilder relBuilder = RelBuilder.create(config);
> RelNode table = relBuilder
>  .scan("testdb","travelrecord")
>  .as("t")
>  .scan("testdb","address")
>  .as("a")
>  .join(JoinRelType.INNER, relBuilder.equals(relBuilder.field({color:#de350b}2{color},"t","id"),
>  relBuilder.field(2,"a","id")))
>  .filter(relBuilder.and(relBuilder.equals(relBuilder.field(1,0,"id"),relBuilder.literal(1))))
>  .project(relBuilder.field(1,0,"id"), relBuilder.field(1,0,"user_id"))
>  .build();
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)