From d5c0781fdcb823bac2e321731bcbe5cd2b657a17 Mon Sep 17 00:00:00 2001 From: Jibing Li Date: Tue, 19 Mar 2024 10:18:27 +0800 Subject: [PATCH] Support auto analyze mv --- .../main/java/org/apache/doris/catalog/OlapTable.java | 11 +++++++++++ .../doris/statistics/StatisticsAutoCollector.java | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index 4ac54827ceee6f..4a7f4a837c24cb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -762,6 +762,17 @@ public List getSchemaAllIndexes(boolean full) { return columns; } + public List getMvColumns(boolean full) { + List columns = Lists.newArrayList(); + for (Long indexId : indexIdToMeta.keySet()) { + if (indexId == baseIndexId) { + continue; + } + columns.addAll(getSchemaByIndexId(indexId, full)); + } + return columns; + } + public List getBaseSchemaKeyColumns() { return getKeyColumnsByIndexId(baseIndexId); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java index 43ee1af20327ae..41765b14c3022e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java @@ -18,6 +18,7 @@ package org.apache.doris.statistics; import org.apache.doris.analysis.TableName; +import org.apache.doris.catalog.Column; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.TableIf; @@ -123,6 +124,7 @@ protected Optional>> fetchJobFromMap(Map columns, JobPriority priority) throws DdlException { + appendMvColumn(table, columns); columns = columns.stream().filter(c -> StatisticsUtil.needAnalyzeColumn(table, c)).collect(Collectors.toSet()); appendPartitionColumns(table, columns); if (columns.isEmpty()) { @@ -145,6 +147,15 @@ protected void appendPartitionColumns(TableIf table, Set columns) { } } + protected void appendMvColumn(TableIf table, Set columns) { + if (!(table instanceof OlapTable)) { + return; + } + OlapTable olapTable = (OlapTable) table; + Set mvColumns = olapTable.getMvColumns(false).stream().map(Column::getName).collect(Collectors.toSet()); + columns.addAll(mvColumns); + } + protected boolean supportAutoAnalyze(TableIf tableIf) { if (tableIf == null) { return false;