gortiz commented on code in PR #13306: URL: https://github.com/apache/pinot/pull/13306#discussion_r1627085061
########## pinot-query-planner/src/main/java/org/apache/pinot/query/planner/logical/PinotLogicalQueryPlanner.java: ########## @@ -51,70 +48,72 @@ private PinotLogicalQueryPlanner() { * Converts a Calcite {@link RelRoot} into a Pinot {@link SubPlan}. */ public static SubPlan makePlan(RelRoot relRoot) { - PlanNode rootNode = relNodeToStageNode(relRoot.rel); - QueryPlanMetadata metadata = - new QueryPlanMetadata(RelToPlanNodeConverter.getTableNamesFromRelRoot(relRoot.rel), relRoot.fields); + PlanNode rootNode = relNodeToPlanNode(relRoot.rel); + PlanFragment rootFragment = planNodeToPlanFragment(rootNode); + return new SubPlan(rootFragment, + new SubPlanMetadata(RelToPlanNodeConverter.getTableNamesFromRelRoot(relRoot.rel), relRoot.fields), List.of()); + // TODO: Currently we don't support multiple sub-plans. Revisit the following logic when we add the support. // Fragment the stage tree into multiple SubPlans. - SubPlanFragmenter.Context subPlanContext = new SubPlanFragmenter.Context(); - subPlanContext._subPlanIdToRootNodeMap.put(0, rootNode); - subPlanContext._subPlanIdToMetadataMap.put(0, new SubPlanMetadata(metadata.getTableNames(), metadata.getFields())); - rootNode.visit(SubPlanFragmenter.INSTANCE, subPlanContext); - - Map<Integer, SubPlan> subPlanMap = new HashMap<>(); - for (Map.Entry<Integer, PlanNode> subPlanEntry : subPlanContext._subPlanIdToRootNodeMap.entrySet()) { - int subPlanId = subPlanEntry.getKey(); - PlanNode subPlanRoot = subPlanEntry.getValue(); - - // Fragment the SubPlan into multiple PlanFragments. - PlanFragmenter fragmenter = new PlanFragmenter(); - PlanFragmenter.Context fragmenterContext = fragmenter.createContext(); - subPlanRoot = subPlanRoot.visit(fragmenter, fragmenterContext); - Int2ObjectOpenHashMap<PlanFragment> planFragmentMap = fragmenter.getPlanFragmentMap(); - Int2ObjectOpenHashMap<IntList> childPlanFragmentIdsMap = fragmenter.getChildPlanFragmentIdsMap(); - - // Sub plan root needs to send final results back to the Broker - // TODO: Should be SINGLETON (currently SINGLETON has to be local, so use BROADCAST_DISTRIBUTED instead) - MailboxSendNode subPlanRootSenderNode = - new MailboxSendNode(subPlanRoot.getPlanFragmentId(), subPlanRoot.getDataSchema(), 0, - RelDistribution.Type.BROADCAST_DISTRIBUTED, PinotRelExchangeType.getDefaultExchangeType(), null, null, - false, false); - subPlanRootSenderNode.addInput(subPlanRoot); - PlanFragment planFragment1 = new PlanFragment(1, subPlanRootSenderNode, new ArrayList<>()); - planFragmentMap.put(1, planFragment1); - for (Int2ObjectMap.Entry<IntList> entry : childPlanFragmentIdsMap.int2ObjectEntrySet()) { - PlanFragment planFragment = planFragmentMap.get(entry.getIntKey()); - List<PlanFragment> childPlanFragments = planFragment.getChildren(); - IntListIterator childPlanFragmentIdIterator = entry.getValue().iterator(); - while (childPlanFragmentIdIterator.hasNext()) { - childPlanFragments.add(planFragmentMap.get(childPlanFragmentIdIterator.nextInt())); - } - } - MailboxReceiveNode rootReceiveNode = - new MailboxReceiveNode(0, subPlanRoot.getDataSchema(), subPlanRoot.getPlanFragmentId(), - RelDistribution.Type.BROADCAST_DISTRIBUTED, PinotRelExchangeType.getDefaultExchangeType(), null, null, - false, false, subPlanRootSenderNode); - PlanFragment rootPlanFragment = new PlanFragment(0, rootReceiveNode, Collections.singletonList(planFragment1)); - SubPlan subPlan = new SubPlan(rootPlanFragment, subPlanContext._subPlanIdToMetadataMap.get(0), new ArrayList<>()); - subPlanMap.put(subPlanId, subPlan); - } - for (Map.Entry<Integer, List<Integer>> subPlanToChildrenEntry : subPlanContext._subPlanIdToChildrenMap.entrySet()) { - int subPlanId = subPlanToChildrenEntry.getKey(); - List<Integer> subPlanChildren = subPlanToChildrenEntry.getValue(); - for (int subPlanChild : subPlanChildren) { - subPlanMap.get(subPlanId).getChildren().add(subPlanMap.get(subPlanChild)); - } - } - return subPlanMap.get(0); +// SubPlanFragmenter.Context subPlanContext = new SubPlanFragmenter.Context(); +// subPlanContext._subPlanIdToRootNodeMap.put(0, rootNode); +// subPlanContext._subPlanIdToMetadataMap.put(0, +// new SubPlanMetadata(RelToPlanNodeConverter.getTableNamesFromRelRoot(relRoot.rel), relRoot.fields)); +// rootNode.visit(SubPlanFragmenter.INSTANCE, subPlanContext); +// +// Map<Integer, SubPlan> subPlanMap = new HashMap<>(); +// for (Map.Entry<Integer, PlanNode> subPlanEntry : subPlanContext._subPlanIdToRootNodeMap.entrySet()) { +// SubPlan subPlan = +// new SubPlan(planNodeToPlanFragment(subPlanEntry.getValue()), subPlanContext._subPlanIdToMetadataMap.get(0), +// new ArrayList<>()); +// subPlanMap.put(subPlanEntry.getKey(), subPlan); +// } +// for (Map.Entry<Integer, List<Integer>> subPlanToChildrenEntry : subPlanContext._subPlanIdToChildrenMap.entrySet +// ()) { +// int subPlanId = subPlanToChildrenEntry.getKey(); +// List<Integer> subPlanChildren = subPlanToChildrenEntry.getValue(); +// for (int subPlanChild : subPlanChildren) { +// subPlanMap.get(subPlanId).getChildren().add(subPlanMap.get(subPlanChild)); +// } +// } +// return subPlanMap.get(0); Review Comment: Shouldn't we remove this code? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org