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

Julian Hyde commented on CALCITE-3417:
--------------------------------------

When referencing a field for a join, you have to tell RelBuilder how many 
inputs there are going to be. Then it can get the offset of the field within 
the row correct. That's why it refuses to see "t" - it is only looking at the 
top entry of the stack, 'a', because it assumes that you are going to use 1 
input.

I acknowledge that the error message is very unhelpful. 

> 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)

Reply via email to