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 3a6344e554..0bf24e0c28 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 @@ -361,8 +361,6 @@ public class AnalysisManager implements Writable { } recordAnalysisJob(jobInfo); analysisJobIdToTaskMap.put(jobInfo.jobId, analysisTaskInfos); - // TODO: maybe we should update table stats only when all task succeeded. - updateTableStats(jobInfo); if (!jobInfo.scheduleType.equals(ScheduleType.PERIOD)) { analysisTaskInfos.values().forEach(taskExecutor::submitTask); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java index 04b9e3486b..f500ab09f0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java @@ -141,6 +141,7 @@ public class TableStatsMeta implements Writable { colStatsMeta.updatedTime = updatedTime; colStatsMeta.analysisType = analyzedJob.analysisType; colStatsMeta.analysisMethod = analyzedJob.analysisMethod; + colStatsMeta.jobType = analyzedJob.jobType; } } jobType = analyzedJob.jobType; diff --git a/regression-test/suites/statistics/analyze_stats.groovy b/regression-test/suites/statistics/analyze_stats.groovy index e09cfd8118..11b49ce938 100644 --- a/regression-test/suites/statistics/analyze_stats.groovy +++ b/regression-test/suites/statistics/analyze_stats.groovy @@ -1462,4 +1462,43 @@ PARTITION `p599` VALUES IN (599) assertEquals("\'name1\'", result[0][6]) assertEquals("\'name3\'", result[0][7]) + // Test trigger type. + sql """DROP DATABASE IF EXISTS trigger""" + sql """CREATE DATABASE IF NOT EXISTS trigger""" + sql """USE trigger""" + sql """ + CREATE TABLE if not exists trigger_test( + `id` int NOT NULL, + `name` VARCHAR(152) + )ENGINE=OLAP + DUPLICATE KEY(`id`) + COMMENT "OLAP" + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ( + "replication_num" = "1" + ); + """ + sql """insert into trigger_test values(1,'name1') """ + sql """analyze database trigger PROPERTIES("use.auto.analyzer"="true")""" + + int i = 0; + for (0; i < 10; i++) { + def result = sql """show column stats trigger_test""" + if (result.size() != 2) { + Thread.sleep(1000) + continue; + } + assertEquals(result[0][10], "SYSTEM") + assertEquals(result[1][10], "SYSTEM") + break + } + if (i < 10) { + sql """analyze table trigger_test with sync""" + def result = sql """show column stats trigger_test""" + assertEquals(result.size(), 2) + assertEquals(result[0][10], "MANUAL") + assertEquals(result[1][10], "MANUAL") + } + sql """DROP DATABASE IF EXISTS trigger""" + }