ASF GitHub Bot commented on DRILL-6212:

ilooner commented on a change in pull request #1319: DRILL-6212: Prevent 
recursive cast expressions
URL: https://github.com/apache/drill/pull/1319#discussion_r195306589

 File path: 
 @@ -77,4 +84,79 @@ private boolean checkComplexOutput(Project project) {
     return false;
+  @Override
+  public void onMatch(RelOptRuleCall call) {
+    final Project topProject = call.rel(0);
 Review comment:
   I'm still a little concerned about this change because lines 90 - 115 are 
copied from ProjectMergeRule, lines 119 - 124 are new, and lines 126 - 142 are 
logically equivalent except for the added call to simplifyCast. Considering the 
similarity of the code and the fact that ProjectMergeRule should do this logic 
correctly, I have a few questions.
   Is this a bug in Calcite ProjectMergeRule or in Drill? If it is a bug in 
Calcite, shouldn't we be contributing the fix there? If it is a Drill specific 
bug why is the ProjectMergeRule provided by Calcite not sufficient and why does 
it cause issues for us when a cast is used? 

This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:

> A simple join is recursing too deep in planning and eventually throwing stack 
> overflow.
> ---------------------------------------------------------------------------------------
>                 Key: DRILL-6212
>                 URL: https://issues.apache.org/jira/browse/DRILL-6212
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>    Affects Versions: 1.12.0
>            Reporter: Hanumath Rao Maduri
>            Assignee: Gautam Kumar Parai
>            Priority: Critical
>             Fix For: 1.14.0
> Create two views using following statements.
> {code}
> create view v1 as select cast(greeting as int) f from 
> dfs.`/home/mapr/data/json/temp.json`;
> create view v2 as select cast(greeting as int) f from 
> dfs.`/home/mapr/data/json/temp.json`;
> {code}
> Executing the following join query produces a stack overflow during the 
> planning phase.
> {code}
> select t1.f from dfs.tmp.v1 as t inner join dfs.tmp.v2 as t1 on cast(t.f as 
> int) = cast(t1.f as int) and cast(t.f as int) = 10 and cast(t1.f as int) = 10;
> {code}

This message was sent by Atlassian JIRA

Reply via email to