From ad75d30a6c6ea74f0ce818878e674108fd8da83c Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Thu, 20 Jun 2024 18:31:15 +0800 Subject: [PATCH] [enhance](mtmv)when calculating the availability of MTMV, no longer consider refresh state (#36507) Before the modification, if the last refresh of the materialized view failed, the entire materialized view cannot be used for transparent rewriting. In fact, many partitions may be available, so this modification was made --- .../org/apache/doris/mtmv/MTMVRewriteUtil.java | 4 ++-- .../apache/doris/mtmv/MTMVRewriteUtilTest.java | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRewriteUtil.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRewriteUtil.java index 03a1aefeba1870..209fd5da0f660c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRewriteUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVRewriteUtil.java @@ -62,8 +62,8 @@ public static Collection getMTMVCanRewritePartitions(MTMV mtmv, Conne return res; } // check mv is normal - if (!(mtmv.getStatus().getState() == MTMVState.NORMAL - && mtmv.getStatus().getRefreshState() == MTMVRefreshState.SUCCESS)) { + if (mtmv.getStatus().getState() != MTMVState.NORMAL + || mtmv.getStatus().getRefreshState() == MTMVRefreshState.INIT) { return res; } Map> partitionMappings = null; diff --git a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVRewriteUtilTest.java b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVRewriteUtilTest.java index 864478933c0f14..40797760b704da 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVRewriteUtilTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVRewriteUtilTest.java @@ -256,7 +256,20 @@ public void testGetMTMVCanRewritePartitionsRefreshStateAbnormal() { }; Collection mtmvCanRewritePartitions = MTMVRewriteUtil .getMTMVCanRewritePartitions(mtmv, ctx, currentTimeMills); - Assert.assertEquals(0, mtmvCanRewritePartitions.size()); + Assert.assertEquals(1, mtmvCanRewritePartitions.size()); } + @Test + public void testGetMTMVCanRewritePartitionsRefreshStateInit() { + new Expectations() { + { + status.getRefreshState(); + minTimes = 0; + result = MTMVRefreshState.INIT; + } + }; + Collection mtmvCanRewritePartitions = MTMVRewriteUtil + .getMTMVCanRewritePartitions(mtmv, ctx, currentTimeMills); + Assert.assertEquals(0, mtmvCanRewritePartitions.size()); + } }