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

Reply via email to