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

ASF GitHub Bot commented on DRILL-6671:
---------------------------------------

vvysotskyi commented on a change in pull request #1426: DRILL-6671: Multi level 
lateral unnest join is throwing an exception …
URL: https://github.com/apache/drill/pull/1426#discussion_r209177260
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/LateralUnnestRowIDVisitor.java
 ##########
 @@ -59,16 +66,55 @@ public Prel visitPrel(Prel prel, Boolean isRightOfLateral) 
throws RuntimeExcepti
   }
 
   @Override
-  public Prel visitLateral(LateralJoinPrel prel, Boolean value) throws 
RuntimeException {
+  public Prel visitLateral(LateralJoinPrel prel, Boolean isRightOfLateral) 
throws RuntimeException {
     List<RelNode> children = Lists.newArrayList();
-    children.add(((Prel)prel.getInput(0)).accept(this, value));
+    children.add(((Prel) prel.getInput(0)).accept(this, isRightOfLateral));
     children.add(((Prel) prel.getInput(1)).accept(this, true));
 
-    return (Prel) prel.copy(prel.getTraitSet(), children);
+    if (!isRightOfLateral) {
+      return (Prel) prel.copy(prel.getTraitSet(), children);
+    } else {
+      //Adjust the column numbering due to an additional column 
"$drill_implicit_field$" is added to the inputs.
+      Map<Integer, Integer> requiredColsMap = new HashMap<>();
+      for (Integer corrColIndex : prel.getRequiredColumns()) {
+        requiredColsMap.put(corrColIndex, corrColIndex + 1);
+      }
+      ImmutableBitSet requiredColumns = prel.getRequiredColumns().shift(1);
+
+      CorrelationId corrId = prel.getCluster().createCorrel();
+      RexCorrelVariable rexCorrel =
+              (RexCorrelVariable) prel.getCluster().getRexBuilder().makeCorrel(
+                      children.get(0).getRowType(),
+                      corrId);
+      RelNode rightChild = children.get(1).accept(
+              new CorrelateVarReplacer(
+                      new 
ProjectCorrelateTransposeRule.RexFieldAccessReplacer(corrId,
 
 Review comment:
   The first argument in `RexFieldAccessReplacer` is a `CorrelationId` which 
should be replaced, but you have specified the new one. 
   Please replace here `corrId` with `prel.getCorrelationId()`.

----------------------------------------------------------------
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:
us...@infra.apache.org


> Multi level lateral unnest join is throwing an exception during materializing 
> the plan.
> ---------------------------------------------------------------------------------------
>
>                 Key: DRILL-6671
>                 URL: https://issues.apache.org/jira/browse/DRILL-6671
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning &amp; Optimization
>    Affects Versions: 1.15.0
>            Reporter: Hanumath Rao Maduri
>            Assignee: Hanumath Rao Maduri
>            Priority: Major
>
> testMultiUnnestAtSameLevel in TestE2EUnnestAndLateral is throwing an 
> execution in Materializer.java. This is due to incorrect matching of Unnest 
> and Lateral join. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to