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