HanumathRao 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_r209274566
 
 

 ##########
 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:
   Done.

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


With regards,
Apache Git Services

Reply via email to