gortiz commented on code in PR #14507:
URL: https://github.com/apache/pinot/pull/14507#discussion_r1895382286
##########
pinot-query-planner/src/main/java/org/apache/pinot/query/planner/explain/PhysicalExplainPlanVisitor.java:
##########
@@ -212,14 +215,22 @@ public StringBuilder visitMailboxSend(MailboxSendNode
node, Context context) {
private StringBuilder appendMailboxSend(MailboxSendNode node, Context
context) {
appendInfo(node, context);
- int receiverStageId = node.getReceiverStageId();
- List<MailboxInfo> receiverMailboxInfos =
-
_dispatchableSubPlan.getQueryStageList().get(node.getStageId()).getWorkerMetadataList().get(context._workerId)
- .getMailboxInfosMap().get(receiverStageId).getMailboxInfos();
+ List<Stream<String>> perStageDescriptions = new ArrayList<>();
+ // This iterator is guaranteed to be sorted by stageId
+ for (Integer receiverStageId : node.getReceiverStageIds()) {
+ List<MailboxInfo> receiverMailboxInfos =
+
_dispatchableSubPlan.getQueryStageList().get(node.getStageId()).getWorkerMetadataList().get(context._workerId)
+ .getMailboxInfosMap().get(receiverStageId).getMailboxInfos();
+ // Sort to ensure print order
+ Stream<String> stageDescriptions = receiverMailboxInfos.stream()
+ .sorted(Comparator.comparingInt(MailboxInfo::getPort))
+ .map(v -> "[" + receiverStageId + "]@" + v);
+ perStageDescriptions.add(stageDescriptions);
+ }
context._builder.append("->");
- // Sort to ensure print order
- String receivers =
receiverMailboxInfos.stream().sorted(Comparator.comparingInt(MailboxInfo::getPort))
- .map(v -> "[" + receiverStageId + "]@" +
v).collect(Collectors.joining(",", "{", "}"));
+ String receivers = perStageDescriptions.stream()
+ .flatMap(Function.identity())
+ .collect(Collectors.joining(",", "{", "}"));
Review Comment:
Unless I'm wrong the format didn't actually change that much. Basically
before we had a single stage we sent to and now we have many. Anyway, the
format of this explain plan is not described in deep in the documentation.
Documentation just show an example without actually explaining it. See:
1.
https://docs.pinot.apache.org/users/user-guide-query/query-syntax/explain-plan-multi-stage#explain-implementation-plan
2.
https://docs.pinot.apache.org/users/user-guide-query/explain-plan-1#workers-plan
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]