This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 996a90d1f7d Pick some fix pr to 30 Fix sync mv add default select
limit wrongly #47717 # 48162 (#48257)
996a90d1f7d is described below
commit 996a90d1f7dbd8afc6a71e5c714b75a3ef9cfadc
Author: seawinde <[email protected]>
AuthorDate: Fri Feb 28 10:10:45 2025 +0800
Pick some fix pr to 30 Fix sync mv add default select limit wrongly #47717
# 48162 (#48257)
### What problem does this PR solve?
pr: https://github.com/apache/doris/pull/47717
commitId: c9344ef3
pr: https://github.com/apache/doris/pull/48162
commitId: 9119d218
---
.../main/java/org/apache/doris/catalog/MTMV.java | 12 ++--
.../doris/catalog/MaterializedIndexMeta.java | 4 ++
.../main/java/org/apache/doris/mtmv/MTMVCache.java | 77 +++++++++++++--------
.../java/org/apache/doris/mtmv/MTMVPlanUtil.java | 27 +++++---
.../mv/InitMaterializationContextHook.java | 8 ++-
.../exploration/mv/MaterializedViewUtils.java | 48 -------------
.../query_in_different_db.out} | Bin 133 -> 172 bytes
.../sql_default_limit.out} | Bin 133 -> 137 bytes
.../mv_p0/sum_divede_count/sum_devide_count.out | Bin 326 -> 418 bytes
.../test_dup_mv_repeat/test_dup_mv_repeat.out | Bin 133 -> 134 bytes
.../mv_p0/test_insert_multi/test_insert_multi.out | Bin 179 -> 255 bytes
.../testAggQueryOnAggMV1/testAggQueryOnAggMV1.out | Bin 355 -> 482 bytes
.../mv/newMv/sum_devide_count.out | Bin 326 -> 490 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV1.out | Bin 229 -> 355 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV10.out | Bin 264 -> 328 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV11.out | Bin 229 -> 292 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV2.out | Bin 235 -> 342 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV3.out | Bin 245 -> 309 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV5.out | Bin 217 -> 280 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV6.out | Bin 217 -> 280 bytes
.../data/nereids_syntax_p0/mv/ut/aggOnAggMV7.out | Bin 217 -> 280 bytes
.../query_in_different_db.groovy | 69 ++++++++++++++++++
.../sql_default_limit/sql_default_limit.groovy | 61 ++++++++++++++++
.../mv_p0/sum_divede_count/sum_devide_count.groovy | 12 +++-
.../test_dup_mv_repeat/test_dup_mv_repeat.groovy | 12 +++-
.../test_insert_multi/test_insert_multi.groovy | 12 +++-
.../testAggQueryOnAggMV1.groovy | 8 ++-
.../mv/newMv/sum_devide_count.groovy | 18 ++++-
.../nereids_syntax_p0/mv/ut/aggOnAggMV1.groovy | 8 ++-
.../nereids_syntax_p0/mv/ut/aggOnAggMV10.groovy | 5 +-
.../nereids_syntax_p0/mv/ut/aggOnAggMV11.groovy | 5 +-
.../nereids_syntax_p0/mv/ut/aggOnAggMV2.groovy | 7 +-
.../nereids_syntax_p0/mv/ut/aggOnAggMV3.groovy | 5 +-
.../nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy | 5 ++
.../nereids_syntax_p0/mv/ut/aggOnAggMV6.groovy | 5 +-
.../nereids_syntax_p0/mv/ut/aggOnAggMV7.groovy | 5 +-
.../nereids_syntax_p0/mv/ut/onlyGroupBy.groovy | 8 ++-
37 files changed, 313 insertions(+), 108 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
index 19058df1eb9..c540ee5c541 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
@@ -201,7 +201,8 @@ public class MTMV extends OlapTable {
// to connection issues such as S3, so it is directly set to
null
if (!isReplay) {
// shouldn't do this while holding mvWriteLock
- mtmvCache = MTMVCache.from(this,
MTMVPlanUtil.createMTMVContext(this), true, true);
+ mtmvCache = MTMVCache.from(this.getQuerySql(),
MTMVPlanUtil.createMTMVContext(this), true,
+ true, null);
}
} catch (Throwable e) {
mtmvCache = null;
@@ -320,13 +321,8 @@ public class MTMV extends OlapTable {
}
// Concurrent situations may result in duplicate cache generation,
// but we tolerate this in order to prevent nested use of readLock and
write MvLock for the table
- MTMVCache mtmvCache;
- try {
- // Should new context with ADMIN user
- mtmvCache = MTMVCache.from(this,
MTMVPlanUtil.createMTMVContext(this), true, false);
- } finally {
- connectionContext.setThreadLocalInfo();
- }
+ MTMVCache mtmvCache = MTMVCache.from(this.getQuerySql(),
MTMVPlanUtil.createMTMVContext(this), true,
+ false, connectionContext);
writeMvLock();
try {
this.cache = mtmvCache;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
index 5dd5776c761..b0d483751d7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
@@ -154,6 +154,10 @@ public class MaterializedIndexMeta implements Writable,
GsonPostProcessable {
this.indexes = newIndexes;
}
+ public String getDbName() {
+ return dbName;
+ }
+
public List<Column> getSchema() {
return getSchema(true);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVCache.java
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVCache.java
index b185000c148..bc99fe8bfd1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVCache.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVCache.java
@@ -17,7 +17,6 @@
package org.apache.doris.mtmv;
-import org.apache.doris.catalog.MTMV;
import org.apache.doris.nereids.CascadesContext;
import org.apache.doris.nereids.NereidsPlanner;
import org.apache.doris.nereids.StatementContext;
@@ -87,19 +86,33 @@ public class MTMVCache {
return structInfo;
}
- public static MTMVCache from(MTMV mtmv, ConnectContext connectContext,
boolean needCost, boolean needLock) {
- StatementContext mvSqlStatementContext = new
StatementContext(connectContext,
- new OriginStatement(mtmv.getQuerySql(), 0));
- if (needLock) {
+ /**
+ * @param defSql the def sql of materialization
+ * @param createCacheContext should create new createCacheContext use
MTMVPlanUtil createMTMVContext
+ * or createBasicMvContext
+ * @param needCost the plan from def sql should calc cost or not
+ * @param needLock should lock when create mtmv cache
+ * @param currentContext current context, after create cache,should
setThreadLocalInfo
+ */
+ public static MTMVCache from(String defSql,
+ ConnectContext createCacheContext,
+ boolean needCost, boolean needLock,
+ ConnectContext currentContext) {
+ StatementContext mvSqlStatementContext = new
StatementContext(createCacheContext,
+ new OriginStatement(defSql, 0));
+ if (!needLock) {
mvSqlStatementContext.setNeedLockTables(false);
}
if (mvSqlStatementContext.getConnectContext().getStatementContext() ==
null) {
mvSqlStatementContext.getConnectContext().setStatementContext(mvSqlStatementContext);
}
- LogicalPlan unboundMvPlan = new
NereidsParser().parseSingle(mtmv.getQuerySql());
+ LogicalPlan unboundMvPlan = new NereidsParser().parseSingle(defSql);
NereidsPlanner planner = new NereidsPlanner(mvSqlStatementContext);
- boolean originalRewriteFlag =
connectContext.getSessionVariable().enableMaterializedViewRewrite;
- connectContext.getSessionVariable().enableMaterializedViewRewrite =
false;
+ boolean originalRewriteFlag =
createCacheContext.getSessionVariable().enableMaterializedViewRewrite;
+ createCacheContext.getSessionVariable().enableMaterializedViewRewrite
= false;
+ Plan originPlan;
+ Plan mvPlan;
+ Optional<StructInfo> structInfoOptional;
try {
// Can not convert to table sink, because use the same column from
different table when self join
// the out slot is wrong
@@ -110,30 +123,34 @@ public class MTMVCache {
// No need cost for performance
planner.planWithLock(unboundMvPlan, PhysicalProperties.ANY,
ExplainLevel.REWRITTEN_PLAN);
}
+ originPlan = planner.getCascadesContext().getRewritePlan();
+ // Eliminate result sink because sink operator is useless in query
rewrite by materialized view
+ // and the top sort can also be removed
+ mvPlan = originPlan.accept(new DefaultPlanRewriter<Object>() {
+ @Override
+ public Plan visitLogicalResultSink(LogicalResultSink<? extends
Plan> logicalResultSink,
+ Object context) {
+ return logicalResultSink.child().accept(this, context);
+ }
+ }, null);
+ // Optimize by rules to remove top sort
+ CascadesContext parentCascadesContext =
CascadesContext.initContext(mvSqlStatementContext, mvPlan,
+ PhysicalProperties.ANY);
+ mvPlan =
MaterializedViewUtils.rewriteByRules(parentCascadesContext, childContext -> {
+ Rewriter.getCteChildrenRewriter(childContext,
+
ImmutableList.of(Rewriter.custom(RuleType.ELIMINATE_SORT,
EliminateSort::new))).execute();
+ return childContext.getRewritePlan();
+ }, mvPlan, originPlan);
+ // Construct structInfo once for use later
+ structInfoOptional =
MaterializationContext.constructStructInfo(mvPlan, originPlan,
+ planner.getCascadesContext(),
+ new BitSet());
} finally {
- connectContext.getSessionVariable().enableMaterializedViewRewrite
= originalRewriteFlag;
- }
- Plan originPlan = planner.getCascadesContext().getRewritePlan();
- // Eliminate result sink because sink operator is useless in query
rewrite by materialized view
- // and the top sort can also be removed
- Plan mvPlan = originPlan.accept(new DefaultPlanRewriter<Object>() {
- @Override
- public Plan visitLogicalResultSink(LogicalResultSink<? extends
Plan> logicalResultSink, Object context) {
- return logicalResultSink.child().accept(this, context);
+
createCacheContext.getSessionVariable().enableMaterializedViewRewrite =
originalRewriteFlag;
+ if (currentContext != null) {
+ currentContext.setThreadLocalInfo();
}
- }, null);
- // Optimize by rules to remove top sort
- CascadesContext parentCascadesContext =
CascadesContext.initContext(mvSqlStatementContext, mvPlan,
- PhysicalProperties.ANY);
- mvPlan = MaterializedViewUtils.rewriteByRules(parentCascadesContext,
childContext -> {
- Rewriter.getCteChildrenRewriter(childContext,
- ImmutableList.of(Rewriter.custom(RuleType.ELIMINATE_SORT,
EliminateSort::new))).execute();
- return childContext.getRewritePlan();
- }, mvPlan, originPlan);
- // Construct structInfo once for use later
- Optional<StructInfo> structInfoOptional =
MaterializationContext.constructStructInfo(mvPlan, originPlan,
- planner.getCascadesContext(),
- new BitSet());
+ }
return new MTMVCache(mvPlan, originPlan, planner.getAnalyzedPlan(),
needCost
?
planner.getCascadesContext().getMemo().getRoot().getStatistics() : null,
structInfoOptional.orElse(null));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPlanUtil.java
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPlanUtil.java
index 3264d6627ea..8659ea4b287 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPlanUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVPlanUtil.java
@@ -43,10 +43,24 @@ import com.google.common.collect.Sets;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import javax.annotation.Nullable;
public class MTMVPlanUtil {
public static ConnectContext createMTMVContext(MTMV mtmv) {
+ ConnectContext ctx = createBasicMvContext(null);
+ Optional<String> workloadGroup = mtmv.getWorkloadGroup();
+ if (workloadGroup.isPresent()) {
+ ctx.getSessionVariable().setWorkloadGroup(workloadGroup.get());
+ }
+ // Set db&catalog to be used when creating materialized views to avoid
SQL statements not writing the full path
+ // After https://github.com/apache/doris/pull/36543,
+ // After 1, this logic is no longer needed. This is to be compatible
with older versions
+ setCatalogAndDb(ctx, mtmv);
+ return ctx;
+ }
+
+ public static ConnectContext createBasicMvContext(@Nullable ConnectContext
parentContext) {
ConnectContext ctx = new ConnectContext();
ctx.setEnv(Env.getCurrentEnv());
ctx.setQualifiedUser(Auth.ADMIN_USER);
@@ -63,18 +77,15 @@ public class MTMVPlanUtil {
// Disable add default limit rule to avoid refresh data wrong
ctx.getSessionVariable().setDisableNereidsRules(
String.join(",",
ImmutableSet.of(RuleType.ADD_DEFAULT_LIMIT.name())));
- Optional<String> workloadGroup = mtmv.getWorkloadGroup();
- if (workloadGroup.isPresent()) {
- ctx.getSessionVariable().setWorkloadGroup(workloadGroup.get());
- }
ctx.setStartTime();
- // Set db&catalog to be used when creating materialized views to avoid
SQL statements not writing the full path
- // After https://github.com/apache/doris/pull/36543,
- // After 1, this logic is no longer needed. This is to be compatible
with older versions
- setCatalogAndDb(ctx, mtmv);
+ if (parentContext != null) {
+ ctx.changeDefaultCatalog(parentContext.getDefaultCatalog());
+ ctx.setDatabase(parentContext.getDatabase());
+ }
return ctx;
}
+
private static void setCatalogAndDb(ConnectContext ctx, MTMV mtmv) {
EnvInfo envInfo = mtmv.getEnvInfo();
if (envInfo == null) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
index 2556278c9e3..5ffb4b5f332 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/InitMaterializationContextHook.java
@@ -28,11 +28,13 @@ import org.apache.doris.catalog.OlapTable;
import org.apache.doris.catalog.TableIf;
import org.apache.doris.mtmv.BaseTableInfo;
import org.apache.doris.mtmv.MTMVCache;
+import org.apache.doris.mtmv.MTMVPlanUtil;
import org.apache.doris.mtmv.MTMVUtil;
import org.apache.doris.nereids.CascadesContext;
import org.apache.doris.nereids.NereidsPlanner;
import org.apache.doris.nereids.PlannerHook;
import org.apache.doris.nereids.parser.NereidsParser;
+import org.apache.doris.qe.ConnectContext;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
@@ -201,8 +203,12 @@ public class InitMaterializationContextHook implements
PlannerHook {
LOG.warn(String.format("can't parse %s ",
createMvSql));
continue;
}
- MTMVCache mtmvCache =
MaterializedViewUtils.createMTMVCache(querySql.get(),
+ ConnectContext basicMvContext =
MTMVPlanUtil.createBasicMvContext(
cascadesContext.getConnectContext());
+ basicMvContext.setDatabase(meta.getDbName());
+ MTMVCache mtmvCache = MTMVCache.from(querySql.get(),
+ basicMvContext, true,
+ false, cascadesContext.getConnectContext());
contexts.add(new
SyncMaterializationContext(mtmvCache.getLogicalPlan(),
mtmvCache.getOriginalPlan(), olapTable,
meta.getIndexId(), indexName,
cascadesContext, mtmvCache.getStatistics()));
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java
index 8e1064ad138..794f3cb1eb4 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java
@@ -25,21 +25,14 @@ import org.apache.doris.catalog.PartitionType;
import org.apache.doris.catalog.TableIf;
import org.apache.doris.catalog.constraint.TableIdentifier;
import org.apache.doris.mtmv.BaseTableInfo;
-import org.apache.doris.mtmv.MTMVCache;
import org.apache.doris.mtmv.MTMVRelatedTableIf;
import org.apache.doris.nereids.CascadesContext;
-import org.apache.doris.nereids.NereidsPlanner;
-import org.apache.doris.nereids.StatementContext;
-import org.apache.doris.nereids.jobs.executor.Rewriter;
import org.apache.doris.nereids.memo.Group;
import org.apache.doris.nereids.memo.StructInfoMap;
-import org.apache.doris.nereids.parser.NereidsParser;
-import org.apache.doris.nereids.properties.PhysicalProperties;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.analysis.BindRelation;
import org.apache.doris.nereids.rules.expression.ExpressionNormalization;
import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
-import org.apache.doris.nereids.rules.rewrite.EliminateSort;
import org.apache.doris.nereids.trees.expressions.Alias;
import org.apache.doris.nereids.trees.expressions.ExprId;
import org.apache.doris.nereids.trees.expressions.Expression;
@@ -54,7 +47,6 @@ import org.apache.doris.nereids.trees.plans.JoinType;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.PreAggStatus;
import org.apache.doris.nereids.trees.plans.algebra.CatalogRelation;
-import org.apache.doris.nereids.trees.plans.commands.ExplainCommand;
import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
import org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation;
import org.apache.doris.nereids.trees.plans.logical.LogicalFileScan;
@@ -62,17 +54,13 @@ import
org.apache.doris.nereids.trees.plans.logical.LogicalFilter;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
import org.apache.doris.nereids.trees.plans.logical.LogicalLimit;
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
-import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
import org.apache.doris.nereids.trees.plans.logical.LogicalRelation;
import org.apache.doris.nereids.trees.plans.logical.LogicalResultSink;
import org.apache.doris.nereids.trees.plans.logical.LogicalWindow;
-import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanRewriter;
import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanVisitor;
import
org.apache.doris.nereids.trees.plans.visitor.NondeterministicFunctionCollector;
import org.apache.doris.nereids.util.ExpressionUtils;
-import org.apache.doris.qe.ConnectContext;
-import org.apache.doris.qe.OriginStatement;
import org.apache.doris.qe.SessionVariable;
import com.google.common.collect.HashMultimap;
@@ -311,42 +299,6 @@ public class MaterializedViewUtils {
return nondeterministicFunctions;
}
- /**
- * createMTMVCache from querySql
- */
- public static MTMVCache createMTMVCache(String querySql, ConnectContext
connectContext) {
- LogicalPlan unboundMvPlan = new NereidsParser().parseSingle(querySql);
- StatementContext mvSqlStatementContext = new
StatementContext(connectContext,
- new OriginStatement(querySql, 0));
- mvSqlStatementContext.setNeedLockTables(false);
- NereidsPlanner planner = new NereidsPlanner(mvSqlStatementContext);
- if (mvSqlStatementContext.getConnectContext().getStatementContext() ==
null) {
-
mvSqlStatementContext.getConnectContext().setStatementContext(mvSqlStatementContext);
- }
- // Can not convert to table sink, because use the same column from
different table when self join
- // the out slot is wrong
- planner.planWithLock(unboundMvPlan, PhysicalProperties.ANY,
ExplainCommand.ExplainLevel.ALL_PLAN);
- Plan originPlan = planner.getRewrittenPlan();
- // Eliminate result sink because sink operator is useless in query
rewrite by materialized view
- // and the top sort can also be removed
- Plan mvPlan = originPlan.accept(new DefaultPlanRewriter<Object>() {
- @Override
- public Plan visitLogicalResultSink(LogicalResultSink<? extends
Plan> logicalResultSink, Object context) {
- return logicalResultSink.child().accept(this, context);
- }
- }, null);
- // Optimize by rules to remove top sort
- CascadesContext parentCascadesContext =
CascadesContext.initContext(mvSqlStatementContext, mvPlan,
- PhysicalProperties.ANY);
- mvPlan = MaterializedViewUtils.rewriteByRules(parentCascadesContext,
childContext -> {
- Rewriter.getCteChildrenRewriter(childContext,
- ImmutableList.of(Rewriter.custom(RuleType.ELIMINATE_SORT,
EliminateSort::new))).execute();
- return childContext.getRewritePlan();
- }, mvPlan, originPlan);
- return new MTMVCache(mvPlan, originPlan, planner.getAnalyzedPlan(),
-
planner.getCascadesContext().getMemo().getRoot().getStatistics(), null);
- }
-
/**
* Check the query if Contains query operator
* Such sql as following should return true
diff --git
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
b/regression-test/data/mv_p0/query_in_different_db/query_in_different_db.out
similarity index 65%
copy from regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
copy to
regression-test/data/mv_p0/query_in_different_db/query_in_different_db.out
index a958cf0b819..1bd5dfd6530 100644
Binary files
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out and
b/regression-test/data/mv_p0/query_in_different_db/query_in_different_db.out
differ
diff --git
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
b/regression-test/data/mv_p0/sql_default_limit/sql_default_limit.out
similarity index 70%
copy from regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
copy to regression-test/data/mv_p0/sql_default_limit/sql_default_limit.out
index a958cf0b819..2e1553fc05e 100644
Binary files
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out and
b/regression-test/data/mv_p0/sql_default_limit/sql_default_limit.out differ
diff --git a/regression-test/data/mv_p0/sum_divede_count/sum_devide_count.out
b/regression-test/data/mv_p0/sum_divede_count/sum_devide_count.out
index 67df77e0cc9..8e5dc6b3a80 100644
Binary files a/regression-test/data/mv_p0/sum_divede_count/sum_devide_count.out
and b/regression-test/data/mv_p0/sum_divede_count/sum_devide_count.out differ
diff --git
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
b/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out
index a958cf0b819..991c3ff548c 100644
Binary files
a/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out and
b/regression-test/data/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.out differ
diff --git a/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out
b/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out
index 46af1505087..ca46e26a4b2 100644
Binary files
a/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out and
b/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out differ
diff --git
a/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
b/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
index f37d3ef54f3..b1f120c3859 100644
Binary files
a/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
and
b/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
differ
diff --git
a/regression-test/data/nereids_syntax_p0/mv/newMv/sum_devide_count.out
b/regression-test/data/nereids_syntax_p0/mv/newMv/sum_devide_count.out
index 67df77e0cc9..3cf1e8d95fc 100644
Binary files
a/regression-test/data/nereids_syntax_p0/mv/newMv/sum_devide_count.out and
b/regression-test/data/nereids_syntax_p0/mv/newMv/sum_devide_count.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV1.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV1.out
index 6db240393b0..f8623191f75 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV1.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV1.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV10.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV10.out
index 83bfded26fc..cdd75b4e43d 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV10.out
and b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV10.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV11.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV11.out
index d0b1871ed2f..f71f2fe6f05 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV11.out
and b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV11.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV2.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV2.out
index 94559632cba..279e2e65097 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV2.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV2.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV3.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV3.out
index 791cf5fd8f7..035dd108ed9 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV3.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV3.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV5.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV5.out
index b10e432dadb..2b87fa7f2cf 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV5.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV5.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV6.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV6.out
index b10e432dadb..2b87fa7f2cf 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV6.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV6.out differ
diff --git a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV7.out
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV7.out
index b10e432dadb..2b87fa7f2cf 100644
Binary files a/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV7.out and
b/regression-test/data/nereids_syntax_p0/mv/ut/aggOnAggMV7.out differ
diff --git
a/regression-test/suites/mv_p0/query_in_different_db/query_in_different_db.groovy
b/regression-test/suites/mv_p0/query_in_different_db/query_in_different_db.groovy
new file mode 100644
index 00000000000..1e8d5cf21c7
--- /dev/null
+++
b/regression-test/suites/mv_p0/query_in_different_db/query_in_different_db.groovy
@@ -0,0 +1,69 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite ("query_in_different_db") {
+
+ String db = context.config.getDbNameByFile(context.file)
+ sql "use ${db}"
+ sql """ DROP TABLE IF EXISTS d_table; """
+ sql """
+ create table d_table(
+ k1 int null,
+ k2 int not null,
+ k3 bigint null,
+ k4 varchar(100) null
+ )
+ duplicate key (k1,k2,k3)
+ distributed BY hash(k1) buckets 3
+ properties("replication_num" = "1");
+ """
+
+ sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 2,2,2,'b';"
+ sql "insert into d_table select 2,2,2,'b';"
+ sql "insert into d_table select 2,2,2,'b';"
+ sql "insert into d_table select 3,-3,null,'c';"
+ sql "insert into d_table select 3,-3,null,'c';"
+ sql "insert into d_table select 3,-3,null,'c';"
+ sql "insert into d_table select -4,-4,-4,'d';"
+ sql "insert into d_table select -4,-4,-4,'d';"
+ sql "insert into d_table select -4,-4,-4,'d';"
+
+ create_sync_mv(db, "d_table", "mv_in_${db}", """
+ select abs(k1)+k2+1,sum(abs(k2+2)+k3+3) from d_table group by abs(k1)+k2+1
+ """)
+
+ sql "analyze table d_table with sync;"
+ sql """alter table d_table modify column k1 set stats
('row_count'='12');"""
+ // use another db, mv rewrite should be correct
+ sql """drop database IF EXISTS test_query_in_different_db"""
+
+ sql """
+ create database test_query_in_different_db;
+ """
+ sql """
+ use test_query_in_different_db;
+ """
+
+ // query with index should success
+ order_qt_select_with_index "select * from ${db}.d_table index mv_in_${db}"
+
+ mv_rewrite_success("select abs(k1)+k2+1,sum(abs(k2+2)+k3+3) from
${db}.d_table group by abs(k1)+k2+1", "mv_in_${db}")
+ order_qt_select_mv "select abs(k1)+k2+1,sum(abs(k2+2)+k3+3) from
${db}.d_table group by abs(k1)+k2+1;"
+}
diff --git
a/regression-test/suites/mv_p0/sql_default_limit/sql_default_limit.groovy
b/regression-test/suites/mv_p0/sql_default_limit/sql_default_limit.groovy
new file mode 100644
index 00000000000..1897b74a783
--- /dev/null
+++ b/regression-test/suites/mv_p0/sql_default_limit/sql_default_limit.groovy
@@ -0,0 +1,61 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite ("sql_default_limit") {
+
+ String db = context.config.getDbNameByFile(context.file)
+ sql """use ${db}"""
+
+ sql """ DROP TABLE IF EXISTS sql_default_limit_table; """
+
+ sql """
+ create table sql_default_limit_table
+ (
+ id1 int,
+ id2 int,
+ id3 int,
+ sale_date date,
+ sale_amt bigint
+ )
+ distributed by hash(id1)
+ properties("replication_num" = "1");
+ """
+
+ sql """insert into sql_default_limit_table values(1,1,1,'2020-02-02',1);"""
+ sql """insert into sql_default_limit_table values(1,1,1,'2020-02-02',1);"""
+ sql """insert into sql_default_limit_table values(1,1,1,'2020-02-02',1);"""
+ sql """insert into sql_default_limit_table values(1,1,1,'2020-02-02',1);"""
+ sql """insert into sql_default_limit_table values(2,1,1,'2020-02-02',1);"""
+ sql """insert into sql_default_limit_table values(1,1,1,'2020-02-02',1);"""
+
+ create_sync_mv(db, "sql_default_limit_table", "test_mv",
+ """select id1, sum(sale_amt) from sql_default_limit_table group by
id1""")
+
+ sql """analyze table sql_default_limit_table with sync;"""
+ sql """alter table sql_default_limit_table modify column sale_amt set
stats ('row_count'='6');"""
+
+
+ sql """set enable_stats=true;"""
+ sql """set sql_select_limit = 1;"""
+ mv_rewrite_success("select id1, sum(sale_amt) from sql_default_limit_table
group by id1;", "test_mv")
+ order_qt_query1 """select id1, sum(sale_amt) from sql_default_limit_table
group by id1;"""
+ sql """set sql_select_limit = -1;"""
+
+ sql """set default_order_by_limit = 2;"""
+ mv_rewrite_success("select id1, sum(sale_amt) from sql_default_limit_table
group by id1;", "test_mv")
+ order_qt_query2 """select id1, sum(sale_amt) from sql_default_limit_table
group by id1;"""
+}
diff --git
a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy
b/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy
index 1784851e047..e5b6a625d2f 100644
--- a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy
+++ b/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy
@@ -34,17 +34,27 @@ suite ("sum_devide_count") {
"""
sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 1,1,1,'a';"
+ sql "insert into d_table select 2,2,2,'b';"
sql "insert into d_table select 2,2,2,'b';"
+ sql "insert into d_table select 2,2,2,'b';"
+ sql "insert into d_table select 3,-3,null,'c';"
+ sql "insert into d_table select 3,-3,null,'c';"
sql "insert into d_table select 3,-3,null,'c';"
createMV ("create materialized view kavg as select k1,k4,sum(k2),count(k2)
from d_table group by k1,k4;")
sql "insert into d_table select -4,-4,-4,'d';"
+ sql "insert into d_table select -4,-4,-4,'d';"
+ sql "insert into d_table select -4,-4,-4,'d';"
+ sql "insert into d_table select 3,2,null,'c';"
+ sql "insert into d_table select 3,2,null,'c';"
sql "insert into d_table select 3,2,null,'c';"
qt_select_star "select * from d_table order by k1,k2,k3,k4;"
sql """analyze table d_table with sync;"""
- sql """alter table d_table modify column k1 set stats ('row_count'='5');"""
+ sql """alter table d_table modify column k3 set stats
('row_count'='15');"""
sql """set enable_stats=false;"""
diff --git
a/regression-test/suites/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.groovy
b/regression-test/suites/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.groovy
index 5ccdae1bd8a..61c060aaa7a 100644
--- a/regression-test/suites/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.groovy
+++ b/regression-test/suites/mv_p0/test_dup_mv_repeat/test_dup_mv_repeat.groovy
@@ -35,7 +35,17 @@ suite ("test_dup_mv_repeat") {
);
"""
- sql "insert into db1
values('2020-01-01','abc',123),('2020-01-02','def',456);"
+ sql """
+ insert into db1 values
+ ('2020-01-01','abc',123),
+ ('2020-01-01','abc',123),
+ ('2020-01-01','abc',123),
+ ('2020-01-02','def',456),
+ ('2020-01-02','def',456),
+ ('2020-01-02','def',456);
+ """
+
+ sql """alter table db1 modify column n set stats ('row_count'='6');"""
createMV ("create materialized view dbviwe as select dt,s,sum(n) as n from
db1 group by dt,s;")
diff --git
a/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy
b/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy
index cb68765a55d..15b845f5412 100644
--- a/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy
+++ b/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy
@@ -27,7 +27,17 @@ suite ("test_insert_multi") {
createMV ("create materialized view store_amt as select store_id,
sum(sale_amt) from sales_records group by store_id;")
- sql """insert into sales_records
values(1,1,1,"2020-02-02",1),(1,2,2,"2020-02-02",1);"""
+ sql """insert into sales_records
+ values
+ (1,1,1,"2020-02-02",1),
+ (1,1,1,"2020-02-02",1),
+ (1,1,1,"2020-02-02",1),
+ (1,2,2,"2020-02-02",1),
+ (1,2,2,"2020-02-02",1),
+ (1,2,2,"2020-02-02",1);
+ """
+
+ sql """alter table sales_records modify column record_id set stats
('row_count'='6');"""
qt_select_star "select * from sales_records order by 1,2;"
diff --git
a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
index f39e8df6cab..88e83ea6b6b 100644
---
a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
+++
b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
@@ -33,10 +33,16 @@ suite ("testAggQueryOnAggMV1") {
"""
sql """insert into emps values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into emps values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into emps values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into emps values("2020-01-02",2,"b",2,2,2);"""
sql """insert into emps values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into emps values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into emps values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into emps values("2020-01-03",3,"c",3,3,3);"""
sql """insert into emps values("2020-01-03",3,"c",3,3,3);"""
-sql """alter table emps modify column time_col set stats ('row_count'='4');"""
+sql """alter table emps modify column time_col set stats ('row_count'='9');"""
createMV("create materialized view emps_mv as select deptno, sum(salary),
max(commission) from emps group by deptno;")
createMV("create materialized view emps_mv_count_key as select deptno,
count(deptno) from emps group by deptno;")
diff --git
a/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy
b/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy
index 69fac070e42..cfd19035310 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy
@@ -31,7 +31,16 @@ suite ("sum_devide_count") {
"""
sql "insert into sum_devide_count select 1,1,1,'a';"
+ sql "insert into sum_devide_count select 1,1,1,'a';"
+ sql "insert into sum_devide_count select 1,1,1,'a';"
+ sql "insert into sum_devide_count select 1,1,1,'a';"
+ sql "insert into sum_devide_count select 2,2,2,'b';"
sql "insert into sum_devide_count select 2,2,2,'b';"
+ sql "insert into sum_devide_count select 2,2,2,'b';"
+ sql "insert into sum_devide_count select 2,2,2,'b';"
+ sql "insert into sum_devide_count select 3,-3,null,'c';"
+ sql "insert into sum_devide_count select 3,-3,null,'c';"
+ sql "insert into sum_devide_count select 3,-3,null,'c';"
sql "insert into sum_devide_count select 3,-3,null,'c';"
sql "SET experimental_enable_nereids_planner=true"
@@ -42,10 +51,17 @@ suite ("sum_devide_count") {
sleep(3000)
sql "insert into sum_devide_count select -4,-4,-4,'d';"
+ sql "insert into sum_devide_count select -4,-4,-4,'d';"
+ sql "insert into sum_devide_count select -4,-4,-4,'d';"
+ sql "insert into sum_devide_count select -4,-4,-4,'d';"
+ sql "insert into sum_devide_count select -4,-4,-4,'d';"
+ sql "insert into sum_devide_count select 3,2,null,'c';"
+ sql "insert into sum_devide_count select 3,2,null,'c';"
+ sql "insert into sum_devide_count select 3,2,null,'c';"
sql "insert into sum_devide_count select 3,2,null,'c';"
sql "analyze table sum_devide_count with sync;"
- sql """alter table sum_devide_count modify column k1 set stats
('row_count'='5');"""
+ sql """alter table sum_devide_count modify column k1 set stats
('row_count'='20');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV1.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV1.groovy
index a8e96a8e134..b91fcbd5b12 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV1.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV1.groovy
@@ -34,7 +34,13 @@ suite ("aggOnAggMV1") {
"""
sql """insert into aggOnAggMV1 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV1 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV1 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV1 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV1 values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into aggOnAggMV1 values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into aggOnAggMV1 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV1 values("2020-01-03",3,"c",3,3,3);"""
sql """insert into aggOnAggMV1 values("2020-01-03",3,"c",3,3,3);"""
@@ -45,7 +51,7 @@ suite ("aggOnAggMV1") {
sql """insert into aggOnAggMV1 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV1 with sync;"
- sql """alter table aggOnAggMV1 modify column time_col set stats
('row_count'='4');"""
+ sql """alter table aggOnAggMV1 modify column time_col set stats
('row_count'='9');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV10.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV10.groovy
index 4af39a4cfce..763c1bfa325 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV10.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV10.groovy
@@ -34,8 +34,11 @@ suite ("aggOnAggMV10") {
"""
sql """insert into aggOnAggMV10 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV10 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV10 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV10 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV10 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV10 values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view aggOnAggMV10_mv as select deptno,
commission, sum(salary) from aggOnAggMV10 group by deptno, commission;")
@@ -44,7 +47,7 @@ suite ("aggOnAggMV10") {
sql """insert into aggOnAggMV10 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV10 with sync;"
- sql """alter table aggOnAggMV10 modify column time_col set stats
('row_count'='4');"""
+ sql """alter table aggOnAggMV10 modify column time_col set stats
('row_count'='7');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV11.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV11.groovy
index 56a47122b5a..e09fb0f190e 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV11.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV11.groovy
@@ -35,8 +35,11 @@ suite ("aggOnAggMV11") {
sql """insert into aggOnAggMV11 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV11 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV11 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV11 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV11 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV11 values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view aggOnAggMV11_mv as select deptno,
count(salary) from aggOnAggMV11 group by deptno;")
@@ -45,7 +48,7 @@ suite ("aggOnAggMV11") {
sql """insert into aggOnAggMV11 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV11 with sync;"
- sql """alter table aggOnAggMV11 modify column time_col set stats
('row_count'='4');"""
+ sql """alter table aggOnAggMV11 modify column time_col set stats
('row_count'='7');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV2.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV2.groovy
index 8393af7ebfd..941dd0e04bb 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV2.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV2.groovy
@@ -32,7 +32,12 @@ suite ("aggOnAggMV2") {
sql """insert into aggOnAggMV2 values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into aggOnAggMV2 values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into aggOnAggMV2 values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into aggOnAggMV2 values("2020-01-03",3,"c",3,3,3);"""
sql """insert into aggOnAggMV2 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV2 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV2 values("2020-01-02",2,"b",2,7,2);"""
sql """insert into aggOnAggMV2 values("2020-01-02",2,"b",2,7,2);"""
explain {
@@ -46,7 +51,7 @@ suite ("aggOnAggMV2") {
sleep(3000)
sql "analyze table aggOnAggMV2 with sync;"
- sql """alter table aggOnAggMV2 modify column time_col set stats
('row_count'='3');"""
+ sql """alter table aggOnAggMV2 modify column time_col set stats
('row_count'='8');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV3.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV3.groovy
index 48e15d4b10d..0f449071269 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV3.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV3.groovy
@@ -34,8 +34,11 @@ suite ("aggOnAggMV3") {
"""
sql """insert into aggOnAggMV3 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV3 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV3 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV3 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV3 values("2020-01-03",3,"c",3,3,10);"""
+ sql """insert into aggOnAggMV3 values("2020-01-03",3,"c",3,3,10);"""
sql """insert into aggOnAggMV3 values("2020-01-04",4,"d",21,4,4);"""
sql """insert into aggOnAggMV3 values("2020-01-04",4,"d",21,4,4);"""
@@ -46,7 +49,7 @@ suite ("aggOnAggMV3") {
sleep(3000)
sql "analyze table aggOnAggMV3 with sync;"
- sql """alter table aggOnAggMV3 modify column time_col set stats
('row_count'='5');"""
+ sql """alter table aggOnAggMV3 modify column time_col set stats
('row_count'='8');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy
index d90057b8bf5..7851901b04e 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy
@@ -36,14 +36,19 @@ suite ("aggOnAggMV5") {
sql """alter table aggOnAggMV5 modify column time_col set stats
('row_count'='4');"""
sql """insert into aggOnAggMV5 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV5 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV5 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV5 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV5 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV5 values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view aggOnAggMV5_mv as select deptno,
commission, sum(salary) from aggOnAggMV5 group by deptno, commission;")
sql """insert into aggOnAggMV5 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV5 with sync;"
+ sql """alter table aggOnAggMV5 modify column commission set stats
('row_count'='8');"""
+
mv_rewrite_fail("select * from aggOnAggMV5 order by empid;",
"aggOnAggMV5_mv")
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV6.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV6.groovy
index 37029f0f089..30c5518fa7a 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV6.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV6.groovy
@@ -34,8 +34,11 @@ suite ("aggOnAggMV6") {
"""
sql """insert into aggOnAggMV6 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV6 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV6 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV6 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV6 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV6 values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view aggOnAggMV6_mv as select deptno,
commission, sum(salary) from aggOnAggMV6 group by deptno, commission;")
@@ -44,7 +47,7 @@ suite ("aggOnAggMV6") {
sql """insert into aggOnAggMV6 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV6 with sync;"
- sql """alter table aggOnAggMV6 modify column time_col set stats
('row_count'='4');"""
+ sql """alter table aggOnAggMV6 modify column time_col set stats
('row_count'='6');"""
sql """set enable_stats=false;"""
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV7.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV7.groovy
index d4db9a05fea..e1339cd1225 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV7.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV7.groovy
@@ -34,8 +34,11 @@ suite ("aggOnAggMV7") {
"""
sql """insert into aggOnAggMV7 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV7 values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into aggOnAggMV7 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV7 values("2020-01-02",2,"b",2,2,2);"""
sql """insert into aggOnAggMV7 values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into aggOnAggMV7 values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view aggOnAggMV7_mv as select deptno,
commission, sum(salary) from aggOnAggMV7 group by deptno, commission;")
@@ -44,7 +47,7 @@ suite ("aggOnAggMV7") {
sql """insert into aggOnAggMV7 values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table aggOnAggMV7 with sync;"
- sql """alter table aggOnAggMV7 modify column time_col set stats
('row_count'='4');"""
+ sql """alter table aggOnAggMV7 modify column time_col set stats
('row_count'='7');"""
sql """set enable_stats=false;"""
mv_rewrite_fail("select * from aggOnAggMV7 order by empid;",
"aggOnAggMV7_mv")
diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/onlyGroupBy.groovy
b/regression-test/suites/nereids_syntax_p0/mv/ut/onlyGroupBy.groovy
index 227535abf6a..349f7ff5d89 100644
--- a/regression-test/suites/nereids_syntax_p0/mv/ut/onlyGroupBy.groovy
+++ b/regression-test/suites/nereids_syntax_p0/mv/ut/onlyGroupBy.groovy
@@ -35,7 +35,13 @@ suite ("onlyGroupBy") {
sql """insert into onlyGroupBy values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into onlyGroupBy values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into onlyGroupBy values("2020-01-01",1,"a",1,1,1);"""
+ sql """insert into onlyGroupBy values("2020-01-02",2,"b",2,2,2);"""
sql """insert into onlyGroupBy values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into onlyGroupBy values("2020-01-02",2,"b",2,2,2);"""
+ sql """insert into onlyGroupBy values("2020-01-03",3,"c",3,3,3);"""
+ sql """insert into onlyGroupBy values("2020-01-03",3,"c",3,3,3);"""
sql """insert into onlyGroupBy values("2020-01-03",3,"c",3,3,3);"""
createMV("create materialized view onlyGroupBy_mv as select deptno,
count(salary) from onlyGroupBy group by deptno;")
@@ -43,7 +49,7 @@ suite ("onlyGroupBy") {
sql """insert into onlyGroupBy values("2020-01-01",1,"a",1,1,1);"""
sql "analyze table onlyGroupBy with sync;"
- sql """alter table onlyGroupBy modify column time_col set stats
('row_count'='4');"""
+ sql """alter table onlyGroupBy modify column time_col set stats
('row_count'='9');"""
sql """set enable_stats=false;"""
mv_rewrite_success("select deptno from onlyGroupBy group by deptno;",
"onlyGroupBy_mv")
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]