From fe942eaf44bff2df535dc09bb089e1aba0169ec4 Mon Sep 17 00:00:00 2001 From: LiBinfeng <46676950+LiBinfeng-01@users.noreply.github.com> Date: Mon, 5 Jun 2023 13:05:15 +0800 Subject: [PATCH] [Fix](Nereids) Fix minidump using put all of hashmap (#20268) Minidump file wants to get information as much as possible, but when close the switch, these methods should not be called after refactor pr: #20049. Other place of doing more jobs after add Minidump feature also be checked. --- .../doris/nereids/jobs/cascades/DeriveStatsJob.java | 8 ++++++-- .../apache/doris/nereids/stats/StatsCalculator.java | 13 ++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java index 639e072da7..6ff01f278d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java @@ -28,6 +28,7 @@ import org.apache.doris.nereids.metrics.consumer.LogConsumer; import org.apache.doris.nereids.metrics.event.StatsStateEvent; import org.apache.doris.nereids.stats.StatsCalculator; import org.apache.doris.nereids.trees.expressions.CTEId; +import org.apache.doris.qe.ConnectContext; import org.apache.doris.statistics.Statistics; import java.util.HashMap; @@ -107,10 +108,13 @@ public class DeriveStatsJob extends Job { cteIdToStats); STATS_STATE_TRACER.log(StatsStateEvent.of(groupExpression, groupExpression.getOwnerGroup().getStatistics())); - context.getCascadesContext().getConnectContext().getTotalColumnStatisticMap() + if (ConnectContext.get().getSessionVariable().isEnableMinidump() + && !ConnectContext.get().getSessionVariable().isPlayNereidsDump()) { + context.getCascadesContext().getConnectContext().getTotalColumnStatisticMap() .putAll(statsCalculator.getTotalColumnStatisticMap()); - context.getCascadesContext().getConnectContext().getTotalHistogramMap() + context.getCascadesContext().getConnectContext().getTotalHistogramMap() .putAll(statsCalculator.getTotalHistogramMap()); + } } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java index 3932a2993f..b976a4196d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java @@ -104,6 +104,7 @@ import org.apache.doris.nereids.trees.plans.physical.PhysicalUnion; import org.apache.doris.nereids.trees.plans.physical.PhysicalWindow; import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanVisitor; import org.apache.doris.nereids.types.DataType; +import org.apache.doris.qe.ConnectContext; import org.apache.doris.statistics.ColumnStatistic; import org.apache.doris.statistics.ColumnStatisticBuilder; import org.apache.doris.statistics.Histogram; @@ -576,11 +577,17 @@ public class StatsCalculator extends DefaultPlanVisitor { new ColumnStatisticBuilder(cache).setHistogram(histogram); columnStatisticMap.put(slotReference, columnStatisticBuilder.build()); cache = columnStatisticBuilder.build(); - totalHistogramMap.put(table.getName() + ":" + colName, histogram); + if (ConnectContext.get().getSessionVariable().isEnableMinidump() + && !ConnectContext.get().getSessionVariable().isPlayNereidsDump()) { + totalHistogramMap.put(table.getName() + ":" + colName, histogram); + } } columnStatisticMap.put(slotReference, cache); - totalColumnStatisticMap.put(table.getName() + ":" + colName, cache); - totalHistogramMap.put(table.getName() + colName, histogram); + if (ConnectContext.get().getSessionVariable().isEnableMinidump() + && !ConnectContext.get().getSessionVariable().isPlayNereidsDump()) { + totalColumnStatisticMap.put(table.getName() + ":" + colName, cache); + totalHistogramMap.put(table.getName() + colName, histogram); + } } return new Statistics(rowCount, columnStatisticMap); }