This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 3d2b4ae244d [fix](mtmv) fix failed to specify the number of buckets 
when bucket auto (#28854)
3d2b4ae244d is described below

commit 3d2b4ae244dda3f4f3ae7363ceb0c6b521096681
Author: zhangdong <493738...@qq.com>
AuthorDate: Sat Dec 23 09:26:16 2023 +0800

    [fix](mtmv) fix failed to specify the number of buckets when bucket auto 
(#28854)
    
    Issue Number: close #xxx
    
    - fix failed to specify the number of buckets when bucket auto
    - delete unused SessionVariable
    - if mtmv used external table ,check 
`isMaterializedViewRewriteEnableContainForeignTable`
---
 .../main/java/org/apache/doris/mtmv/MTMVUtil.java  | 15 ++++++++++++++
 .../doris/nereids/parser/LogicalPlanBuilder.java   | 13 ++++++++----
 .../java/org/apache/doris/qe/SessionVariable.java  | 24 ----------------------
 .../suites/mtmv_p0/test_build_mtmv.groovy          |  2 +-
 4 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java 
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java
index 5c73ee07dd1..06f4c1c0330 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java
@@ -31,6 +31,7 @@ import org.apache.doris.catalog.PartitionItem;
 import org.apache.doris.catalog.TableIf;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.DdlException;
+import org.apache.doris.datasource.InternalCatalog;
 import org.apache.doris.mtmv.MTMVPartitionInfo.MTMVPartitionType;
 import org.apache.doris.mtmv.MTMVRefreshEnum.MTMVRefreshState;
 import org.apache.doris.mtmv.MTMVRefreshEnum.MTMVState;
@@ -256,6 +257,10 @@ public class MTMVUtil {
         if (!ctx.getSessionVariable().isEnableMaterializedViewRewrite()) {
             return res;
         }
+        if (mtmvContainsExternalTable(mtmv) && !ctx.getSessionVariable()
+                .isMaterializedViewRewriteEnableContainForeignTable()) {
+            return res;
+        }
         MTMVRelation mtmvRelation = mtmv.getRelation();
         if (mtmvRelation == null) {
             return res;
@@ -486,4 +491,14 @@ public class MTMVUtil {
         }
         return true;
     }
+
+    private static boolean mtmvContainsExternalTable(MTMV mtmv) {
+        Set<BaseTableInfo> baseTables = mtmv.getRelation().getBaseTables();
+        for (BaseTableInfo baseTableInfo : baseTables) {
+            if (baseTableInfo.getCtlId() != 
InternalCatalog.INTERNAL_CATALOG_ID) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index c546e90c9df..d230fa85d9c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -536,13 +536,18 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
         LogicalPlan logicalPlan = visitQuery(ctx.query());
         String querySql = getOriginSql(ctx.query());
 
-        boolean isHash = ctx.HASH() != null || ctx.RANDOM() == null;
         int bucketNum = FeConstants.default_bucket_num;
-        if (isHash && ctx.INTEGER_VALUE() != null) {
+        if (ctx.INTEGER_VALUE() != null) {
             bucketNum = Integer.parseInt(ctx.INTEGER_VALUE().getText());
         }
-        DistributionDescriptor desc = new DistributionDescriptor(isHash, 
ctx.AUTO() != null,
-                bucketNum, ctx.HASH() != null ? 
visitIdentifierList(ctx.hashKeys) : null);
+        DistributionDescriptor desc = null;
+        if (ctx.HASH() != null) {
+            desc = new DistributionDescriptor(true, ctx.AUTO() != null, 
bucketNum,
+                    visitIdentifierList(ctx.hashKeys));
+        } else if (ctx.RANDOM() != null) {
+            desc = new DistributionDescriptor(false, ctx.AUTO() != null, 
bucketNum, null);
+        }
+
         Map<String, String> properties = ctx.propertyClause() != null
                 ? Maps.newHashMap(visitPropertyClause(ctx.propertyClause())) : 
Maps.newHashMap();
         String comment = ctx.STRING_LITERAL() == null ? "" : 
LogicalPlanBuilderAssistant.escapeBackSlash(
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index be4e965672f..7d7fdb1404e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -451,8 +451,6 @@ public class SessionVariable implements Serializable, 
Writable {
 
     public static final String ENABLE_DECIMAL256 = "enable_decimal256";
 
-    public static final String ENABLE_EXTERNAL_MV_REWRITE = 
"enable_external_mv_rewrite";
-    public static final String ENABLE_MV_REWRITE = "enable_mv_rewrite";
     public static final String STATS_INSERT_MERGE_ITEM_COUNT = 
"stats_insert_merge_item_count";
 
     public static final String HUGE_TABLE_DEFAULT_SAMPLE_ROWS = 
"huge_table_default_sample_rows";
@@ -813,12 +811,6 @@ public class SessionVariable implements Serializable, 
Writable {
     @VariableMgr.VarAttr(name = TRIM_TAILING_SPACES_FOR_EXTERNAL_TABLE_QUERY, 
needForward = true)
     public boolean trimTailingSpacesForExternalTableQuery = false;
 
-    @VariableMgr.VarAttr(name = ENABLE_EXTERNAL_MV_REWRITE, needForward = true)
-    public boolean enableExternalMvRewrite = false;
-
-    @VariableMgr.VarAttr(name = ENABLE_MV_REWRITE, needForward = true)
-    public boolean enableMvRewrite = false;
-
     // the maximum size in bytes for a table that will be broadcast to all be 
nodes
     // when performing a join, By setting this value to -1 broadcasting can be 
disabled.
     // Default value is 1Gto
@@ -2612,22 +2604,6 @@ public class SessionVariable implements Serializable, 
Writable {
                         : maxTableCountUseCascadesJoinReorder;
     }
 
-    public boolean isEnableExternalMvRewrite() {
-        return enableExternalMvRewrite;
-    }
-
-    public void setEnableExternalMvRewrite(boolean enableExternalMvRewrite) {
-        this.enableExternalMvRewrite = enableExternalMvRewrite;
-    }
-
-    public boolean isEnableMvRewrite() {
-        return enableMvRewrite;
-    }
-
-    public void setEnableMvRewrite(boolean enableMvRewrite) {
-        this.enableMvRewrite = enableMvRewrite;
-    }
-
     public boolean isShowUserDefaultRole() {
         return showUserDefaultRole;
     }
diff --git a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy 
b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
index d08bfa2ff36..e7b8e89ce5a 100644
--- a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
@@ -76,7 +76,7 @@ suite("test_build_mtmv") {
 
     def showCreateTableResult = sql """show create table ${mvName}"""
     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 10\nPROPERTIES"))
+    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"))
     sql """
         DROP MATERIALIZED VIEW ${mvName}
     """


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to