From 9922a572b51aacae850c4da0a95c1688f29b43fe Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 21 May 2024 18:00:45 +0800 Subject: [PATCH] print phy plan in profile --- .../java/org/apache/doris/common/profile/Profile.java | 6 ++++++ .../apache/doris/common/profile/SummaryProfile.java | 10 +++++++--- .../httpv2/controller/QueryProfileController.java | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java b/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java index b9cefdd0c4aa04..da0790ff57ce06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java @@ -19,6 +19,7 @@ import org.apache.doris.common.util.ProfileManager; import org.apache.doris.common.util.RuntimeProfile; +import org.apache.doris.nereids.NereidsPlanner; import org.apache.doris.planner.Planner; import com.google.common.collect.Lists; @@ -96,6 +97,11 @@ public synchronized void updateSummary(long startTime, Map summa if (this.isFinished) { return; } + if (planner instanceof NereidsPlanner) { + summaryInfo.put(SummaryProfile.PHYSICAL_PLAN, + ((NereidsPlanner) planner).getPhysicalPlan() + .treeString().replace("\n", "\n ")); + } summaryProfile.update(summaryInfo); for (ExecutionProfile executionProfile : executionProfiles) { // Tell execution profile the start time diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java index 29d5a095823562..b72627f81c0f1c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java @@ -54,7 +54,7 @@ public class SummaryProfile { public static final String PARALLEL_FRAGMENT_EXEC_INSTANCE = "Parallel Fragment Exec Instance Num"; public static final String TRACE_ID = "Trace ID"; public static final String WORKLOAD_GROUP = "Workload Group"; - + public static final String PHYSICAL_PLAN = "Physical Plan"; // Execution Summary public static final String EXECUTION_SUMMARY_PROFILE_NAME = "Execution Summary"; public static final String ANALYSIS_TIME = "Analysis Time"; @@ -105,8 +105,12 @@ public class SummaryProfile { // These info will display on FE's web ui table, every one will be displayed as // a column, so that should not // add many columns here. Add to ExecutionSummary list. - public static final ImmutableList SUMMARY_KEYS = ImmutableList.of(PROFILE_ID, TASK_TYPE, + public static final ImmutableList SUMMARY_CAPTIONS = ImmutableList.of(PROFILE_ID, TASK_TYPE, START_TIME, END_TIME, TOTAL_TIME, TASK_STATE, USER, DEFAULT_DB, SQL_STATEMENT); + public static final ImmutableList SUMMARY_KEYS = new ImmutableList.Builder() + .addAll(SUMMARY_CAPTIONS) + .add(PHYSICAL_PLAN) + .build(); // The display order of execution summary items. public static final ImmutableList EXECUTION_SUMMARY_KEYS = ImmutableList.of( @@ -284,7 +288,7 @@ public void prettyPrint(StringBuilder builder) { public Map getAsInfoStings() { Map infoStrings = Maps.newHashMap(); - for (String header : SummaryProfile.SUMMARY_KEYS) { + for (String header : SummaryProfile.SUMMARY_CAPTIONS) { infoStrings.put(header, summaryProfile.getInfoString(header)); } return infoStrings; diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/QueryProfileController.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/QueryProfileController.java index 3eb8180c53dfd4..614438e7714b0f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/QueryProfileController.java +++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/QueryProfileController.java @@ -69,7 +69,7 @@ public Object query() { private void addFinishedQueryInfo(Map result) { List> finishedQueries = ProfileManager.getInstance().getAllQueries(); List columnHeaders = Lists.newLinkedList(); - columnHeaders.addAll(SummaryProfile.SUMMARY_KEYS); + columnHeaders.addAll(SummaryProfile.SUMMARY_CAPTIONS); result.put("column_names", columnHeaders); // The first column is profile id, which is also a href column @@ -79,7 +79,7 @@ private void addFinishedQueryInfo(Map result) { for (List row : finishedQueries) { Map rowMap = new HashMap<>(); - for (int i = 0; i < row.size(); ++i) { + for (int i = 0; i < columnHeaders.size(); ++i) { rowMap.put(columnHeaders.get(i), row.get(i)); }