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]

Reply via email to