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 <[email protected]>
---
.../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: [email protected]
For additional commands, e-mail: [email protected]