From 46cb39cf3442f2d09619c13ff6781d1a9c9012e9 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Fri, 16 Aug 2024 17:08:09 +0800 Subject: [PATCH] [enhance](mtmv)refresh hms table before run mtmv task (#38212) There are some caches in the HMS catalog, which can result in the inability to maintain consistency with Hive side data even after a successful refresh of the materialized view. In this PR, the cache of relevant HMS tables will be cleared before refreshing the materialized view to solve this problem --- .../apache/doris/job/extensions/mtmv/MTMVTask.java | 4 ++-- .../suites/mtmv_p0/test_hive_refresh_mtmv.groovy | 13 +------------ 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java index 0207301c2d2f64..ae49759b54c7c4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java @@ -173,7 +173,7 @@ public void run() throws JobException { this.relation = MTMVPlanUtil.generateMTMVRelation(mtmv, ctx); // Now, the MTMV first ensures consistency with the data in the cache. // To be completely consistent with hive, you need to manually refresh the cache - // refreshHmsTable(); + refreshHmsTable(); if (mtmv.getMvPartitionInfo().getPartitionType() != MTMVPartitionType.SELF_MANAGE) { MTMVPartitionUtil.alignMvPartition(mtmv); } @@ -282,7 +282,7 @@ public void before() throws JobException { } /** - * // Before obtaining information from hmsTable, refresh to ensure that the data is up-to-date + * Before obtaining information from hmsTable, refresh to ensure that the data is up-to-date * * @throws AnalysisException * @throws DdlException diff --git a/regression-test/suites/mtmv_p0/test_hive_refresh_mtmv.groovy b/regression-test/suites/mtmv_p0/test_hive_refresh_mtmv.groovy index ac19ecc0605664..75ec61a518b060 100644 --- a/regression-test/suites/mtmv_p0/test_hive_refresh_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_hive_refresh_mtmv.groovy @@ -104,9 +104,6 @@ suite("test_hive_refresh_mtmv", "p0,external,hive,external_docker,external_docke // hive data change logger.info("hive sql: " + insert_str) hive_docker """ ${insert_str} """ - sql """ - REFRESH catalog ${catalog_name} - """ sql """ REFRESH MATERIALIZED VIEW ${mvName} auto """ @@ -120,9 +117,6 @@ suite("test_hive_refresh_mtmv", "p0,external,hive,external_docker,external_docke """ logger.info("hive sql: " + add_partition2021_str) hive_docker """ ${add_partition2021_str} """ - sql """ - REFRESH catalog ${catalog_name} - """ sql """ REFRESH MATERIALIZED VIEW ${mvName} auto """ @@ -139,9 +133,6 @@ suite("test_hive_refresh_mtmv", "p0,external,hive,external_docker,external_docke """ logger.info("hive sql: " + drop_partition2021_str) hive_docker """ ${drop_partition2021_str} """ - sql """ - REFRESH catalog ${catalog_name} - """ sql """ REFRESH MATERIALIZED VIEW ${mvName} auto """ @@ -157,9 +148,6 @@ suite("test_hive_refresh_mtmv", "p0,external,hive,external_docker,external_docke """ logger.info("hive sql: " + rename_column_str) hive_docker """ ${rename_column_str} """ - sql """ - REFRESH catalog ${catalog_name} - """ sql """ REFRESH MATERIALIZED VIEW ${mvName} complete """ @@ -172,6 +160,7 @@ suite("test_hive_refresh_mtmv", "p0,external,hive,external_docker,external_docke """ logger.info("hive sql: " + recover_column_str) hive_docker """ ${recover_column_str} """ + // schema change need refresh catalog sql """ REFRESH catalog ${catalog_name} """