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