[
https://issues.apache.org/jira/browse/FLINK-3504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15171966#comment-15171966
]
ASF GitHub Bot commented on FLINK-3504:
---------------------------------------
Github user fhueske commented on the pull request:
https://github.com/apache/flink/pull/1734#issuecomment-190252285
Returning `false` does not imply that no plan can be found. It just means
that this branch of the plan space cannot be translated, but other rules such
as the rule for extracting expressions out of join conditions can lead to
branches that result in valid plans.
So we should not throw an exception in this rule (in fact in no rule).
However, we can catch the exception when Calcite did not find a plan and return
a more meaningful exception there.
> Join fails while have expression inside join condition.
> -------------------------------------------------------
>
> Key: FLINK-3504
> URL: https://issues.apache.org/jira/browse/FLINK-3504
> Project: Flink
> Issue Type: Bug
> Components: Table API
> Reporter: Chengxiang Li
> Assignee: Fabian Hueske
>
> {noformat}
> val ds1 = CollectionDataSets.get3TupleDataSet(env).as('a, 'b, 'c)
> val ds2 = CollectionDataSets.get5TupleDataSet(env).as('d, 'e, 'f, 'g, 'h)
> val joinT = ds1.join(ds2).filter('a + 3 === 'd).select('c, 'g)
> {noformat}
> This query would throw exception:
> {noformat}
> Caused by: org.apache.flink.api.table.TableException: Joins should have at
> least one equality condition
> at
> org.apache.flink.api.table.plan.rules.dataset.DataSetJoinRule.convert(DataSetJoinRule.scala:57)
> at
> org.apache.calcite.rel.convert.ConverterRule.onMatch(ConverterRule.java:116)
> at
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:228)
> ... 44 more
> {noformat}
> There are 2 issues here:
> # DataSetJoinRule does not support expression inside join condition.
> # JoinPushExpressionsRulewould add a Project to calculate expression value
> before Join, so the join condition does not include expression any more,
> however, it's not returned after the logical optimization.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)