This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch branch-3.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push: new c7f5de6b10a branch-3.1: [fix](mtmv)Fix incorrect result of show create MTMV when partition by date_trunc #53858 (#53958) c7f5de6b10a is described below commit c7f5de6b10a7157a4ccafe2b87e9d392e6badc30 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Mon Jul 28 15:37:39 2025 +0800 branch-3.1: [fix](mtmv)Fix incorrect result of show create MTMV when partition by date_trunc #53858 (#53958) Cherry-picked from #53858 Co-authored-by: zhangdong <zhangd...@selectdb.com> --- .../main/java/org/apache/doris/catalog/Env.java | 5 +++-- .../doris/mtmv/MTMVPartitionExprDateTrunc.java | 5 +++++ .../doris/mtmv/MTMVPartitionExprService.java | 7 +++++++ .../suites/mtmv_p0/test_show_create_mtmv.groovy | 22 ++++++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index 3709e42c693..587d9ae9beb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -189,6 +189,7 @@ import org.apache.doris.master.PartitionInfoCollector; import org.apache.doris.meta.MetaContext; import org.apache.doris.metric.MetricRepo; import org.apache.doris.mtmv.MTMVAlterOpType; +import org.apache.doris.mtmv.MTMVPartitionExprFactory; import org.apache.doris.mtmv.MTMVPartitionInfo; import org.apache.doris.mtmv.MTMVPartitionInfo.MTMVPartitionType; import org.apache.doris.mtmv.MTMVRefreshPartitionSnapshot; @@ -3565,7 +3566,7 @@ public class Env { } } - private static void addMTMVPartitionInfo(MTMV mtmv, StringBuilder sb) { + private static void addMTMVPartitionInfo(MTMV mtmv, StringBuilder sb) throws AnalysisException { MTMVPartitionInfo mvPartitionInfo = mtmv.getMvPartitionInfo(); if (mvPartitionInfo.getPartitionType() == MTMVPartitionType.SELF_MANAGE) { return; @@ -3574,7 +3575,7 @@ public class Env { if (mvPartitionInfo.getPartitionType() == MTMVPartitionType.FOLLOW_BASE_TABLE) { sb.append("`" + mvPartitionInfo.getPartitionCol() + "`"); } else { - sb.append(mvPartitionInfo.getExpr().toSql()); + sb.append(MTMVPartitionExprFactory.getExprService(mvPartitionInfo.getExpr()).toSql(mvPartitionInfo)); } sb.append(")"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprDateTrunc.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprDateTrunc.java index 764c87c4b11..ee174d6797a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprDateTrunc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprDateTrunc.java @@ -84,6 +84,11 @@ public class MTMVPartitionExprDateTrunc implements MTMVPartitionExprService { } } + @Override + public String toSql(MTMVPartitionInfo mvPartitionInfo) { + return String.format("date_trunc(`%s`, '%s')", mvPartitionInfo.getPartitionCol(), timeUnit); + } + @Override public String getRollUpIdentity(PartitionKeyDesc partitionKeyDesc, Map<String, String> mvProperties) throws AnalysisException { diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprService.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprService.java index e6974343ef2..670368f8954 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprService.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPartitionExprService.java @@ -57,4 +57,11 @@ public interface MTMVPartitionExprService { * @throws AnalysisException */ void analyze(MTMVPartitionInfo mtmvPartitionInfo) throws AnalysisException; + + /** + * for show create MTMV + * @param mvPartitionInfo + * @return + */ + String toSql(MTMVPartitionInfo mvPartitionInfo); } diff --git a/regression-test/suites/mtmv_p0/test_show_create_mtmv.groovy b/regression-test/suites/mtmv_p0/test_show_create_mtmv.groovy index 41f249e5fe3..d3ad928393f 100644 --- a/regression-test/suites/mtmv_p0/test_show_create_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_show_create_mtmv.groovy @@ -121,6 +121,28 @@ suite("test_show_create_mtmv","mtmv") { def showCreateMTMVResultAgain = sql """show CREATE MATERIALIZED VIEW ${mvName}""" logger.info("showCreateMTMVAgainResult: " + showCreateMTMVResultAgain.toString()) assertEquals(showCreateMTMVResult.toString(), showCreateMTMVResultAgain.toString()) + sql """drop materialized view if exists ${mvName};""" + + sql """ + CREATE MATERIALIZED VIEW ${mvName} + BUILD DEFERRED REFRESH AUTO ON MANUAL + partition by(date_trunc(`col1`, 'day')) + DISTRIBUTED BY RANDOM BUCKETS 2 + PROPERTIES ( + 'replication_num' = '1' + ) + AS select date_trunc(`k2`, 'day') as col1 from ${tableName}; + """ + showCreateMTMVResult = sql """show CREATE MATERIALIZED VIEW ${mvName}""" + logger.info("showCreateMTMVResult: " + showCreateMTMVResult.toString()) + assertTrue(showCreateMTMVResult.toString().contains("date_trunc(`col1`, 'day')")) + sql """drop materialized view if exists ${mvName};""" + sql """ + ${showCreateMTMVResult[0][1]} + """ + showCreateMTMVResultAgain = sql """show CREATE MATERIALIZED VIEW ${mvName}""" + logger.info("showCreateMTMVAgainResult: " + showCreateMTMVResultAgain.toString()) + assertEquals(showCreateMTMVResult.toString(), showCreateMTMVResultAgain.toString()) sql """drop table if exists `${tableName}`""" sql """drop materialized view if exists ${mvName};""" --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org