This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 104fcea725d [fix](mtmv) mtmv disable dynamic partition (#35686)
(#35949)
104fcea725d is described below
commit 104fcea725dc81bc4dafca95ed106a6f7ebf2d67
Author: Mingyu Chen <[email protected]>
AuthorDate: Thu Jun 6 14:43:40 2024 +0800
[fix](mtmv) mtmv disable dynamic partition (#35686) (#35949)
bp #35686
Co-authored-by: zhangdong <[email protected]>
---
.../doris/analysis/ModifyTablePropertiesClause.java | 17 +++++++++++++++++
.../apache/doris/clone/DynamicPartitionScheduler.java | 2 ++
.../trees/plans/commands/info/CreateMTMVInfo.java | 4 ++++
regression-test/suites/mtmv_p0/test_build_mtmv.groovy | 6 ++++++
.../suites/mtmv_p0/test_limit_op_mtmv.groovy | 18 ++++++++++++++++++
5 files changed, 47 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java
index f349c8a51cf..b4c519b2aee 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java
@@ -18,7 +18,10 @@
package org.apache.doris.analysis;
import org.apache.doris.alter.AlterOpType;
+import org.apache.doris.catalog.Env;
+import org.apache.doris.catalog.MTMV;
import org.apache.doris.catalog.ReplicaAllocation;
+import org.apache.doris.catalog.Table;
import org.apache.doris.catalog.TableProperty;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.util.DynamicPartitionUtil;
@@ -307,6 +310,20 @@ public class ModifyTablePropertiesClause extends
AlterTableClause {
} else {
throw new AnalysisException("Unknown table property: " +
properties.keySet());
}
+ analyzeForMTMV();
+ }
+
+ private void analyzeForMTMV() throws AnalysisException {
+ if (tableName != null) {
+ Table table =
Env.getCurrentInternalCatalog().getDbOrAnalysisException(tableName.getDb())
+ .getTableOrAnalysisException(tableName.getTbl());
+ if (!(table instanceof MTMV)) {
+ return;
+ }
+ if
(DynamicPartitionUtil.checkDynamicPartitionPropertiesExist(properties)) {
+ throw new AnalysisException("Not support dynamic partition
properties on async materialized view");
+ }
+ }
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
index 3fa73930906..7c884b6fee6 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java
@@ -32,6 +32,7 @@ import org.apache.doris.catalog.DistributionInfo;
import org.apache.doris.catalog.DynamicPartitionProperty;
import org.apache.doris.catalog.Env;
import org.apache.doris.catalog.HashDistributionInfo;
+import org.apache.doris.catalog.MTMV;
import org.apache.doris.catalog.OlapTable;
import org.apache.doris.catalog.Partition;
import org.apache.doris.catalog.PartitionItem;
@@ -502,6 +503,7 @@ public class DynamicPartitionScheduler extends MasterDaemon
{
olapTable = (OlapTable) db.getTableNullable(tableId);
// Only OlapTable has DynamicPartitionProperty
if (olapTable == null
+ || olapTable instanceof MTMV
|| !olapTable.dynamicPartitionExists()
||
!olapTable.getTableProperty().getDynamicPartitionProperty().getEnable()) {
iterator.remove();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java
index 6b008ba2565..0add620d035 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java
@@ -33,6 +33,7 @@ import org.apache.doris.catalog.TableIf;
import org.apache.doris.catalog.View;
import org.apache.doris.common.ErrorCode;
import org.apache.doris.common.FeNameFormat;
+import org.apache.doris.common.util.DynamicPartitionUtil;
import org.apache.doris.mtmv.EnvInfo;
import org.apache.doris.mtmv.MTMVPartitionInfo;
import org.apache.doris.mtmv.MTMVPartitionInfo.MTMVPartitionType;
@@ -178,6 +179,9 @@ public class CreateMTMVInfo {
}
private void analyzeProperties() {
+ if
(DynamicPartitionUtil.checkDynamicPartitionPropertiesExist(properties)) {
+ throw new AnalysisException("Not support dynamic partition
properties on async materialized view");
+ }
for (String key : MTMVPropertyUtil.mvPropertyKeys) {
if (properties.containsKey(key)) {
MTMVPropertyUtil.analyzeProperty(key, properties.get(key));
diff --git a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
index edb706c5303..1b46236665f 100644
--- a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
@@ -88,10 +88,16 @@ suite("test_build_mtmv") {
logger.info("showCreateTableResult: " + showCreateTableResult.toString())
assertTrue(showCreateTableResult.toString().contains("CREATE MATERIALIZED
VIEW `multi_mv_test_create_mtmv` (\n `aa` BIGINT NULL COMMENT 'aaa',\n `bb`
VARCHAR(20) NULL\n) ENGINE=MATERIALIZED_VIEW\nCOMMENT 'comment1'\nDISTRIBUTED
BY RANDOM BUCKETS 2\nPROPERTIES"))
+ // desc
def descTableAllResult = sql """desc ${mvName} all"""
logger.info("descTableAllResult: " + descTableAllResult.toString())
assertTrue(descTableAllResult.toString().contains("${mvName}"))
+ // show data
+ def showDataResult = sql """show data"""
+ logger.info("showDataResult: " + showDataResult.toString())
+ assertTrue(showDataResult.toString().contains("${mvName}"))
+
// if not exist
try {
sql """
diff --git a/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy
index 57104d3d481..46c763a04a4 100644
--- a/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy
@@ -261,6 +261,24 @@ suite("test_limit_op_mtmv") {
Assert.fail();
}
+ // not allow dynamic_partition
+ test {
+ sql """ALTER TABLE ${mvName} set ("dynamic_partition.enable" =
"true")"""
+ exception "dynamic"
+ }
+ sql """drop materialized view if exists ${mvName};"""
+ test {
+ sql """
+ CREATE MATERIALIZED VIEW ${mvName}
+ BUILD DEFERRED REFRESH AUTO ON MANUAL
+ partition by(`k3`)
+ DISTRIBUTED BY RANDOM BUCKETS 2
+ PROPERTIES ('replication_num' =
'1','dynamic_partition.enable'='true')
+ AS
+ SELECT * FROM ${tableName};
+ """
+ exception "dynamic"
+ }
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]