From 0eea19403e22fda3f887f94f35bde6d211d1aa43 Mon Sep 17 00:00:00 2001 From: AKIRA <33112463+Kikyou1997@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:08:10 +0800 Subject: [PATCH] [fix](stats) analyze specific column only if indicate column in analyze stmt (#25660) --- .../apache/doris/statistics/AnalysisManager.java | 4 +++- .../suites/statistics/analyze_stats.groovy | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java index 01c4e3c25b..ca17ca7b87 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java @@ -485,7 +485,9 @@ public class AnalysisManager extends Daemon implements Writable { } if (analysisType == AnalysisType.FUNDAMENTALS) { - return table.findReAnalyzeNeededPartitions(); + Map> result = table.findReAnalyzeNeededPartitions(); + result.keySet().retainAll(columnNames); + return result; } return columnToPartitions; diff --git a/regression-test/suites/statistics/analyze_stats.groovy b/regression-test/suites/statistics/analyze_stats.groovy index 5f6735c7fb..71962b9481 100644 --- a/regression-test/suites/statistics/analyze_stats.groovy +++ b/regression-test/suites/statistics/analyze_stats.groovy @@ -1110,4 +1110,18 @@ PARTITION `p599` VALUES IN (599) sql """ANALYZE TABLE test_meta_management WITH SYNC""" afterDropped = sql """SHOW TABLE STATS test_meta_management""" assert check_column(afterDropped, "[col1, col2, col3]") + + // test analyze specific column + sql """CREATE TABLE test_analyze_specific_column (col1 varchar(11451) not null, col2 int not null, col3 int not null) + DUPLICATE KEY(col1) + DISTRIBUTED BY HASH(col1) + BUCKETS 3 + PROPERTIES( + "replication_num"="1" + );""" + sql """insert into test_analyze_specific_column values('%.', 2, 1);""" + sql """ANALYZE TABLE test_analyze_specific_column(col2) WITH SYNC""" + result = sql """SHOW COLUMN STATS test_analyze_specific_column""" + assert result.size() == 1 + }