From 073a42b8d904296fd29c4dabb0a593b4727e7d15 Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 13 Aug 2024 10:12:16 +0800 Subject: [PATCH 01/13] analyze mtmv after create view --- .../main/groovy/org/apache/doris/regression/suite/Suite.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy index ddec61e6d4340d..f3641b623a0f4c 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy @@ -1466,7 +1466,8 @@ class Suite implements GroovyInterceptable { PROPERTIES ('replication_num' = '1') AS ${mv_sql} """ - + sql "analyze table ${mv_name} with sync;" + def job_name = getJobName(db, mv_name); waitingMTMVTaskFinished(job_name) explain { From 26b140816f44a5aa5a4a68519f64337b65b919b0 Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 13 Aug 2024 12:52:10 +0800 Subject: [PATCH 02/13] trival project cost 0 --- .../org/apache/doris/nereids/cost/CostModelV1.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java index 5c1451e0139674..6601f3edfb4f3e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java @@ -26,6 +26,7 @@ import org.apache.doris.nereids.properties.DistributionSpecGather; import org.apache.doris.nereids.properties.DistributionSpecHash; import org.apache.doris.nereids.properties.DistributionSpecReplicated; +import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.ComparisonPredicate; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.SlotReference; @@ -196,6 +197,15 @@ public Cost visitPhysicalFileScan(PhysicalFileScan physicalFileScan, PlanContext @Override public Cost visitPhysicalProject(PhysicalProject physicalProject, PlanContext context) { + boolean trival = true; + for (Expression expr : physicalProject.getProjects()) { + if (!(expr instanceof Alias && expr.child(0) instanceof SlotReference)) { + trival = false; + } + } + if (trival) { + return CostV1.zero(); + } double exprCost = expressionTreeCost(physicalProject.getProjects()); return CostV1.ofCpu(context.getSessionVariable(), exprCost + 1); } From 4d1d5930fcdbaa0ae6fcdfa26a3809b749964e1b Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 13 Aug 2024 16:49:07 +0800 Subject: [PATCH 03/13] check mv by memo plan --- .../doris/regression/suite/Suite.groovy | 20 +++++++++++++++++++ .../mv/agg_on_none_agg/agg_on_none_agg.groovy | 18 ++++++++--------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy index f3641b623a0f4c..85f3267e894a77 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy @@ -1476,6 +1476,26 @@ class Suite implements GroovyInterceptable { } } + def check_mv_rewrite_success_by_memo = { db, mv_sql, query_sql, mv_name -> + + sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" + sql""" + CREATE MATERIALIZED VIEW ${mv_name} + BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL + DISTRIBUTED BY RANDOM BUCKETS 2 + PROPERTIES ('replication_num' = '1') + AS ${mv_sql} + """ + sql "analyze table ${mv_name} with sync;" + + def job_name = getJobName(db, mv_name); + waitingMTMVTaskFinished(job_name) + explain { + sql(" memo plan ${query_sql}") + contains("+--PhysicalOlapScan[${mv_name}]@") + } + } + def check_mv_rewrite_success_without_check_chosen = { db, mv_sql, query_sql, mv_name -> sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy index 2219354e417cff..5f077520e92fba 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy @@ -173,7 +173,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + check_mv_rewrite_success_by_memo(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -195,7 +195,7 @@ suite("agg_on_none_agg") { exp(bin(o_orderkey + 1)); """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + check_mv_rewrite_success_by_memo(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -221,7 +221,7 @@ suite("agg_on_none_agg") { exp(bin(o_orderkey + 1)); """ order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + check_mv_rewrite_success_by_memo(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -298,7 +298,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query3_0_before "${query3_0}" - check_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") + check_mv_rewrite_success_by_memo(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -375,7 +375,7 @@ suite("agg_on_none_agg") { """ order_qt_query3_3_before "${query3_3}" // the filter slot used in query can not be found from mv - check_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") + check_mv_rewrite_success_by_memo(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -401,7 +401,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + check_mv_rewrite_success_by_memo(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -430,7 +430,7 @@ suite("agg_on_none_agg") { l_partkey; """ order_qt_query4_1_before "${query4_1}" - check_mv_rewrite_success(db, mv4_1, query4_1, "mv4_1") + check_mv_rewrite_success_by_memo(db, mv4_1, query4_1, "mv4_1") order_qt_query4_1_after "${query4_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_1""" @@ -454,7 +454,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + check_mv_rewrite_success_by_memo(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -482,7 +482,7 @@ suite("agg_on_none_agg") { l_linenumber; """ order_qt_query5_1_before "${query5_1}" - check_mv_rewrite_success(db, mv5_1, query5_1, "mv5_1") + check_mv_rewrite_success_by_memo(db, mv5_1, query5_1, "mv5_1") order_qt_query5_1_after "${query5_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_1""" } From 273c459f96dfe77a5e885cbbda2389ee95b1cb81 Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 13 Aug 2024 17:20:01 +0800 Subject: [PATCH 04/13] variant stats --- .../apache/doris/nereids/stats/StatsCalculator.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java index ab06a8c7fb8f4f..ad8e082fc5d438 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java @@ -422,7 +422,16 @@ private Statistics computeOlapScan(OlapScan olapScan) { } // if estimated mv rowCount is more than actual row count, fall back to base table stats if (selectedPartitionsRowCount > optStats.get().getRowCount()) { - return optStats.get(); + Statistics derivedStats = optStats.get(); + double derivedRowCount = derivedStats.getRowCount(); + for (Slot slot : ((Relation) olapScan).getOutput()) { + if (derivedStats.findColumnStatistics(slot) == null) { + derivedStats.addColumnStats(slot, + new ColumnStatisticBuilder(ColumnStatistic.UNKNOWN) + .setCount(derivedRowCount).build()); + } + } + return derivedStats; } } } From 2098aaa9b78ad9e1193d8af8a49ac3182cf998ae Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 13 Aug 2024 20:54:44 +0800 Subject: [PATCH 05/13] print stats fragment --- .../java/org/apache/doris/nereids/memo/GroupExpression.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java index 39fa8d3de22ce1..f6450bca07341b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java @@ -334,7 +334,7 @@ public String toString() { builder.append("#").append(ownerGroup.getGroupId().asInt()); } if (cost != null) { - builder.append(" cost=").append(format.format((long) cost.getValue()) + " " + cost); + builder.append(" cost=").append(cost.getValue() + " " + cost); } else { builder.append(" cost=null"); } From 3b4700f14e1bc129ead6b7542db15463d74bdbb0 Mon Sep 17 00:00:00 2001 From: minghong Date: Wed, 14 Aug 2024 10:39:59 +0800 Subject: [PATCH 06/13] use derive stats --- .../java/org/apache/doris/nereids/stats/StatsCalculator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java index ad8e082fc5d438..bfff21ab3a500b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java @@ -421,7 +421,7 @@ private Statistics computeOlapScan(OlapScan olapScan) { selectedPartitionsRowCount = tableRowCount; } // if estimated mv rowCount is more than actual row count, fall back to base table stats - if (selectedPartitionsRowCount > optStats.get().getRowCount()) { + if (selectedPartitionsRowCount >= optStats.get().getRowCount()) { Statistics derivedStats = optStats.get(); double derivedRowCount = derivedStats.getRowCount(); for (Slot slot : ((Relation) olapScan).getOutput()) { @@ -472,7 +472,7 @@ private Statistics computeOlapScan(OlapScan olapScan) { } } - if (!olapScan.getSelectedPartitionIds().isEmpty()) { + if (olapScan.getSelectedPartitionIds().size() < olapScan.getTable().getPartitionNum()) { // partition pruned double selectedPartitionsRowCount = getSelectedPartitionRowCount(olapScan); if (selectedPartitionsRowCount > 0) { From 430f038217a24e1846f71b1b7b1f538af84d5b92 Mon Sep 17 00:00:00 2001 From: minghong Date: Wed, 14 Aug 2024 11:29:19 +0800 Subject: [PATCH 07/13] analyze mv --- .../org/apache/doris/regression/suite/Suite.groovy | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy index 85f3267e894a77..ee554da415a278 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy @@ -1466,10 +1466,12 @@ class Suite implements GroovyInterceptable { PROPERTIES ('replication_num' = '1') AS ${mv_sql} """ - sql "analyze table ${mv_name} with sync;" - + def job_name = getJobName(db, mv_name); waitingMTMVTaskFinished(job_name) + + sql "analyze table ${mv_name} with sync;" + explain { sql("${query_sql}") contains("${mv_name}(${mv_name})") @@ -1486,10 +1488,11 @@ class Suite implements GroovyInterceptable { PROPERTIES ('replication_num' = '1') AS ${mv_sql} """ - sql "analyze table ${mv_name} with sync;" - def job_name = getJobName(db, mv_name); waitingMTMVTaskFinished(job_name) + + sql "analyze table ${mv_name} with sync;" + explain { sql(" memo plan ${query_sql}") contains("+--PhysicalOlapScan[${mv_name}]@") @@ -1509,6 +1512,9 @@ class Suite implements GroovyInterceptable { def job_name = getJobName(db, mv_name); waitingMTMVTaskFinished(job_name) + + sql "analyze table ${mv_name} with sync;" + explain { sql("${query_sql}") check {result -> From 2efb1b300f446a42ef6ad132ab9cb83f774142f2 Mon Sep 17 00:00:00 2001 From: englefly Date: Wed, 14 Aug 2024 23:47:24 +0800 Subject: [PATCH 08/13] use memo plan to check mv --- .../apache/doris/nereids/NereidsPlanner.java | 23 +-- .../mv/MaterializationContext.java | 15 +- .../plans/physical/PhysicalOlapScan.java | 2 +- .../doris/regression/suite/Suite.groovy | 59 ++++---- .../suites/mv_p0/k1s2m3/k1s2m3.groovy | 49 +----- .../multiple_ssb_between.groovy | 93 +++--------- .../suites/mv_p0/sum_count/sum_count.groovy | 68 ++------- .../testAggQueryOnAggMV1.groovy | 77 ++-------- .../testSelectMVWithTableAlias.groovy | 24 +-- .../where/k123_nereids/k123_nereids.groovy | 142 +++--------------- .../mv/agg_on_none_agg/agg_on_none_agg.groovy | 26 ++-- .../agg_optimize_when_uniform.groovy | 20 +-- .../mv/agg_variety/agg_variety.groovy | 20 +-- .../aggregate_with_roll_up.groovy | 78 +++++----- .../aggregate_without_roll_up.groovy | 66 ++++---- .../materialized_view_switch.groovy | 10 +- .../mv/grouping_sets/grouping_sets.groovy | 28 ++-- .../join/dphyp_inner/inner_join_dphyp.groovy | 40 ++--- .../join/dphyp_outer/outer_join_dphyp.groovy | 38 ++--- .../mv/join/inner/inner_join.groovy | 40 ++--- .../mv/join/left_outer/outer_join.groovy | 42 +++--- .../mv/nested/nested_materialized_view.groovy | 4 +- .../mv/scan/scan_table.groovy | 8 +- .../mv/ssb/mv_ssb_test.groovy | 26 ++-- .../mv/tpch/mv_tpch_test.groovy | 44 +++--- .../mv/variant/variant_mv.groovy | 34 ++--- .../mv/newMv/aggHaveDupBase.groovy | 52 ++----- .../mv/ut/aggOnAggMV5.groovy | 26 +--- .../mv/ut/distinctQuery.groovy | 26 +--- 29 files changed, 417 insertions(+), 763 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java index 78d2025f40dff2..2fc06a9833034b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java @@ -534,6 +534,12 @@ public String getHintExplainString(List hints) { public String getExplainString(ExplainOptions explainOptions) { ExplainLevel explainLevel = getExplainLevel(explainOptions); String plan = ""; + String mvSummary = ""; + if (this.getPhysicalPlan() != null) { + mvSummary = "\n\n========== MATERIALIZATIONS ==========\n" + + MaterializationContext.toSummaryString(cascadesContext.getMaterializationContexts(), + this.getPhysicalPlan()); + } switch (explainLevel) { case PARSED_PLAN: plan = parsedPlan.treeString(); @@ -545,22 +551,16 @@ public String getExplainString(ExplainOptions explainOptions) { plan = rewrittenPlan.treeString(); break; case OPTIMIZED_PLAN: - plan = "cost = " + cost + "\n" + optimizedPlan.treeString(); + plan = "cost = " + cost + "\n" + optimizedPlan.treeString() + mvSummary; break; case SHAPE_PLAN: plan = optimizedPlan.shape(""); break; case MEMO_PLAN: - StringBuilder materializationStringBuilder = new StringBuilder(); - materializationStringBuilder.append("materializationContexts:").append("\n"); - for (MaterializationContext ctx : cascadesContext.getMaterializationContexts()) { - materializationStringBuilder.append("\n").append(ctx).append("\n"); - } plan = cascadesContext.getMemo().toString() + "\n\n========== OPTIMIZED PLAN ==========\n" + optimizedPlan.treeString() - + "\n\n========== MATERIALIZATIONS ==========\n" - + materializationStringBuilder; + + mvSummary; break; case DISTRIBUTED_PLAN: StringBuilder distributedPlanStringBuilder = new StringBuilder(); @@ -592,17 +592,18 @@ public String getExplainString(ExplainOptions explainOptions) { + getTimeMetricString(SummaryProfile::getPrettyNereidsDistributeTime) + " ==========\n"; plan += DistributedPlan.toString(Lists.newArrayList(distributedPlans.values())) + "\n\n"; } + plan += mvSummary; break; default: - plan = super.getExplainString(explainOptions) - + MaterializationContext.toSummaryString(cascadesContext.getMaterializationContexts(), - this.getPhysicalPlan()); + plan = super.getExplainString(explainOptions); + plan += mvSummary; if (statementContext != null) { if (statementContext.isHasUnknownColStats()) { plan += "\n\nStatistics\n planed with unknown column statistics\n"; } } } + if (statementContext != null) { if (!statementContext.getHints().isEmpty()) { String hint = getHintExplainString(statementContext.getHints()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializationContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializationContext.java index bd1dcee1bbb3dd..7913c47b36a8dd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializationContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializationContext.java @@ -374,7 +374,10 @@ public Void visitPhysicalRelation(PhysicalRelation physicalRelation, Void contex builder.append("\nMaterializedViewRewriteSuccessAndChose:\n"); if (!chosenMaterializationQualifiers.isEmpty()) { chosenMaterializationQualifiers.forEach(materializationQualifier -> - builder.append(generateIdentifierName(materializationQualifier)).append(", \n")); + builder.append(" ") + .append(generateIdentifierName(materializationQualifier)).append(" chose, \n")); + } else { + builder.append(" chose: none, \n"); } // rewrite success but not chosen builder.append("\nMaterializedViewRewriteSuccessButNotChose:\n"); @@ -383,9 +386,11 @@ public Void visitPhysicalRelation(PhysicalRelation physicalRelation, Void contex .filter(materializationQualifier -> !chosenMaterializationQualifiers.contains(materializationQualifier)) .collect(Collectors.toSet()); if (!rewriteSuccessButNotChoseQualifiers.isEmpty()) { - builder.append(" Names: "); rewriteSuccessButNotChoseQualifiers.forEach(materializationQualifier -> - builder.append(generateIdentifierName(materializationQualifier)).append(", ")); + builder.append(" ") + .append(generateIdentifierName(materializationQualifier)).append(" not chose, \n")); + } else { + builder.append(" not chose: none, \n"); } // rewrite fail builder.append("\nMaterializedViewRewriteFail:"); @@ -394,8 +399,8 @@ public Void visitPhysicalRelation(PhysicalRelation physicalRelation, Void contex Set failReasonSet = ctx.getFailReason().values().stream().map(Pair::key).collect(ImmutableSet.toImmutableSet()); builder.append("\n") - .append(" Name: ").append(generateIdentifierName(ctx.generateMaterializationIdentifier())) - .append("\n") + .append(" ") + .append(generateIdentifierName(ctx.generateMaterializationIdentifier())).append(" fail, \n") .append(" FailSummary: ").append(String.join(", ", failReasonSet)); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java index 81787c4cfe0c57..698a189aa265ba 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java @@ -124,7 +124,7 @@ public String toString() { } String index = ""; if (selectedIndexId != getTable().getBaseIndexId()) { - index = "(" + selectedIndexId + ")"; + index = "(" + getTable().getIndexNameById(selectedIndexId) + ")"; } String partitions = ""; int partitionCount = this.table.getPartitionNames().size(); diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy index ee554da415a278..e91642e78261ed 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy @@ -1456,29 +1456,36 @@ class Suite implements GroovyInterceptable { return result.values().toList() } - def check_mv_rewrite_success = { db, mv_sql, query_sql, mv_name -> - - sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" - sql""" - CREATE MATERIALIZED VIEW ${mv_name} - BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL - DISTRIBUTED BY RANDOM BUCKETS 2 - PROPERTIES ('replication_num' = '1') - AS ${mv_sql} - """ + def mv_rewrite_success = { query_sql, mv_name -> + explain { + sql(" memo plan ${query_sql}") + contains("${mv_name} chose") + } + } - def job_name = getJobName(db, mv_name); - waitingMTMVTaskFinished(job_name) + def mv_rewrite_success_without_check_chosen = { query_sql, mv_name -> + explain { + sql(" memo plan ${query_sql}") + contains("${mv_name} not chose") + } + } - sql "analyze table ${mv_name} with sync;" + def mv_rewrite_fail = { query_sql, mv_name -> + explain { + sql(" memo plan ${query_sql}") + contains("${mv_name} fail") + } + } + def mv_rewrite_all_fail = {query_sql -> explain { - sql("${query_sql}") - contains("${mv_name}(${mv_name})") + sql(" memo plan ${query_sql}") + contains("chose: none") + contains("not chose: none") } } - def check_mv_rewrite_success_by_memo = { db, mv_sql, query_sql, mv_name -> + def async_mv_rewrite_success = { db, mv_sql, query_sql, mv_name -> sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" sql""" @@ -1495,11 +1502,11 @@ class Suite implements GroovyInterceptable { explain { sql(" memo plan ${query_sql}") - contains("+--PhysicalOlapScan[${mv_name}]@") + contains("${mv_name} chose") } } - def check_mv_rewrite_success_without_check_chosen = { db, mv_sql, query_sql, mv_name -> + def async_mv_rewrite_success_without_check_chosen = { db, mv_sql, query_sql, mv_name -> sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" sql""" @@ -1516,16 +1523,13 @@ class Suite implements GroovyInterceptable { sql "analyze table ${mv_name} with sync;" explain { - sql("${query_sql}") - check {result -> - def splitResult = result.split("MaterializedViewRewriteFail") - splitResult.length == 2 ? splitResult[0].contains(mv_name) : false - } + sql(" memo plan ${query_sql}") + notContains("${mv_name} fail") } } - def check_mv_rewrite_fail = { db, mv_sql, query_sql, mv_name -> + def async_mv_rewrite_fail = { db, mv_sql, query_sql, mv_name -> sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}""" sql""" @@ -1538,9 +1542,12 @@ class Suite implements GroovyInterceptable { def job_name = getJobName(db, mv_name); waitingMTMVTaskFinished(job_name) + + sql "analyze table ${mv_name} with sync;" + explain { - sql("${query_sql}") - notContains("${mv_name}(${mv_name})") + sql(" memo plan ${query_sql}") + contains("${mv_name} fail") } } diff --git a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy index 314673e3b65aa9..dd0a63c40b9737 100644 --- a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy +++ b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy @@ -41,8 +41,8 @@ suite ("k1s2m3") { sql "insert into d_table select -4,-4,-4,'d';" sql "insert into d_table(k4,k2) values('d',4);" + sql "analyze table d_table with sync;" - sql """set enable_stats=false;""" qt_select_star "select * from d_table order by k1;" @@ -51,65 +51,38 @@ suite ("k1s2m3") { contains "(k1s2m3)" } qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - explain { sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") contains "(k1s2m3)" } qt_select_mv "select K1,sum(K2*K3) from d_table group by K1 order by K1;" - sql """set enable_stats=true;""" - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - - explain { - sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") - contains "(k1s2m3)" - } - sql""" drop materialized view k1s2m3 on d_table; """ createMV("create materialized view k1s2m3 as select K1,sum(K2*K3) from d_table group by K1;") + sql "analyze table d_table" - sql """set enable_stats=false;""" explain { sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") contains "(k1s2m3)" } qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - explain { sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") contains "(k1s2m3)" } qt_select_mv "select K1,sum(K2*K3) from d_table group by K1 order by K1;" - sql "delete from d_table where k1=1;" - + sql "analyze table d_table" explain { sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") contains "(k1s2m3)" } qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - sql """set enable_stats=true;""" - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - - explain { - sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") - contains "(k1s2m3)" - } - - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - sql """set enable_stats=false;""" createMV("create materialized view kdup321 as select k3,k2,k1 from d_table;") + + sql "analyze table d_table" + explain { sql("select count(k2) from d_table where k3 = 1;") contains "(kdup321)" @@ -118,24 +91,16 @@ suite ("k1s2m3") { qt_select_star "select * from d_table order by k1;" - sql """set enable_stats=true;""" - explain { - sql("select count(k2) from d_table where k3 = 1;") - contains "(kdup321)" - } - test { sql "create materialized view k1s2m3 as select K1,sum(k2*k3)+1 from d_table group by k1;" exception "cannot be included outside aggregate" } - test { sql "create materialized view k1s2m3 as select K1,abs(sum(k2*k3)+1) from d_table group by k1;" exception "cannot be included outside aggregate" } - test { sql "create materialized view k1s2m3 as select K1,sum(abs(sum(k2*k3)+1)) from d_table group by k1;" exception "aggregate function cannot contain aggregate parameters" } -} +} \ No newline at end of file diff --git a/regression-test/suites/mv_p0/ssb/multiple_ssb_between/multiple_ssb_between.groovy b/regression-test/suites/mv_p0/ssb/multiple_ssb_between/multiple_ssb_between.groovy index c1d719d8606ee1..71b737279f35bf 100644 --- a/regression-test/suites/mv_p0/ssb/multiple_ssb_between/multiple_ssb_between.groovy +++ b/regression-test/suites/mv_p0/ssb/multiple_ssb_between/multiple_ssb_between.groovy @@ -150,18 +150,18 @@ suite ("multiple_ssb_between") { qt_select_star "select * from lineorder_flat order by 1,2, P_MFGR;" sql "analyze table lineorder_flat with sync;" - sql """set enable_stats=false;""" + sql """set enable_stats=true;""" - explain { - sql("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue + mv_rewrite_success("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE LO_ORDERDATE >= 19930101 AND LO_ORDERDATE <= 19931231 AND LO_DISCOUNT BETWEEN 1 AND 3 - AND LO_QUANTITY < 25;""") - contains "(lineorder_q_1_1)" - } + AND LO_QUANTITY < 25;""", + "lineorder_q_1_1" + ) + qt_select_q_1_1 """SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE @@ -170,16 +170,16 @@ suite ("multiple_ssb_between") { AND LO_DISCOUNT BETWEEN 1 AND 3 AND LO_QUANTITY < 25;""" - explain { - sql("""SELECT + mv_rewrite_success("""SELECT SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA' GROUP BY (LO_ORDERDATE DIV 10000), P_BRAND - ORDER BY YEAR, P_BRAND;""") - contains "(lineorder_q_2_1)" - } + ORDER BY YEAR, P_BRAND;""", + "lineorder_q_2_1" + ) + qt_select_q_2_1 """SELECT SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, P_BRAND @@ -188,8 +188,7 @@ suite ("multiple_ssb_between") { GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND;""" - explain { - sql("""SELECT + mv_rewrite_success("""SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue @@ -200,9 +199,9 @@ suite ("multiple_ssb_between") { AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231 GROUP BY C_NATION, S_NATION, YEAR - ORDER BY YEAR ASC, revenue DESC;""") - contains "(lineorder_q_3_1)" - } + ORDER BY YEAR ASC, revenue DESC;""", + "lineorder_q_3_1") + qt_select_q_3_1 """SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, @@ -216,8 +215,7 @@ suite ("multiple_ssb_between") { GROUP BY C_NATION, S_NATION, YEAR ORDER BY YEAR ASC, revenue DESC;""" - explain { - sql("""SELECT (LO_ORDERDATE DIV 10000) AS YEAR, + mv_rewrite_success("""SELECT (LO_ORDERDATE DIV 10000) AS YEAR, C_NATION, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat @@ -226,9 +224,9 @@ suite ("multiple_ssb_between") { AND S_REGION = 'AMERICA' AND P_MFGR IN ('MFGR#1', 'MFGR#2') GROUP BY YEAR, C_NATION - ORDER BY YEAR ASC, C_NATION ASC;""") - contains "(lineorder_q_4_1)" - } + ORDER BY YEAR ASC, C_NATION ASC;""", + "lineorder_q_4_1") + qt_select_q_4_1 """SELECT (LO_ORDERDATE DIV 10000) AS YEAR, C_NATION, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit @@ -240,56 +238,5 @@ suite ("multiple_ssb_between") { GROUP BY YEAR, C_NATION ORDER BY YEAR ASC, C_NATION ASC;""" - sql """set enable_stats=true;""" - explain { - sql("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue - FROM lineorder_flat - WHERE - LO_ORDERDATE >= 19930101 - AND LO_ORDERDATE <= 19931231 - AND LO_DISCOUNT BETWEEN 1 AND 3 - AND LO_QUANTITY < 25;""") - contains "(lineorder_q_1_1)" - } - - explain { - sql("""SELECT - SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, - P_BRAND - FROM lineorder_flat - WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA' - GROUP BY (LO_ORDERDATE DIV 10000), P_BRAND - ORDER BY YEAR, P_BRAND;""") - contains "(lineorder_q_2_1)" - } - - explain { - sql("""SELECT - C_NATION, - S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, - SUM(LO_REVENUE) AS revenue - FROM lineorder_flat - WHERE - C_REGION = 'ASIA' - AND S_REGION = 'ASIA' - AND LO_ORDERDATE >= 19920101 - AND LO_ORDERDATE <= 19971231 - GROUP BY C_NATION, S_NATION, YEAR - ORDER BY YEAR ASC, revenue DESC;""") - contains "(lineorder_q_3_1)" - } - - explain { - sql("""SELECT (LO_ORDERDATE DIV 10000) AS YEAR, - C_NATION, - SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit - FROM lineorder_flat - WHERE - C_REGION = 'AMERICA' - AND S_REGION = 'AMERICA' - AND P_MFGR IN ('MFGR#1', 'MFGR#2') - GROUP BY YEAR, C_NATION - ORDER BY YEAR ASC, C_NATION ASC;""") - contains "(lineorder_q_4_1)" - } + } diff --git a/regression-test/suites/mv_p0/sum_count/sum_count.groovy b/regression-test/suites/mv_p0/sum_count/sum_count.groovy index 842e803de09c2d..e60c8d5dda1d1c 100644 --- a/regression-test/suites/mv_p0/sum_count/sum_count.groovy +++ b/regression-test/suites/mv_p0/sum_count/sum_count.groovy @@ -49,74 +49,32 @@ suite ("sum_count") { qt_select_star "select * from d_table order by k1,k2,k3,k4;" sql "analyze table d_table with sync;" - sql """set enable_stats=false;""" + sql """set enable_stats=true;""" - explain { - sql("select k1,k4,sum(k2),count(k2) from d_table group by k1,k4;") - contains "(kavg)" - } + mv_rewrite_success("select k1,k4,sum(k2),count(k2) from d_table group by k1,k4;", "kavg") + qt_select_mv "select k1,k4,sum(k2),count(k2) from d_table group by k1,k4 order by 1,2;" - explain { - sql("select k1,k4,sum(k1),count(k4) from d_table group by k1,k4;") - contains "(kavg_key)" - } + mv_rewrite_success("select k1,k4,sum(k1),count(k4) from d_table group by k1,k4;", "kavg_key") + qt_select_mv "select k1,k4,sum(k1),count(k4) from d_table group by k1,k4 order by 1,2;" - explain { - sql("select k1,k4,sum(1),count(1) from d_table group by k1,k4;") - contains "(kavg_const1)" - } + mv_rewrite_success ("select k1,k4,sum(1),count(1) from d_table group by k1,k4;", "kavg_const1") + qt_select_mv "select k1,k4,sum(1),count(1) from d_table group by k1,k4 order by 1,2;" - explain { - sql("select k1,k4,sum(2) from d_table group by k1,k4;") - contains "(kavg_const2)" - } + mv_rewrite_success("select k1,k4,sum(2) from d_table group by k1,k4;", "kavg_const2") + qt_select_mv "select k1,k4,sum(2) from d_table group by k1,k4 order by 1,2;" - explain { - sql("select k1,k4,sum(3) from d_table group by k1,k4;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k1,k4,sum(3) from d_table group by k1,k4;") + qt_select_mv "select k1,k4,sum(3) from d_table group by k1,k4 order by 1,2;" - explain { - sql("select k1,k4,sum(1),count(3) from d_table group by k1,k4;") - contains "(kavg_const1)" - } + mv_rewrite_success("select k1,k4,sum(1),count(3) from d_table group by k1,k4;", "kavg_const1") + qt_select_mv "select k1,k4,sum(1),count(3) from d_table group by k1,k4 order by 1,2;" qt_select_mv "select k1,k4,count(*) from d_table group by k1,k4 order by 1,2;" - sql """set enable_stats=true;""" - explain { - sql("select k1,k4,sum(k2),count(k2) from d_table group by k1,k4;") - contains "(kavg)" - } - - explain { - sql("select k1,k4,sum(k1),count(k4) from d_table group by k1,k4;") - contains "(kavg_key)" - } - - explain { - sql("select k1,k4,sum(1),count(1) from d_table group by k1,k4;") - contains "(kavg_const1)" - } - - explain { - sql("select k1,k4,sum(2) from d_table group by k1,k4;") - contains "(kavg_const2)" - } - - explain { - sql("select k1,k4,sum(3) from d_table group by k1,k4;") - contains "(d_table)" - } - - explain { - sql("select k1,k4,sum(1),count(3) from d_table group by k1,k4;") - contains "(kavg_const1)" - } } diff --git a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy index 50d00ff07297a3..6dfb8b6809cff3 100644 --- a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy +++ b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy @@ -44,84 +44,33 @@ suite ("testAggQueryOnAggMV1") { sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" sql "analyze table emps with sync;" - sql """set enable_stats=false;""" - explain { - sql("select * from emps order by empid;") - contains "(emps)" - } + mv_rewrite_all_fail("select * from emps order by empid;") qt_select_star "select * from emps order by empid;" - explain { - sql("select sum(salary), deptno from emps group by deptno order by deptno;") - contains "(emps_mv)" - } + mv_rewrite_success("select sum(salary), deptno from emps group by deptno order by deptno;", "emps_mv") + qt_select_mv "select sum(salary), deptno from emps group by deptno order by deptno;" - explain { - sql("select sum(salary) as salary from emps;") - contains "(emps_mv)" - } + mv_rewrite_success("select sum(salary) as salary from emps;", "emps_mv") + qt_select_mv "select sum(salary) as salary from emps;" - explain { - sql("select deptno, count(deptno) from emps group by deptno order by deptno;") - contains "(emps_mv_count_key)" - } + mv_rewrite_success("select deptno, count(deptno) from emps group by deptno order by deptno;", "emps_mv_count_key") + qt_select_mv "select deptno, count(deptno) from emps group by deptno order by deptno;" - explain { - sql("select deptno, sum(if(empid = 1, empid, salary)) from emps group by deptno;") - contains "(emps_mv_if)" - } + mv_rewrite_success("select deptno, sum(if(empid = 1, empid, salary)) from emps group by deptno;", "emps_mv_if") + qt_select_mv "select deptno, sum(if(empid = 1, empid, salary)) from emps group by deptno order by deptno;" - explain { - sql("select deptno, count(deptno) from emps where deptno=1 group by deptno order by deptno;") - contains "(emps_mv_count_key)" - } + mv_rewrite_success("select deptno, count(deptno) from emps where deptno=1 group by deptno order by deptno;", "emps_mv_count_key") + qt_select_mv "select deptno, count(deptno) from emps where deptno=1 group by deptno order by deptno;" - explain { - sql("select deptno, sum(salary), max(commission) from emps where salary=1 group by deptno order by deptno;") - contains "(emps)" - } + mv_rewrite_all_fail("select deptno, sum(salary), max(commission) from emps where salary=1 group by deptno order by deptno;") + qt_select_mv "select deptno, sum(salary), max(commission) from emps where salary=1 group by deptno order by deptno;" - sql """set enable_stats=true;""" - explain { - sql("select * from emps order by empid;") - contains "(emps)" - } - - explain { - sql("select sum(salary), deptno from emps group by deptno order by deptno;") - contains "(emps_mv)" - } - - explain { - sql("select sum(salary) as salary from emps;") - contains "(emps_mv)" - } - - explain { - sql("select deptno, count(deptno) from emps group by deptno order by deptno;") - contains "(emps_mv_count_key)" - } - - explain { - sql("select deptno, sum(if(empid = 1, empid, salary)) from emps group by deptno;") - contains "(emps_mv_if)" - } - - explain { - sql("select deptno, count(deptno) from emps where deptno=1 group by deptno order by deptno;") - contains "(emps_mv_count_key)" - } - - explain { - sql("select deptno, sum(salary), max(commission) from emps where salary=1 group by deptno order by deptno;") - contains "(emps)" - } } \ No newline at end of file diff --git a/regression-test/suites/mv_p0/ut/testSelectMVWithTableAlias/testSelectMVWithTableAlias.groovy b/regression-test/suites/mv_p0/ut/testSelectMVWithTableAlias/testSelectMVWithTableAlias.groovy index be30ffc157ab61..67da303968e678 100644 --- a/regression-test/suites/mv_p0/ut/testSelectMVWithTableAlias/testSelectMVWithTableAlias.groovy +++ b/regression-test/suites/mv_p0/ut/testSelectMVWithTableAlias/testSelectMVWithTableAlias.groovy @@ -37,28 +37,12 @@ suite ("testSelectMVWithTableAlias") { sql """insert into user_tags values("2020-01-01",1,"a",1);""" sql "analyze table user_tags with sync;" - sql """set enable_stats=false;""" - explain { - sql("select * from user_tags order by time_col;") - contains "(user_tags)" - } + mv_rewrite_all_fail("select * from user_tags order by time_col;") + qt_select_star "select * from user_tags order by time_col;" - explain { - sql("select count(tag_id) from user_tags t;") - contains "(user_tags_mv)" - } + mv_rewrite_success("select count(tag_id) from user_tags t;", "user_tags_mv") + qt_select_mv "select count(tag_id) from user_tags t;" - - sql """set enable_stats=true;""" - explain { - sql("select * from user_tags order by time_col;") - contains "(user_tags)" - } - - explain { - sql("select count(tag_id) from user_tags t;") - contains "(user_tags_mv)" - } } diff --git a/regression-test/suites/mv_p0/where/k123_nereids/k123_nereids.groovy b/regression-test/suites/mv_p0/where/k123_nereids/k123_nereids.groovy index a68dfe3bf396d4..21c01eafebe6dd 100644 --- a/regression-test/suites/mv_p0/where/k123_nereids/k123_nereids.groovy +++ b/regression-test/suites/mv_p0/where/k123_nereids/k123_nereids.groovy @@ -49,148 +49,56 @@ suite ("k123p_nereids") { qt_select_star "select * from d_table order by k1;" sql "analyze table d_table with sync;" - sql """set enable_stats=false;""" - explain { - sql("select k1,k2+k3 from d_table order by k1;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k1,k2+k3 from d_table order by k1;") + qt_select_mv "select k1,k2+k3 from d_table order by k1;" - explain { - sql("select k1,k2+k3 from d_table where k1 = 1 order by k1;") - contains "(k123p1w)" - } + mv_rewrite_success("select k1,k2+k3 from d_table where k1 = 1 order by k1;", + "k123p1w") + qt_select_mv "select k1,k2+k3 from d_table where k1 = 1 order by k1;" - explain { - sql("select k1,k2+k3 from d_table where k1 = 2 order by k1;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k1,k2+k3 from d_table where k1 = 2 order by k1;") + qt_select_mv "select k1,k2+k3 from d_table where k1 = 2 order by k1;" - explain { - sql("select k1,k2+k3 from d_table where k1 = '1' order by k1;") - contains "(k123p1w)" - } + mv_rewrite_success("select k1,k2+k3 from d_table where k1 = '1' order by k1;", "k123p1w") + qt_select_mv "select k1,k2+k3 from d_table where k1 = '1' order by k1;" - explain { - sql("select k1,k2+k3 from d_table where k4 = 'b' order by k1;") - contains "(k123p4w)" - } + mv_rewrite_success("select k1,k2+k3 from d_table where k4 = 'b' order by k1;", "k123p4w") + qt_select_mv "select k1,k2+k3 from d_table where k4 = 'b' order by k1;" - explain { - sql("select k1,k2+k3 from d_table where k4 = 'a' order by k1;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k1,k2+k3 from d_table where k4 = 'a' order by k1;") + qt_select_mv "select k1,k2+k3 from d_table where k4 = 'a' order by k1;" - explain { - sql("""select k1,k2+k3 from d_table where k1 = 2 and k4 = "b";""") - contains "(k123p4w)" - } + mv_rewrite_success("""select k1,k2+k3 from d_table where k1 = 2 and k4 = "b";""", "k123p4w") + qt_select_mv """select k1,k2+k3 from d_table where k1 = 2 and k4 = "b" order by k1;""" qt_select_mv_constant """select bitmap_empty() from d_table where true;""" - explain { - sql("select k2 from d_table where k1=1 and (k1>2 or k1 < 0) order by k2;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k2 from d_table where k1=1 and (k1>2 or k1 < 0) order by k2;") + qt_select_mv "select k2 from d_table where k1=1 and (k1>2 or k1 < 0) order by k2;" - explain { - sql("select k2 from d_table where k1>10 order by k2;") - contains "(kwh2)" - } + mv_rewrite_success("select k2 from d_table where k1>10 order by k2;", "kwh2") - explain { - sql("select k2 from d_table where k1>10 or k2 = 0 order by k2;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k2 from d_table where k1>10 or k2 = 0 order by k2;") - explain { - sql("select k2 from d_table where k1=1 and (k2>2 or k2<0) order by k2;") - contains "(kwh1)" - } + mv_rewrite_success("select k2 from d_table where k1=1 and (k2>2 or k2<0) order by k2;", "kwh1") + qt_select_mv "select k2 from d_table where k1=1 and (k2>2 or k2<0) order by k2;" - explain { - sql("select k2,k1=1 from d_table where k1=1 order by k2;") - contains "(kwh1)" - } + mv_rewrite_success("select k2,k1=1 from d_table where k1=1 order by k2;", "kwh1") + qt_select_mv "select k2,k1=1 from d_table where k1=1 order by k2;" - explain { - sql("select k2,k1=2 from d_table where k1=1 order by k2;") - contains "(d_table)" - } + mv_rewrite_all_fail("select k2,k1=2 from d_table where k1=1 order by k2;") + qt_select_mv "select k2,k1=2 from d_table where k1=1 order by k2;" - sql """set enable_stats=true;""" - explain { - sql("select k1,k2+k3 from d_table order by k1;") - contains "(d_table)" - } - - explain { - sql("select k1,k2+k3 from d_table where k1 = 1 order by k1;") - contains "(k123p1w)" - } - - explain { - sql("select k1,k2+k3 from d_table where k1 = 2 order by k1;") - contains "(d_table)" - } - - explain { - sql("select k1,k2+k3 from d_table where k1 = '1' order by k1;") - contains "(k123p1w)" - } - - explain { - sql("select k1,k2+k3 from d_table where k4 = 'b' order by k1;") - contains "(k123p4w)" - } - - explain { - sql("select k1,k2+k3 from d_table where k4 = 'a' order by k1;") - contains "(d_table)" - } - - explain { - sql("""select k1,k2+k3 from d_table where k1 = 2 and k4 = "b";""") - contains "(k123p4w)" - } - - explain { - sql("select k2 from d_table where k1=1 and (k1>2 or k1 < 0) order by k2;") - contains "(d_table)" - } - - explain { - sql("select k2 from d_table where k1>10 order by k2;") - contains "(kwh2)" - } - - explain { - sql("select k2 from d_table where k1>10 or k2 = 0 order by k2;") - contains "(d_table)" - } - - explain { - sql("select k2 from d_table where k1=1 and (k2>2 or k2<0) order by k2;") - contains "(kwh1)" - } - - explain { - sql("select k2,k1=1 from d_table where k1=1 order by k2;") - contains "(kwh1)" - } - - explain { - sql("select k2,k1=2 from d_table where k1=1 order by k2;") - } } diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy index 5f077520e92fba..59e0bff9f767dd 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_on_none_agg/agg_on_none_agg.groovy @@ -173,7 +173,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success_by_memo(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -195,7 +195,7 @@ suite("agg_on_none_agg") { exp(bin(o_orderkey + 1)); """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success_by_memo(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -221,7 +221,7 @@ suite("agg_on_none_agg") { exp(bin(o_orderkey + 1)); """ order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success_by_memo(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -247,7 +247,7 @@ suite("agg_on_none_agg") { o_shippriority; """ order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -274,7 +274,7 @@ suite("agg_on_none_agg") { l_suppkey; """ order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_fail(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_fail(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -298,7 +298,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query3_0_before "${query3_0}" - check_mv_rewrite_success_by_memo(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -322,7 +322,7 @@ suite("agg_on_none_agg") { """ order_qt_query3_1_before "${query3_1}" // the filter slot used in query can not be found from mv - check_mv_rewrite_fail(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_fail(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -347,7 +347,7 @@ suite("agg_on_none_agg") { """ order_qt_query3_2_before "${query3_2}" // the filter slot used in query can not be found from mv - check_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -375,7 +375,7 @@ suite("agg_on_none_agg") { """ order_qt_query3_3_before "${query3_3}" // the filter slot used in query can not be found from mv - check_mv_rewrite_success_by_memo(db, mv3_3, query3_3, "mv3_3") + async_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -401,7 +401,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success_by_memo(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -430,7 +430,7 @@ suite("agg_on_none_agg") { l_partkey; """ order_qt_query4_1_before "${query4_1}" - check_mv_rewrite_success_by_memo(db, mv4_1, query4_1, "mv4_1") + async_mv_rewrite_success(db, mv4_1, query4_1, "mv4_1") order_qt_query4_1_after "${query4_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_1""" @@ -454,7 +454,7 @@ suite("agg_on_none_agg") { bin(o_orderkey); """ order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success_by_memo(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -482,7 +482,7 @@ suite("agg_on_none_agg") { l_linenumber; """ order_qt_query5_1_before "${query5_1}" - check_mv_rewrite_success_by_memo(db, mv5_1, query5_1, "mv5_1") + async_mv_rewrite_success(db, mv5_1, query5_1, "mv5_1") order_qt_query5_1_after "${query5_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_1""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_optimize_when_uniform/agg_optimize_when_uniform.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_optimize_when_uniform/agg_optimize_when_uniform.groovy index 78deeb776d6b87..285f429d0f76b6 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_optimize_when_uniform/agg_optimize_when_uniform.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_optimize_when_uniform/agg_optimize_when_uniform.groovy @@ -157,7 +157,7 @@ suite("agg_optimize_when_uniform") { o_orderdate; """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") qt_shape1_0_after """explain shape plan ${query1_0}""" order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -194,7 +194,7 @@ suite("agg_optimize_when_uniform") { bin(o_orderkey); """ order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") qt_shape2_0_after """explain shape plan ${query2_0}""" order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -225,7 +225,7 @@ suite("agg_optimize_when_uniform") { o_comment; """ order_qt_query3_0_before "${query3_0}" - check_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") // query success and doesn't add aggregate qt_shape3_0_after """explain shape plan ${query3_0}""" order_qt_query3_0_after "${query3_0}" @@ -258,7 +258,7 @@ suite("agg_optimize_when_uniform") { """ order_qt_query3_1_before "${query3_1}" // query where has a column not in agg output - check_mv_rewrite_fail(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_fail(db, mv3_1, query3_1, "mv3_1") qt_shape3_1_after """explain shape plan ${query3_1}""" order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -291,7 +291,7 @@ suite("agg_optimize_when_uniform") { """ order_qt_query4_0_before "${query4_0}" // query success but add agg - check_mv_rewrite_success_without_check_chosen(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success_without_check_chosen(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -327,7 +327,7 @@ suite("agg_optimize_when_uniform") { l_suppkey; """ order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") qt_shape5_0_after """explain shape plan ${query5_0}""" order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -370,7 +370,7 @@ suite("agg_optimize_when_uniform") { bin(o_orderkey); """ order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") qt_shape6_0_after """explain shape plan ${query6_0}""" order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -406,7 +406,7 @@ suite("agg_optimize_when_uniform") { o_comment; """ order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") // query success and doesn't add aggregate qt_shape7_0_after """explain shape plan ${query7_0}""" order_qt_query7_0_after "${query7_0}" @@ -443,7 +443,7 @@ suite("agg_optimize_when_uniform") { """ order_qt_query7_1_before "${query7_1}" // query where has a column not in agg output - check_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") + async_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") qt_shape7_1_after """explain shape plan ${query7_1}""" order_qt_query7_1_after "${query7_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_1""" @@ -479,7 +479,7 @@ suite("agg_optimize_when_uniform") { """ order_qt_query8_0_before "${query8_0}" // query success but add agg - check_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") + async_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") qt_shape8_0_after """explain shape plan ${query8_0}""" order_qt_query8_0_after "${query8_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv8_0""" diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_variety/agg_variety.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_variety/agg_variety.groovy index 833d03c1edafe3..6c71dc7df64223 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_variety/agg_variety.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_variety/agg_variety.groovy @@ -183,7 +183,7 @@ suite("agg_variety") { bin(o_orderkey); """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -214,7 +214,7 @@ suite("agg_variety") { """ order_qt_query1_1_before "${query1_1}" // contains aggreagate function count with out distinct which is not supported, should fail - check_mv_rewrite_fail(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_fail(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -250,7 +250,7 @@ suite("agg_variety") { """ order_qt_query1_2_before "${query1_2}" // test the arguments in aggregate function is complex, should success - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -284,7 +284,7 @@ suite("agg_variety") { """ order_qt_query1_3_before "${query1_3}" // function use the dimension which is not in mv output, should fail - check_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -319,7 +319,7 @@ suite("agg_variety") { bin(o_orderkey); """ order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -352,7 +352,7 @@ suite("agg_variety") { bin(o_orderkey); """ order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -385,7 +385,7 @@ suite("agg_variety") { """ order_qt_query2_2_before "${query2_2}" // contains aggreagate function count which is not supported, should fail - check_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -423,7 +423,7 @@ suite("agg_variety") { """ order_qt_query2_3_before "${query2_3}" // aggregate function use complex expression, should success - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -462,7 +462,7 @@ suite("agg_variety") { """ order_qt_query2_4_before "${query2_4}" // function use the dimension which is not in mv output, should fail - check_mv_rewrite_fail(db, mv2_4, query2_4, "mv2_4") + async_mv_rewrite_fail(db, mv2_4, query2_4, "mv2_4") order_qt_query2_4_after "${query2_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" @@ -502,7 +502,7 @@ suite("agg_variety") { """ order_qt_query2_5_before "${query2_5}" // aggregate function use complex expression, should success - check_mv_rewrite_success(db, mv2_5, query2_5, "mv2_5") + async_mv_rewrite_success(db, mv2_5, query2_5, "mv2_5") order_qt_query2_5_after "${query2_5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_5""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_with_roll_up/aggregate_with_roll_up.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_with_roll_up/aggregate_with_roll_up.groovy index a76744ce962a52..a910be06ea68ed 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_with_roll_up/aggregate_with_roll_up.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_with_roll_up/aggregate_with_roll_up.groovy @@ -182,7 +182,7 @@ suite("aggregate_with_roll_up") { l_suppkey """ order_qt_query13_0_before "${query13_0}" - check_mv_rewrite_success(db, mv13_0, query13_0, "mv13_0") + async_mv_rewrite_success(db, mv13_0, query13_0, "mv13_0") order_qt_query13_0_after "${query13_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_0""" @@ -217,7 +217,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query13_1_before "${query13_1}" - check_mv_rewrite_fail(db, mv13_1, query13_1, "mv13_1") + async_mv_rewrite_fail(db, mv13_1, query13_1, "mv13_1") order_qt_query13_1_after "${query13_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_1""" @@ -251,7 +251,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query14_0_before "${query14_0}" - check_mv_rewrite_success(db, mv14_0, query14_0, "mv14_0") + async_mv_rewrite_success(db, mv14_0, query14_0, "mv14_0") order_qt_query14_0_after "${query14_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv14_0""" @@ -357,7 +357,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query16_0_before "${query16_0}" - check_mv_rewrite_success(db, mv16_0, query16_0, "mv16_0") + async_mv_rewrite_success(db, mv16_0, query16_0, "mv16_0") order_qt_query16_0_after "${query16_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv16_0""" @@ -392,7 +392,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query17_0_before "${query17_0}" - check_mv_rewrite_success(db, mv17_0, query17_0, "mv17_0") + async_mv_rewrite_success(db, mv17_0, query17_0, "mv17_0") order_qt_query17_0_after "${query17_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv17_0""" @@ -423,7 +423,7 @@ suite("aggregate_with_roll_up") { "l_shipdate, " + "l_suppkey" order_qt_query18_0_before "${query18_0}" - check_mv_rewrite_success(db, mv18_0, query18_0, "mv18_0") + async_mv_rewrite_success(db, mv18_0, query18_0, "mv18_0") order_qt_query18_0_after "${query18_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv18_0""" @@ -445,7 +445,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query19_0_before "${query19_0}" - check_mv_rewrite_success(db, mv19_0, query19_0, "mv19_0") + async_mv_rewrite_success(db, mv19_0, query19_0, "mv19_0") order_qt_query19_0_after "${query19_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_0""" @@ -476,7 +476,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query19_1_before "${query19_1}" - check_mv_rewrite_success(db, mv19_1, query19_1, "mv19_1") + async_mv_rewrite_success(db, mv19_1, query19_1, "mv19_1") order_qt_query19_1_after "${query19_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_1""" @@ -510,7 +510,7 @@ suite("aggregate_with_roll_up") { "o_orderdate, " + "l_suppkey" order_qt_query20_0_before "${query20_0}" - check_mv_rewrite_success(db, mv20_0, query20_0, "mv20_0") + async_mv_rewrite_success(db, mv20_0, query20_0, "mv20_0") order_qt_query20_0_after "${query20_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_0""" @@ -550,7 +550,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query20_1_before "${query20_1}" - check_mv_rewrite_success(db, mv20_1, query20_1, "mv20_1") + async_mv_rewrite_success(db, mv20_1, query20_1, "mv20_1") order_qt_query20_1_after "${query20_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_1""" @@ -584,7 +584,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query21_0_before "${query21_0}" - check_mv_rewrite_success(db, mv21_0, query21_0, "mv21_0") + async_mv_rewrite_success(db, mv21_0, query21_0, "mv21_0") order_qt_query21_0_after "${query21_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv21_0""" @@ -617,7 +617,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query22_0_before "${query22_0}" - check_mv_rewrite_success(db, mv22_0, query22_0, "mv22_0") + async_mv_rewrite_success(db, mv22_0, query22_0, "mv22_0") order_qt_query22_0_after "${query22_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv22_0""" @@ -650,7 +650,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query22_1_before "${query22_1}" - check_mv_rewrite_success(db, mv22_1, query22_1, "mv22_1") + async_mv_rewrite_success(db, mv22_1, query22_1, "mv22_1") order_qt_query22_1_after "${query22_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv22_1""" @@ -684,7 +684,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query23_0_before "${query23_0}" - check_mv_rewrite_success(db, mv23_0, query23_0, "mv23_0") + async_mv_rewrite_success(db, mv23_0, query23_0, "mv23_0") order_qt_query23_0_after "${query23_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv23_0""" @@ -716,7 +716,7 @@ suite("aggregate_with_roll_up") { "l_shipdate, " + "l_suppkey" order_qt_query24_0_before "${query24_0}" - check_mv_rewrite_success(db, mv24_0, query24_0, "mv24_0") + async_mv_rewrite_success(db, mv24_0, query24_0, "mv24_0") order_qt_query24_0_after "${query24_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv24_0""" @@ -747,7 +747,7 @@ suite("aggregate_with_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query25_0_before "${query25_0}" - check_mv_rewrite_success(db, mv25_0, query25_0, "mv25_0") + async_mv_rewrite_success(db, mv25_0, query25_0, "mv25_0") order_qt_query25_0_after "${query25_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_0""" @@ -784,7 +784,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query25_1_before "${query25_1}" - check_mv_rewrite_success(db, mv25_1, query25_1, "mv25_1") + async_mv_rewrite_success(db, mv25_1, query25_1, "mv25_1") order_qt_query25_1_after "${query25_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_1""" @@ -823,7 +823,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query25_2_before "${query25_2}" - check_mv_rewrite_success(db, mv25_2, query25_2, "mv25_2") + async_mv_rewrite_success(db, mv25_2, query25_2, "mv25_2") order_qt_query25_2_after "${query25_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_2""" @@ -864,7 +864,7 @@ suite("aggregate_with_roll_up") { l_suppkey + l_partkey; """ order_qt_query25_3_before "${query25_3}" - check_mv_rewrite_success(db, mv25_3, query25_3, "mv25_3") + async_mv_rewrite_success(db, mv25_3, query25_3, "mv25_3") order_qt_query25_3_after "${query25_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_3""" @@ -892,7 +892,7 @@ suite("aggregate_with_roll_up") { """ order_qt_query25_4_before "${query25_4}" - check_mv_rewrite_success(db, mv25_4, query25_4, "mv25_4") + async_mv_rewrite_success(db, mv25_4, query25_4, "mv25_4") order_qt_query25_4_after "${query25_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_4""" @@ -935,7 +935,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query25_5_before "${query25_5}" - check_mv_rewrite_success(db, mv25_5, query25_5, "mv25_5") + async_mv_rewrite_success(db, mv25_5, query25_5, "mv25_5") order_qt_query25_5_after "${query25_5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_5""" @@ -978,7 +978,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query25_6_before "${query25_6}" - check_mv_rewrite_success(db, mv25_6, query25_6, "mv25_6") + async_mv_rewrite_success(db, mv25_6, query25_6, "mv25_6") order_qt_query25_6_after "${query25_6}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_6""" @@ -1014,7 +1014,7 @@ suite("aggregate_with_roll_up") { o_comment; """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -1046,7 +1046,7 @@ suite("aggregate_with_roll_up") { "o_comment " order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -1080,7 +1080,7 @@ suite("aggregate_with_roll_up") { o_shippriority; """ order_qt_query26_0_before "${query26_0}" - check_mv_rewrite_fail(db, mv26_0, query26_0, "mv26_0") + async_mv_rewrite_fail(db, mv26_0, query26_0, "mv26_0") order_qt_query26_0_after "${query26_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv26_0""" @@ -1114,7 +1114,7 @@ suite("aggregate_with_roll_up") { o_shippriority; """ order_qt_query27_0_before "${query27_0}" - check_mv_rewrite_fail(db, mv27_0, query27_0, "mv27_0") + async_mv_rewrite_fail(db, mv27_0, query27_0, "mv27_0") order_qt_query27_0_after "${query27_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv27_0""" @@ -1155,7 +1155,7 @@ suite("aggregate_with_roll_up") { limit 10; """ order_qt_query28_0_before "${query28_0}" - check_mv_rewrite_success(db, mv28_0, query28_0, "mv28_0") + async_mv_rewrite_success(db, mv28_0, query28_0, "mv28_0") order_qt_query28_0_after "${query28_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv28_0""" @@ -1184,7 +1184,7 @@ suite("aggregate_with_roll_up") { ) as t; """ order_qt_query29_0_before "${query29_0}" - check_mv_rewrite_success(db, mv29_0, query29_0, "mv29_0") + async_mv_rewrite_success(db, mv29_0, query29_0, "mv29_0") order_qt_query29_0_after "${query29_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_0""" @@ -1211,7 +1211,7 @@ suite("aggregate_with_roll_up") { """ order_qt_query29_1_before "${query29_1}" - check_mv_rewrite_success(db, mv29_1, query29_1, "mv29_1") + async_mv_rewrite_success(db, mv29_1, query29_1, "mv29_1") order_qt_query29_1_after "${query29_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_1""" @@ -1237,7 +1237,7 @@ suite("aggregate_with_roll_up") { left join orders on l_orderkey = o_orderkey and l_shipdate = o_orderdate; """ order_qt_query29_2_before "${query29_2}" - check_mv_rewrite_success(db, mv29_2, query29_2, "mv29_2") + async_mv_rewrite_success(db, mv29_2, query29_2, "mv29_2") order_qt_query29_2_after "${query29_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_2""" @@ -1284,7 +1284,7 @@ suite("aggregate_with_roll_up") { group by l_linenumber; """ order_qt_query30_0_before "${query30_0}" - check_mv_rewrite_fail(db, mv30_0, query30_0, "mv30_0") + async_mv_rewrite_fail(db, mv30_0, query30_0, "mv30_0") order_qt_query30_0_after "${query30_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv30_0""" @@ -1326,7 +1326,7 @@ suite("aggregate_with_roll_up") { ps_partkey; """ order_qt_query31_0_before "${query31_0}" - check_mv_rewrite_fail(db, mv31_0, query31_0, "mv31_0") + async_mv_rewrite_fail(db, mv31_0, query31_0, "mv31_0") order_qt_query31_0_after "${query31_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv31_0""" @@ -1351,7 +1351,7 @@ suite("aggregate_with_roll_up") { o_shippriority; """ order_qt_query32_0_before "${query32_0}" - check_mv_rewrite_fail(db, mv32_0, query32_0, "mv32_0") + async_mv_rewrite_fail(db, mv32_0, query32_0, "mv32_0") order_qt_query32_0_after "${query32_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv32_0""" @@ -1396,7 +1396,7 @@ suite("aggregate_with_roll_up") { l_suppkey; """ order_qt_query33_0_before "${query33_0}" - check_mv_rewrite_success(db, mv33_0, query33_0, "mv33_0") + async_mv_rewrite_success(db, mv33_0, query33_0, "mv33_0") order_qt_query33_0_after "${query33_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv33_0""" @@ -1440,7 +1440,7 @@ suite("aggregate_with_roll_up") { order by o_orderstatus; """ order_qt_query33_1_before "${query33_1}" - check_mv_rewrite_fail(db, mv33_1, query33_1, "mv33_1") + async_mv_rewrite_fail(db, mv33_1, query33_1, "mv33_1") order_qt_query33_1_after "${query33_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv33_1""" @@ -1484,7 +1484,7 @@ suite("aggregate_with_roll_up") { o_orderstatus, l_suppkey; """ - check_mv_rewrite_success(db, mv34_0, query34_0, "mv34_0") + async_mv_rewrite_success(db, mv34_0, query34_0, "mv34_0") sql """ DROP MATERIALIZED VIEW IF EXISTS mv34_0""" @@ -1527,7 +1527,7 @@ suite("aggregate_with_roll_up") { order by o_orderstatus; """ order_qt_query35_0_before "${query35_0}" - check_mv_rewrite_success(db, mv35_0, query35_0, "mv35_0") + async_mv_rewrite_success(db, mv35_0, query35_0, "mv35_0") order_qt_query35_0_after "${query35_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv35_0""" @@ -1571,7 +1571,7 @@ suite("aggregate_with_roll_up") { order by o_orderstatus; """ order_qt_query36_0_before "${query36_0}" - check_mv_rewrite_fail(db, mv36_0, query36_0, "mv36_0") + async_mv_rewrite_fail(db, mv36_0, query36_0, "mv36_0") order_qt_query36_0_after "${query36_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv36_0""" @@ -1613,6 +1613,6 @@ suite("aggregate_with_roll_up") { o_orderstatus, l_suppkey; """ - check_mv_rewrite_fail(db, mv37_0, query37_0, "mv37_0") + async_mv_rewrite_fail(db, mv37_0, query37_0, "mv37_0") sql """ DROP MATERIALIZED VIEW IF EXISTS mv37_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/agg_without_roll_up/aggregate_without_roll_up.groovy b/regression-test/suites/nereids_rules_p0/mv/agg_without_roll_up/aggregate_without_roll_up.groovy index 801bdee1ef7844..07412e92311562 100644 --- a/regression-test/suites/nereids_rules_p0/mv/agg_without_roll_up/aggregate_without_roll_up.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/agg_without_roll_up/aggregate_without_roll_up.groovy @@ -161,7 +161,7 @@ suite("aggregate_without_roll_up") { o_comment; """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -216,7 +216,7 @@ suite("aggregate_without_roll_up") { "O_SHIPPRIORITY, " + "O_COMMENT " order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -271,7 +271,7 @@ suite("aggregate_without_roll_up") { O_COMMENT; """ order_qt_query1_2_before "${query1_2}" - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -318,7 +318,7 @@ suite("aggregate_without_roll_up") { "O_SHIPPRIORITY, " + "O_COMMENT " order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -365,7 +365,7 @@ suite("aggregate_without_roll_up") { "from orders " + "where O_ORDERDATE < '2023-12-30' and O_ORDERDATE > '2023-12-01'" order_qt_query3_0_before "${query3_0}" - check_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -397,7 +397,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query13_0_before "${query13_0}" - check_mv_rewrite_success(db, mv13_0, query13_0, "mv13_0") + async_mv_rewrite_success(db, mv13_0, query13_0, "mv13_0") order_qt_query13_0_after "${query13_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_0""" @@ -430,7 +430,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query14_0_before "${query14_0}" - check_mv_rewrite_success(db, mv14_0, query14_0, "mv14_0") + async_mv_rewrite_success(db, mv14_0, query14_0, "mv14_0") order_qt_query14_0_after "${query14_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv14_0""" @@ -463,7 +463,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query15_0_before "${query15_0}" - check_mv_rewrite_success(db, mv15_0, query15_0, "mv15_0") + async_mv_rewrite_success(db, mv15_0, query15_0, "mv15_0") order_qt_query15_0_after "${query15_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv15_0""" @@ -500,7 +500,7 @@ suite("aggregate_without_roll_up") { l_suppkey; """ order_qt_query15_1_before "${query15_1}" - check_mv_rewrite_success(db, mv15_1, query15_1, "mv15_1") + async_mv_rewrite_success(db, mv15_1, query15_1, "mv15_1") order_qt_query15_0_after "${query15_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv15_1""" @@ -531,7 +531,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query16_0_before "${query16_0}" - check_mv_rewrite_success(db, mv16_0, query16_0, "mv16_0") + async_mv_rewrite_success(db, mv16_0, query16_0, "mv16_0") order_qt_query16_0_after "${query16_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv16_0""" @@ -565,7 +565,7 @@ suite("aggregate_without_roll_up") { l_suppkey; """ order_qt_query16_1_before "${query16_1}" - check_mv_rewrite_fail(db, mv16_1, query16_1, "mv16_1") + async_mv_rewrite_fail(db, mv16_1, query16_1, "mv16_1") order_qt_query16_1_after "${query16_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv16_1""" @@ -596,7 +596,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query17_0_before "${query17_0}" - check_mv_rewrite_success(db, mv17_0, query17_0, "mv17_0") + async_mv_rewrite_success(db, mv17_0, query17_0, "mv17_0") order_qt_query17_0_after "${query17_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv17_0""" @@ -655,7 +655,7 @@ suite("aggregate_without_roll_up") { "orders.O_SHIPPRIORITY, " + "orders.O_COMMENT " order_qt_query17_1_before "${query17_1}" - check_mv_rewrite_success(db, mv17_1, query17_1, "mv17_1") + async_mv_rewrite_success(db, mv17_1, query17_1, "mv17_1") order_qt_query17_1_after "${query17_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv17_1""" @@ -684,7 +684,7 @@ suite("aggregate_without_roll_up") { "l_shipdate, " + "l_suppkey" order_qt_query18_0_before "${query18_0}" - check_mv_rewrite_success(db, mv18_0, query18_0, "mv18_0") + async_mv_rewrite_success(db, mv18_0, query18_0, "mv18_0") order_qt_query18_0_after "${query18_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv18_0""" @@ -699,7 +699,7 @@ suite("aggregate_without_roll_up") { "where o_custkey = 2 and l_linenumber = 4 " + "group by l_linenumber, o_custkey " order_qt_query18_1_before "${query18_1}" - check_mv_rewrite_success(db, mv18_1, query18_1, "mv18_1") + async_mv_rewrite_success(db, mv18_1, query18_1, "mv18_1") order_qt_query18_1_after "${query18_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv18_1""" @@ -714,7 +714,7 @@ suite("aggregate_without_roll_up") { "where o_custkey = 2 and l_suppkey= 3 " + "group by lineitem.l_linenumber, orders.o_custkey " order_qt_query18_2_before "${query18_2}" - check_mv_rewrite_fail(db, mv18_2, query18_2, "mv18_2") + async_mv_rewrite_fail(db, mv18_2, query18_2, "mv18_2") order_qt_query18_2_after "${query18_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv18_2""" @@ -743,7 +743,7 @@ suite("aggregate_without_roll_up") { "l_partkey, " + "l_suppkey" order_qt_query19_0_before "${query19_0}" - check_mv_rewrite_success(db, mv19_0, query19_0, "mv19_0") + async_mv_rewrite_success(db, mv19_0, query19_0, "mv19_0") order_qt_query19_0_after "${query19_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_0""" @@ -757,7 +757,7 @@ suite("aggregate_without_roll_up") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "group by lineitem.L_LINENUMBER, orders.O_CUSTKEY " order_qt_query19_1_before "${query19_1}" - check_mv_rewrite_success(db, mv19_1, query19_1, "mv19_1") + async_mv_rewrite_success(db, mv19_1, query19_1, "mv19_1") order_qt_query19_1_after "${query19_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_1""" @@ -803,7 +803,7 @@ suite("aggregate_without_roll_up") { l_suppkey; """ order_qt_query19_2_before "${query19_2}" - check_mv_rewrite_success(db, mv19_2, query19_2, "mv19_2") + async_mv_rewrite_success(db, mv19_2, query19_2, "mv19_2") order_qt_query19_2_after "${query19_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_2""" @@ -839,7 +839,7 @@ suite("aggregate_without_roll_up") { l_suppkey; """ order_qt_query19_3_before "${query19_3}" - check_mv_rewrite_success(db, mv19_3, query19_3, "mv19_3") + async_mv_rewrite_success(db, mv19_3, query19_3, "mv19_3") order_qt_query19_3_after "${query19_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_3""" @@ -888,7 +888,7 @@ suite("aggregate_without_roll_up") { "on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERDATE < '2023-12-30' and orders.O_ORDERDATE > '2023-12-01' " order_qt_query20_0_before "${query20_0}" - check_mv_rewrite_success(db, mv20_0, query20_0, "mv20_0") + async_mv_rewrite_success(db, mv20_0, query20_0, "mv20_0") order_qt_query20_0_after "${query20_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_0""" @@ -917,7 +917,7 @@ suite("aggregate_without_roll_up") { on lineitem.L_ORDERKEY = orders.O_ORDERKEY """ order_qt_query20_1_before "${query20_1}" - check_mv_rewrite_success(db, mv20_1, query20_1, "mv20_1") + async_mv_rewrite_success(db, mv20_1, query20_1, "mv20_1") order_qt_query20_1_after "${query20_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_1""" @@ -945,7 +945,7 @@ suite("aggregate_without_roll_up") { l_shipinstruct; """ order_qt_query20_2_before "${query20_2}" - check_mv_rewrite_fail(db, mv20_2, query20_2, "mv20_2") + async_mv_rewrite_fail(db, mv20_2, query20_2, "mv20_2") order_qt_query20_2_after "${query20_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_2""" @@ -989,7 +989,7 @@ suite("aggregate_without_roll_up") { group by l_linenumber; """ order_qt_query21_0_before "${query21_0}" - check_mv_rewrite_success(db, mv21_0, query21_0, "mv21_0") + async_mv_rewrite_success(db, mv21_0, query21_0, "mv21_0") order_qt_query21_0_after "${query21_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv21_0""" @@ -1033,7 +1033,7 @@ suite("aggregate_without_roll_up") { group by l_linenumber; """ order_qt_query21_1_before "${query21_1}" - check_mv_rewrite_fail(db, mv21_1, query21_1, "mv21_1") + async_mv_rewrite_fail(db, mv21_1, query21_1, "mv21_1") order_qt_query21_1_after "${query21_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv21_1""" @@ -1078,7 +1078,7 @@ suite("aggregate_without_roll_up") { group by l_linenumber; """ order_qt_query21_2_before "${query21_2}" - check_mv_rewrite_fail(db, mv21_2, query21_2, "mv21_2") + async_mv_rewrite_fail(db, mv21_2, query21_2, "mv21_2") order_qt_query21_2_after "${query21_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv21_2""" @@ -1112,7 +1112,7 @@ suite("aggregate_without_roll_up") { l_suppkey; """ order_qt_query22_0_before "${query22_0}" - check_mv_rewrite_success(db, mv22_0, query22_0, "mv22_0") + async_mv_rewrite_success(db, mv22_0, query22_0, "mv22_0") order_qt_query22_0_after "${query22_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv22_0""" @@ -1156,7 +1156,7 @@ suite("aggregate_without_roll_up") { order by o_orderpriority; """ order_qt_query23_0_before "${query23_0}" - check_mv_rewrite_success(db, mv23_0, query23_0, "mv23_0") + async_mv_rewrite_success(db, mv23_0, query23_0, "mv23_0") order_qt_query23_0_after "${query23_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv23_0""" @@ -1199,7 +1199,7 @@ suite("aggregate_without_roll_up") { """ order_qt_query23_1_before "${query23_1}" // not supported, this usage is rare - check_mv_rewrite_fail(db, mv23_1, query23_1, "mv23_1") + async_mv_rewrite_fail(db, mv23_1, query23_1, "mv23_1") order_qt_query23_1_after "${query23_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv23_1""" @@ -1241,7 +1241,7 @@ suite("aggregate_without_roll_up") { o_orderpriority, l_suppkey; """ - check_mv_rewrite_success(db, mv24_0, query24_0, "mv24_0") + async_mv_rewrite_success(db, mv24_0, query24_0, "mv24_0") sql """ DROP MATERIALIZED VIEW IF EXISTS mv24_0""" @@ -1282,7 +1282,7 @@ suite("aggregate_without_roll_up") { order by o_orderpriority; """ order_qt_query25_0_before "${query25_0}" - check_mv_rewrite_success(db, mv25_0, query25_0, "mv25_0") + async_mv_rewrite_success(db, mv25_0, query25_0, "mv25_0") order_qt_query25_0_after "${query25_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_0""" @@ -1324,7 +1324,7 @@ suite("aggregate_without_roll_up") { order by o_orderpriority; """ order_qt_query26_0_before "${query26_0}" - check_mv_rewrite_success(db, mv26_0, query26_0, "mv26_0") + async_mv_rewrite_success(db, mv26_0, query26_0, "mv26_0") order_qt_query26_0_after "${query26_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv26_0""" @@ -1364,6 +1364,6 @@ suite("aggregate_without_roll_up") { o_orderpriority, l_suppkey; """ - check_mv_rewrite_fail(db, mv27_0, query27_0, "mv27_0") + async_mv_rewrite_fail(db, mv27_0, query27_0, "mv27_0") sql """ DROP MATERIALIZED VIEW IF EXISTS mv27_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy b/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy index 4a9784ed04b985..81e0f01361190e 100644 --- a/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy @@ -143,11 +143,11 @@ suite("materialized_view_switch") { where o_orderdate = '2023-12-10' order by 1, 2, 3, 4, 5; """ - check_mv_rewrite_success(db, mv_name, query, "mv_name") + async_mv_rewrite_success(db, mv_name, query, "mv_name") sql "SET enable_materialized_view_rewrite=false" - check_mv_rewrite_fail(db, mv_name, query, "mv_name") + async_mv_rewrite_fail(db, mv_name, query, "mv_name") sql "SET enable_materialized_view_rewrite=true" - check_mv_rewrite_success(db, mv_name, query, "mv_name") + async_mv_rewrite_success(db, mv_name, query, "mv_name") sql """ DROP MATERIALIZED VIEW IF EXISTS mv_name""" // test when materialized_view_relation_mapping_max_count is 8 @@ -162,7 +162,7 @@ suite("materialized_view_switch") { inner join lineitem t2 on t1.L_ORDERKEY = t2.L_ORDERKEY; """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -181,7 +181,7 @@ suite("materialized_view_switch") { inner join lineitem t2 on t1.L_ORDERKEY = t2.L_ORDERKEY; """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_fail(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_fail(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" diff --git a/regression-test/suites/nereids_rules_p0/mv/grouping_sets/grouping_sets.groovy b/regression-test/suites/nereids_rules_p0/mv/grouping_sets/grouping_sets.groovy index 73c3052799072a..0e81d42eb4e9ec 100644 --- a/regression-test/suites/nereids_rules_p0/mv/grouping_sets/grouping_sets.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/grouping_sets/grouping_sets.groovy @@ -159,7 +159,7 @@ suite("materialized_view_grouping_sets") { GROUPING SETS ((o_orderstatus, o_orderdate), (o_orderpriority), (o_orderstatus), ()); """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -192,7 +192,7 @@ suite("materialized_view_grouping_sets") { GROUPING SETS ((o_orderstatus, o_orderdate), (o_orderpriority), (o_orderstatus), ()); """ order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -228,7 +228,7 @@ suite("materialized_view_grouping_sets") { GROUPING SETS ((l_shipdate, o_orderdate, l_partkey), (l_partkey, l_suppkey), (l_suppkey), ()); """ order_qt_query3_0_before "${query3_0}" - check_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -268,7 +268,7 @@ suite("materialized_view_grouping_sets") { GROUPING SETS ((l_shipdate, o_orderdate, l_partkey), (l_partkey, l_suppkey), (l_suppkey), ()); """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -299,7 +299,7 @@ suite("materialized_view_grouping_sets") { CUBE (o_orderstatus, o_orderpriority); """ order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -332,7 +332,7 @@ suite("materialized_view_grouping_sets") { CUBE (o_orderstatus, o_orderpriority); """ order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -367,7 +367,7 @@ suite("materialized_view_grouping_sets") { CUBE (t1.l_partkey, t1.l_suppkey, o_orderdate); """ order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") order_qt_query7_0_after "${query7_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_0""" @@ -406,7 +406,7 @@ suite("materialized_view_grouping_sets") { CUBE (t1.l_partkey, t1.l_suppkey, o_orderdate); """ order_qt_query8_0_before "${query8_0}" - check_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") + async_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") order_qt_query8_0_after "${query8_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv8_0""" @@ -438,7 +438,7 @@ suite("materialized_view_grouping_sets") { ROLLUP (o_orderstatus, o_orderpriority); """ order_qt_query9_0_before "${query9_0}" - check_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") + async_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") order_qt_query9_0_after "${query9_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv9_0""" @@ -471,7 +471,7 @@ suite("materialized_view_grouping_sets") { ROLLUP (o_orderstatus, o_orderpriority); """ order_qt_query10_0_before "${query10_0}" - check_mv_rewrite_success(db, mv10_0, query10_0, "mv10_0") + async_mv_rewrite_success(db, mv10_0, query10_0, "mv10_0") order_qt_query10_0_after "${query10_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv10_0""" @@ -506,7 +506,7 @@ suite("materialized_view_grouping_sets") { ROLLUP (t1.l_partkey, t1.l_suppkey, o_orderdate); """ order_qt_query11_0_before "${query11_0}" - check_mv_rewrite_success(db, mv11_0, query11_0, "mv11_0") + async_mv_rewrite_success(db, mv11_0, query11_0, "mv11_0") order_qt_query11_0_after "${query11_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv11_0""" @@ -545,7 +545,7 @@ suite("materialized_view_grouping_sets") { ROLLUP (t1.l_partkey, t1.l_suppkey, o_orderdate); """ order_qt_query12_0_before "${query12_0}" - check_mv_rewrite_success(db, mv12_0, query12_0, "mv12_0") + async_mv_rewrite_success(db, mv12_0, query12_0, "mv12_0") order_qt_query12_0_after "${query12_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv12_0""" @@ -577,7 +577,7 @@ suite("materialized_view_grouping_sets") { GROUPING SETS ((o_orderstatus, o_orderdate), (o_orderpriority), (o_orderstatus), ()); """ order_qt_query13_0_before "${query13_0}" - check_mv_rewrite_fail(db, mv13_0, query13_0, "mv13_0") + async_mv_rewrite_fail(db, mv13_0, query13_0, "mv13_0") order_qt_query13_0_after "${query13_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_0""" @@ -609,7 +609,7 @@ suite("materialized_view_grouping_sets") { o_orderstatus, o_orderdate, o_orderpriority; """ order_qt_query14_0_before "${query14_0}" - check_mv_rewrite_fail(db, mv14_0, query14_0, "mv14_0") + async_mv_rewrite_fail(db, mv14_0, query14_0, "mv14_0") order_qt_query14_0_after "${query14_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv14_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/join/dphyp_inner/inner_join_dphyp.groovy b/regression-test/suites/nereids_rules_p0/mv/join/dphyp_inner/inner_join_dphyp.groovy index 75b5276e442747..51a01aa133333d 100644 --- a/regression-test/suites/nereids_rules_p0/mv/join/dphyp_inner/inner_join_dphyp.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/join/dphyp_inner/inner_join_dphyp.groovy @@ -129,7 +129,7 @@ suite("inner_join_dphyp") { "from lineitem " + "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -145,7 +145,7 @@ suite("inner_join_dphyp") { "inner join partsupp on lineitem.L_PARTKEY = partsupp.PS_PARTKEY " + "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY" order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -157,7 +157,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_2_before "${query1_2}" // join direction is not same, should not match - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -170,7 +170,7 @@ suite("inner_join_dphyp") { "from orders " + "inner join lineitem on orders.O_ORDERKEY = lineitem.L_ORDERKEY" order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -189,7 +189,7 @@ suite("inner_join_dphyp") { and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY; """ order_qt_query1_4_before "${query1_4}" - check_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") + async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") order_qt_query1_4_after "${query1_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" @@ -205,7 +205,7 @@ suite("inner_join_dphyp") { and o_shippriority = l_partkey; """ order_qt_query1_5_before "${query1_5}" - check_mv_rewrite_success(db, mv1_5, query1_5, "mv1_5") + async_mv_rewrite_success(db, mv1_5, query1_5, "mv1_5") order_qt_query1_5_after "${query1_5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_5""" @@ -218,7 +218,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 0" order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -231,7 +231,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1" order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -244,7 +244,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1 and l_suppkey = 3" order_qt_query2_2_before "${query2_2}" - check_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -261,7 +261,7 @@ suite("inner_join_dphyp") { "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY " + "where lineitem.L_LINENUMBER > 1 and l_suppkey = 3 " order_qt_query2_3_before "${query2_3}" - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -276,7 +276,7 @@ suite("inner_join_dphyp") { "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_0_before "${query3_0}" // use a filed not from mv, should not success - check_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -289,7 +289,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_1_before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -304,7 +304,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_2_before "${query3_2}" - check_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -321,7 +321,7 @@ suite("inner_join_dphyp") { "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY " + "where o_custkey in (1, 2, 3, 4) " order_qt_query3_3_before "${query3_3}" - check_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") + async_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -341,7 +341,7 @@ suite("inner_join_dphyp") { where o_custkey = 1 and l_linenumber > 0; """ order_qt_query3_4_before "${query3_4}" - check_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") + async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") order_qt_query3_4_after "${query3_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" @@ -355,7 +355,7 @@ suite("inner_join_dphyp") { "inner join orders on lineitem.l_orderkey = orders.o_orderkey " + "where o_orderstatus = 'o' AND l_linenumber in (1, 2, 3, 4, 5) " order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -369,7 +369,7 @@ suite("inner_join_dphyp") { "from (select * from lineitem where l_linenumber > 1) t1 " + "inner join orders on t1.l_orderkey = orders.O_ORDERKEY " order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -384,7 +384,7 @@ suite("inner_join_dphyp") { "inner join (select * from orders where o_orderdate = '2023-12-08') t2 " + "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -401,7 +401,7 @@ suite("inner_join_dphyp") { "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " + "where l_partkey = 2" order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") order_qt_query7_0_after "${query7_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_0""" @@ -416,7 +416,7 @@ suite("inner_join_dphyp") { "WHERE lineitem.L_LINENUMBER > 0 AND orders.O_CUSTKEY = 1 AND " + "orders.O_SHIPPRIORITY = 2" order_qt_query10_0_before "${query10_0}" - check_mv_rewrite_fail(db, mv10_0, query10_0, "mv10_0") + async_mv_rewrite_fail(db, mv10_0, query10_0, "mv10_0") order_qt_query10_0_after "${query10_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv10_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/join/dphyp_outer/outer_join_dphyp.groovy b/regression-test/suites/nereids_rules_p0/mv/join/dphyp_outer/outer_join_dphyp.groovy index 048d802e274b68..b4dc24fb613dfd 100644 --- a/regression-test/suites/nereids_rules_p0/mv/join/dphyp_outer/outer_join_dphyp.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/join/dphyp_outer/outer_join_dphyp.groovy @@ -129,7 +129,7 @@ suite("outer_join_dphyp") { "from lineitem " + "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -145,7 +145,7 @@ suite("outer_join_dphyp") { "left join partsupp on lineitem.L_PARTKEY = partsupp.PS_PARTKEY " + "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY" order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -157,7 +157,7 @@ suite("outer_join_dphyp") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_2_before "${query1_2}" // join direction is not same, should not match - check_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -170,7 +170,7 @@ suite("outer_join_dphyp") { "from orders " + "left join lineitem on orders.O_ORDERKEY = lineitem.L_ORDERKEY" order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -184,7 +184,7 @@ suite("outer_join_dphyp") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 0" order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -197,7 +197,7 @@ suite("outer_join_dphyp") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1" order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -214,7 +214,7 @@ suite("outer_join_dphyp") { where lineitem.L_LINENUMBER > 1 and l_suppkey = 3; """ order_qt_query2_2_before "${query2_2}" - check_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -231,7 +231,7 @@ suite("outer_join_dphyp") { where lineitem.L_LINENUMBER > 1 and l_suppkey = 3; """ order_qt_query2_3_before "${query2_3}" - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -250,7 +250,7 @@ suite("outer_join_dphyp") { """ order_qt_query3_0_before "${query3_0}" // use a filed not from mv, should not success - check_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -263,7 +263,7 @@ suite("outer_join_dphyp") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_1_before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -279,7 +279,7 @@ suite("outer_join_dphyp") { "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_2_before "${query3_2}" // should not success, as mv filter is under left outer input - check_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -297,7 +297,7 @@ suite("outer_join_dphyp") { where o_orderstatus = 'o' AND o_orderkey = 1; """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -311,7 +311,7 @@ suite("outer_join_dphyp") { "from (select * from lineitem where l_linenumber > 1) t1 " + "left join orders on t1.l_orderkey = orders.O_ORDERKEY " order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -330,7 +330,7 @@ suite("outer_join_dphyp") { where o_orderdate = '2023-12-08' """ order_qt_query5_1_before "${query5_1}" - check_mv_rewrite_fail(db, mv5_1, query5_1, "mv5_1") + async_mv_rewrite_fail(db, mv5_1, query5_1, "mv5_1") order_qt_query5_1_after "${query5_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_1""" @@ -345,7 +345,7 @@ suite("outer_join_dphyp") { "left join (select * from orders where o_orderdate = '2023-12-08') t2 " + "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -362,7 +362,7 @@ suite("outer_join_dphyp") { "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " + "where l_partkey = 3" order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") order_qt_query7_0_after "${query7_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_0""" @@ -381,7 +381,7 @@ suite("outer_join_dphyp") { on t1.l_orderkey = orders.o_orderkey; """ order_qt_query7_1_before "${query7_1}" - check_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") + async_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") order_qt_query7_1_after "${query7_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_1""" @@ -421,7 +421,7 @@ suite("outer_join_dphyp") { group by a.o_orderkey; """ order_qt_query8_0_before "${query8_0}" - check_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") + async_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") order_qt_query8_0_after "${query8_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv8_0""" @@ -481,7 +481,7 @@ suite("outer_join_dphyp") { t1.col1 """ order_qt_query9_0_before "${query9_0}" - check_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") + async_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") order_qt_query9_0_after "${query9_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv9_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/join/inner/inner_join.groovy b/regression-test/suites/nereids_rules_p0/mv/join/inner/inner_join.groovy index 6a990b67b72cd0..dc68a3169a7ee1 100644 --- a/regression-test/suites/nereids_rules_p0/mv/join/inner/inner_join.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/join/inner/inner_join.groovy @@ -133,7 +133,7 @@ suite("inner_join") { inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -149,7 +149,7 @@ suite("inner_join") { "inner join partsupp on lineitem.L_PARTKEY = partsupp.PS_PARTKEY " + "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY" order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -161,7 +161,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_2_before "${query1_2}" // join direction is not same, should not match - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -174,7 +174,7 @@ suite("inner_join") { "from orders " + "inner join lineitem on orders.O_ORDERKEY = lineitem.L_ORDERKEY" order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -193,7 +193,7 @@ suite("inner_join") { and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY; """ order_qt_query1_4_before "${query1_4}" - check_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") + async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") order_qt_query1_4_after "${query1_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" @@ -209,7 +209,7 @@ suite("inner_join") { and o_shippriority = l_partkey; """ order_qt_query1_5_before "${query1_5}" - check_mv_rewrite_success(db, mv1_5, query1_5, "mv1_5") + async_mv_rewrite_success(db, mv1_5, query1_5, "mv1_5") order_qt_query1_5_after "${query1_5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_5""" @@ -222,7 +222,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 0" order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -235,7 +235,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1" order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -248,7 +248,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1 and l_suppkey = 3" order_qt_query2_2_before "${query2_2}" - check_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -265,7 +265,7 @@ suite("inner_join") { "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY " + "where lineitem.L_LINENUMBER > 1 and l_suppkey = 3 " order_qt_query2_3_before "${query2_3}" - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -280,7 +280,7 @@ suite("inner_join") { "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_0_before "${query3_0}" // use a filed not from mv, should not success - check_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -293,7 +293,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_1_before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -308,7 +308,7 @@ suite("inner_join") { "inner join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_2_before "${query3_2}" - check_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -325,7 +325,7 @@ suite("inner_join") { "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY " + "where o_custkey in (1, 2, 3, 4) " order_qt_query3_3_before "${query3_3}" - check_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") + async_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -345,7 +345,7 @@ suite("inner_join") { where o_custkey = 1 and l_linenumber > 0; """ order_qt_query3_4_before "${query3_4}" - check_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") + async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") order_qt_query3_4_after "${query3_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" @@ -365,7 +365,7 @@ suite("inner_join") { where o_orderstatus = 'o' AND l_linenumber in (1, 2, 3, 4, 5) """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -379,7 +379,7 @@ suite("inner_join") { "from (select * from lineitem where l_linenumber > 1) t1 " + "inner join orders on t1.l_orderkey = orders.O_ORDERKEY " order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -394,7 +394,7 @@ suite("inner_join") { "inner join (select * from orders where o_orderdate = '2023-12-08') t2 " + "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -411,7 +411,7 @@ suite("inner_join") { "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " + "where l_partkey = 2" order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") order_qt_query7_0_after "${query7_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_0""" @@ -426,7 +426,7 @@ suite("inner_join") { "WHERE lineitem.L_LINENUMBER > 0 AND orders.O_CUSTKEY = 1 AND " + "orders.O_SHIPPRIORITY = 2" order_qt_query10_0_before "${query10_0}" - check_mv_rewrite_fail(db, mv10_0, query10_0, "mv10_0") + async_mv_rewrite_fail(db, mv10_0, query10_0, "mv10_0") order_qt_query10_0_after "${query10_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv10_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/join/left_outer/outer_join.groovy b/regression-test/suites/nereids_rules_p0/mv/join/left_outer/outer_join.groovy index 68e323f1eb9af0..a55cac0e309f63 100644 --- a/regression-test/suites/nereids_rules_p0/mv/join/left_outer/outer_join.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/join/left_outer/outer_join.groovy @@ -206,7 +206,7 @@ suite("outer_join") { "from lineitem " + "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -222,7 +222,7 @@ suite("outer_join") { "left join partsupp on lineitem.L_PARTKEY = partsupp.PS_PARTKEY " + "and lineitem.L_SUPPKEY = partsupp.PS_SUPPKEY" order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -234,7 +234,7 @@ suite("outer_join") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " order_qt_query1_2_before "${query1_2}" // join direction is not same, should not match - check_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -247,7 +247,7 @@ suite("outer_join") { "from orders " + "left join lineitem on orders.O_ORDERKEY = lineitem.L_ORDERKEY" order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -261,7 +261,7 @@ suite("outer_join") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 0" order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_fail(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -274,7 +274,7 @@ suite("outer_join") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where lineitem.L_LINENUMBER > 1" order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -291,7 +291,7 @@ suite("outer_join") { where lineitem.L_LINENUMBER > 1 and l_suppkey = 3; """ order_qt_query2_2_before "${query2_2}" - check_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -308,7 +308,7 @@ suite("outer_join") { where lineitem.L_LINENUMBER > 1 and l_suppkey = 3; """ order_qt_query2_3_before "${query2_3}" - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -327,7 +327,7 @@ suite("outer_join") { """ order_qt_query3_0_before "${query3_0}" // use a filed not from mv, should not success - check_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") + async_mv_rewrite_fail(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -340,7 +340,7 @@ suite("outer_join") { "left join orders on lineitem.L_ORDERKEY = orders.O_ORDERKEY " + "where orders.O_ORDERSTATUS = 'o'" order_qt_query3_1_before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -360,7 +360,7 @@ suite("outer_join") { """ order_qt_query3_2_before "${query3_2}" // should not success, as mv filter is under left outer input - check_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -378,7 +378,7 @@ suite("outer_join") { where o_orderstatus = 'o' AND o_orderkey = 1; """ order_qt_query4_0_before "${query4_0}" - check_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") + async_mv_rewrite_success(db, mv4_0, query4_0, "mv4_0") order_qt_query4_0_after "${query4_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_0""" @@ -392,7 +392,7 @@ suite("outer_join") { "from (select * from lineitem where l_linenumber > 1) t1 " + "left join orders on t1.l_orderkey = orders.O_ORDERKEY " order_qt_query5_0_before "${query5_0}" - check_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") + async_mv_rewrite_success(db, mv5_0, query5_0, "mv5_0") order_qt_query5_0_after "${query5_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_0""" @@ -411,7 +411,7 @@ suite("outer_join") { where o_orderdate = '2023-12-08' """ order_qt_query5_1_before "${query5_1}" - check_mv_rewrite_fail(db, mv5_1, query5_1, "mv5_1") + async_mv_rewrite_fail(db, mv5_1, query5_1, "mv5_1") order_qt_query5_1_after "${query5_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5_1""" @@ -426,7 +426,7 @@ suite("outer_join") { "left join (select * from orders where o_orderdate = '2023-12-08') t2 " + "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " order_qt_query6_0_before "${query6_0}" - check_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") + async_mv_rewrite_success(db, mv6_0, query6_0, "mv6_0") order_qt_query6_0_after "${query6_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_0""" @@ -445,7 +445,7 @@ suite("outer_join") { where l_shipdate = '2023-12-10' and o_orderdate = '2023-12-10'; """ order_qt_query6_1_before "${query6_1}" - check_mv_rewrite_success(db, mv6_1, query6_1, "mv6_1") + async_mv_rewrite_success(db, mv6_1, query6_1, "mv6_1") order_qt_query6_1_after "${query6_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_1""" @@ -465,7 +465,7 @@ suite("outer_join") { where o_orderdate = '2023-12-10' order by 1, 2, 3, 4, 5; """ order_qt_query6_2_before "${query6_2}" - check_mv_rewrite_success(db, mv6_2, query6_2, "mv6_2") + async_mv_rewrite_success(db, mv6_2, query6_2, "mv6_2") order_qt_query6_2_after "${query6_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6_2""" @@ -482,7 +482,7 @@ suite("outer_join") { "on t1.l_orderkey = o_orderkey and t1.l_shipdate = o_orderdate " + "where l_partkey = 3" order_qt_query7_0_before "${query7_0}" - check_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") + async_mv_rewrite_success(db, mv7_0, query7_0, "mv7_0") order_qt_query7_0_after "${query7_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_0""" @@ -501,7 +501,7 @@ suite("outer_join") { on t1.l_orderkey = orders.o_orderkey; """ order_qt_query7_1_before "${query7_1}" - check_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") + async_mv_rewrite_fail(db, mv7_1, query7_1, "mv7_1") order_qt_query7_1_after "${query7_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7_1""" @@ -541,7 +541,7 @@ suite("outer_join") { group by a.o_orderkey; """ order_qt_query8_0_before "${query8_0}" - check_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") + async_mv_rewrite_success(db, mv8_0, query8_0, "mv8_0") order_qt_query8_0_after "${query8_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv8_0""" @@ -602,7 +602,7 @@ suite("outer_join") { t1.col1 """ order_qt_query9_0_before "${query9_0}" - check_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") + async_mv_rewrite_success(db, mv9_0, query9_0, "mv9_0") order_qt_query9_0_after "${query9_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv9_0""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/nested/nested_materialized_view.groovy b/regression-test/suites/nereids_rules_p0/mv/nested/nested_materialized_view.groovy index 6219cc7313d79e..faf0f67ea3d1ab 100644 --- a/regression-test/suites/nereids_rules_p0/mv/nested/nested_materialized_view.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/nested/nested_materialized_view.groovy @@ -252,7 +252,7 @@ suite("nested_materialized_view") { """ order_qt_query1_0_before "${query1_0}" create_mtmv(db, "mv1_0_inner_mv", mv1_0_inner_mv) - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0_inner_mv""" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -262,7 +262,7 @@ suite("nested_materialized_view") { order_qt_query1_1_before "${query1_0}" create_mtmv(db, "mv1_0_inner_mv", mv1_0_inner_mv) - check_mv_rewrite_fail(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_fail(db, mv1_0, query1_0, "mv1_0") explain { sql("${query1_0}") diff --git a/regression-test/suites/nereids_rules_p0/mv/scan/scan_table.groovy b/regression-test/suites/nereids_rules_p0/mv/scan/scan_table.groovy index 27c625194a84bf..0c9aba5ffebae3 100644 --- a/regression-test/suites/nereids_rules_p0/mv/scan/scan_table.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/scan/scan_table.groovy @@ -136,7 +136,7 @@ suite("mv_scan_table") { from lineitem where l_orderkey > 3 """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -151,7 +151,7 @@ suite("mv_scan_table") { from lineitem where l_comment like '%yy%' """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -166,7 +166,7 @@ suite("mv_scan_table") { from lineitem where l_comment like '%xx%' """ order_qt_query1_2_before "${query1_2}" - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -181,7 +181,7 @@ suite("mv_scan_table") { from lineitem where l_comment like '%xx%' """ order_qt_query1_3_before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/ssb/mv_ssb_test.groovy b/regression-test/suites/nereids_rules_p0/mv/ssb/mv_ssb_test.groovy index 674789f4304ffb..17849eea2cbf88 100644 --- a/regression-test/suites/nereids_rules_p0/mv/ssb/mv_ssb_test.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/ssb/mv_ssb_test.groovy @@ -109,7 +109,7 @@ suite("mv_ssb_test") { AND lo_quantity < 25; """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -133,7 +133,7 @@ suite("mv_ssb_test") { AND lo_quantity BETWEEN 26 AND 35; """ order_qt_query1_2_before "${query1_2}" - check_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_success(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -158,7 +158,7 @@ suite("mv_ssb_test") { AND lo_quantity BETWEEN 26 AND 35; """ order_qt_query1_3before "${query1_3}" - check_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_success(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -186,7 +186,7 @@ suite("mv_ssb_test") { ORDER BY d_year, p_brand; """ order_qt_query2_1before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -216,7 +216,7 @@ suite("mv_ssb_test") { ORDER BY d_year, p_brand; """ order_qt_query2_2before "${query2_2}" - check_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_success(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -243,7 +243,7 @@ suite("mv_ssb_test") { ORDER BY d_year, p_brand; """ order_qt_query2_3before "${query2_3}" - check_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_success(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -274,7 +274,7 @@ suite("mv_ssb_test") { ORDER BY d_year ASC, REVENUE DESC; """ order_qt_query3_1before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -306,7 +306,7 @@ suite("mv_ssb_test") { ORDER BY d_year ASC, REVENUE DESC; """ order_qt_query3_2before "${query3_2}" - check_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_success(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -342,7 +342,7 @@ suite("mv_ssb_test") { ORDER BY d_year ASC, REVENUE DESC; """ order_qt_query3_3before "${query3_3}" - check_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") + async_mv_rewrite_success(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -378,7 +378,7 @@ suite("mv_ssb_test") { ORDER BY d_year ASC, REVENUE DESC; """ order_qt_query3_4before "${query3_4}" - check_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") + async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") order_qt_query3_4_after "${query3_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" @@ -414,7 +414,7 @@ suite("mv_ssb_test") { ORDER BY d_year, c_nation; """ order_qt_query4_1before "${query4_1}" - check_mv_rewrite_success(db, mv4_1, query4_1, "mv4_1") + async_mv_rewrite_success(db, mv4_1, query4_1, "mv4_1") order_qt_query4_1_after "${query4_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_1""" @@ -451,7 +451,7 @@ suite("mv_ssb_test") { ORDER BY d_year, s_nation, p_category; """ order_qt_query4_2before "${query4_2}" - check_mv_rewrite_success(db, mv4_2, query4_2, "mv4_2") + async_mv_rewrite_success(db, mv4_2, query4_2, "mv4_2") order_qt_query4_2_after "${query4_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_2""" @@ -485,7 +485,7 @@ suite("mv_ssb_test") { ORDER BY d_year, s_city, p_brand; """ order_qt_query4_3before "${query4_3}" - check_mv_rewrite_success(db, mv4_3, query4_3, "mv4_3") + async_mv_rewrite_success(db, mv4_3, query4_3, "mv4_3") order_qt_query4_3_after "${query4_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4_3""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/tpch/mv_tpch_test.groovy b/regression-test/suites/nereids_rules_p0/mv/tpch/mv_tpch_test.groovy index e033fbebd899fb..2e89a2124117e9 100644 --- a/regression-test/suites/nereids_rules_p0/mv/tpch/mv_tpch_test.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/tpch/mv_tpch_test.groovy @@ -135,7 +135,7 @@ suite("mv_tpch_test") { l_linestatus; """ order_qt_query1_before "${query1}" - check_mv_rewrite_success(db, mv1, query1, "mv1") + async_mv_rewrite_success(db, mv1, query1, "mv1") order_qt_query1_after "${query1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1""" @@ -228,7 +228,7 @@ suite("mv_tpch_test") { """ // contains limit, doesn't support now order_qt_query2_before "${query2}" - check_mv_rewrite_fail(db, mv2, query2, "mv2") + async_mv_rewrite_fail(db, mv2, query2, "mv2") order_qt_query2_after "${query2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2""" @@ -286,7 +286,7 @@ suite("mv_tpch_test") { """ // contains limit, doesn't support now order_qt_query3_before "${query3}" - check_mv_rewrite_fail(db, mv3, query3, "mv3") + async_mv_rewrite_fail(db, mv3, query3, "mv3") order_qt_query3_after "${query3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3""" @@ -333,7 +333,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query4_before "${query4}" - check_mv_rewrite_success(db, mv4, query4, "mv4") + async_mv_rewrite_success(db, mv4, query4, "mv4") order_qt_query4_after "${query4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv4""" @@ -391,7 +391,7 @@ suite("mv_tpch_test") { revenue DESC """ order_qt_query5_before "${query5}" - check_mv_rewrite_success(db, mv5, query5, "mv5") + async_mv_rewrite_success(db, mv5, query5, "mv5") order_qt_query5_after "${query5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv5""" @@ -417,7 +417,7 @@ suite("mv_tpch_test") { AND l_quantity < 24 """ order_qt_query6_before "${query6}" - check_mv_rewrite_success(db, mv6, query6, "mv6") + async_mv_rewrite_success(db, mv6, query6, "mv6") order_qt_query6_after "${query6}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv6""" @@ -504,7 +504,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query7_before "${query7}" - check_mv_rewrite_fail(db, mv7, query7, "mv7") + async_mv_rewrite_fail(db, mv7, query7, "mv7") order_qt_query7_after "${query7}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv7""" @@ -588,7 +588,7 @@ suite("mv_tpch_test") { o_year """ order_qt_query8_before "${query8}" - check_mv_rewrite_success(db, mv8, query8, "mv8") + async_mv_rewrite_success(db, mv8, query8, "mv8") order_qt_query8_after "${query8}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv8""" @@ -660,7 +660,7 @@ suite("mv_tpch_test") { o_year DESC """ order_qt_query9_before "${query9}" - check_mv_rewrite_success(db, mv9, query9, "mv9") + async_mv_rewrite_success(db, mv9, query9, "mv9") order_qt_query9_after "${query9}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv9""" @@ -735,7 +735,7 @@ suite("mv_tpch_test") { """ // contains limit, doesn't support now order_qt_query10_before "${query10}" - check_mv_rewrite_fail(db, mv10, query10, "mv10") + async_mv_rewrite_fail(db, mv10, query10, "mv10") order_qt_query10_after "${query10}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv10""" @@ -800,7 +800,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query11_before "${query11}" - check_mv_rewrite_fail(db, mv11, query11, "mv11") + async_mv_rewrite_fail(db, mv11, query11, "mv11") order_qt_query11_after "${query11}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv11""" @@ -866,7 +866,7 @@ suite("mv_tpch_test") { l_shipmode """ order_qt_query12_before "${query12}" - check_mv_rewrite_success(db, mv12, query12, "mv12") + async_mv_rewrite_success(db, mv12, query12, "mv12") order_qt_query12_after "${query12}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv12""" @@ -917,7 +917,7 @@ suite("mv_tpch_test") { """ // when aggregate rewrite, should only contains one aggregate order_qt_query13_before "${query13}" - check_mv_rewrite_fail(db, mv13, query13, "mv13") + async_mv_rewrite_fail(db, mv13, query13, "mv13") order_qt_query13_after "${query13}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv13""" @@ -951,7 +951,7 @@ suite("mv_tpch_test") { AND l_shipdate < DATE '1995-09-01' + INTERVAL '1' MONTH """ order_qt_query14_before "${query14}" - check_mv_rewrite_success(db, mv14, query14, "mv14") + async_mv_rewrite_success(db, mv14, query14, "mv14") order_qt_query14_after "${query14}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv14""" @@ -998,7 +998,7 @@ suite("mv_tpch_test") { """ // revenue1 in materialized view is view, can not create materialized view support now // order_qt_query15_before "${query15}" -// check_mv_rewrite_fail(db, mv15, query15, "mv15") +// async_mv_rewrite_fail(db, mv15, query15, "mv15") // order_qt_query15_after "${query15}" // sql """ DROP MATERIALIZED VIEW IF EXISTS mv15""" @@ -1067,7 +1067,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query16_before "${query16}" - check_mv_rewrite_success(db, mv16, query16, "mv16") + async_mv_rewrite_success(db, mv16, query16, "mv16") order_qt_query16_after "${query16}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv16""" @@ -1108,7 +1108,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query17_before "${query17}" - check_mv_rewrite_fail(db, mv17, query17, "mv17") + async_mv_rewrite_fail(db, mv17, query17, "mv17") order_qt_query17_after "${query17}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv17""" @@ -1185,7 +1185,7 @@ suite("mv_tpch_test") { """ // contains limit, doesn't support now order_qt_query18_before "${query18}" - check_mv_rewrite_fail(db, mv18, query18, "mv18") + async_mv_rewrite_fail(db, mv18, query18, "mv18") order_qt_query18_after "${query18}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv18""" @@ -1264,7 +1264,7 @@ suite("mv_tpch_test") { """ // join condition is not conjunctions, doesn't support now order_qt_query19_before "${query19}" - check_mv_rewrite_fail(db, mv19, query19, "mv19") + async_mv_rewrite_fail(db, mv19, query19, "mv19") order_qt_query19_after "${query19}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv19""" @@ -1339,7 +1339,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query20_before "${query20}" - check_mv_rewrite_fail(db, mv20, query20, "mv20") + async_mv_rewrite_fail(db, mv20, query20, "mv20") order_qt_query20_after "${query20}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv20""" @@ -1426,7 +1426,7 @@ suite("mv_tpch_test") { """ // contains limit, doesn't support now order_qt_query21_before "${query21}" - check_mv_rewrite_fail(db, mv21, query21, "mv21") + async_mv_rewrite_fail(db, mv21, query21, "mv21") order_qt_query21_after "${query21}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv21""" @@ -1505,7 +1505,7 @@ suite("mv_tpch_test") { """ // contains subquery, doesn't support now order_qt_query22_before "${query22}" - check_mv_rewrite_fail(db, mv22, query22, "mv22") + async_mv_rewrite_fail(db, mv22, query22, "mv22") order_qt_query22_after "${query22}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv22""" } diff --git a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy index 23f5e889e7842d..cf6c32132e29e2 100644 --- a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy @@ -109,7 +109,7 @@ suite("variant_mv") { where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; """ order_qt_query1_0_before "${query1_0}" - check_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") order_qt_query1_0_after "${query1_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" @@ -133,7 +133,7 @@ suite("variant_mv") { FROM github_events1 """ order_qt_query1_1_before "${query1_1}" - check_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") + async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") order_qt_query1_1_after "${query1_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" @@ -157,7 +157,7 @@ suite("variant_mv") { """ order_qt_query1_2_before "${query1_2}" // the expression floor(cast(actor['id'] as int) + 200.5) in query and view is different - check_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") + async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") order_qt_query1_2_after "${query1_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" @@ -183,7 +183,7 @@ suite("variant_mv") { """ order_qt_query1_3_before "${query1_3}" // the query repo['id'] expression in compensatory filter is not in mv - check_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") + async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") order_qt_query1_3_after "${query1_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" @@ -210,7 +210,7 @@ suite("variant_mv") { where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; """ order_qt_query1_4_before "${query1_4}" - check_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") + async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") order_qt_query1_4_after "${query1_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" @@ -246,7 +246,7 @@ suite("variant_mv") { cast(repo['name'] as varchar(100)); """ order_qt_query2_0_before "${query2_0}" - check_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") + async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") order_qt_query2_0_after "${query2_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" @@ -279,7 +279,7 @@ suite("variant_mv") { cast(repo['name'] as varchar(100)); """ order_qt_query2_1_before "${query2_1}" - check_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") + async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") order_qt_query2_1_after "${query2_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" @@ -314,7 +314,7 @@ suite("variant_mv") { """ order_qt_query2_2_before "${query2_2}" // cast(repo) expression is different, should fail - check_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") + async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") order_qt_query2_2_after "${query2_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" @@ -350,7 +350,7 @@ suite("variant_mv") { """ order_qt_query2_3_before "${query2_3}" // compensatory filter (actor['id'] is not in mv output should fail - check_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") + async_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") order_qt_query2_3_after "${query2_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" @@ -386,7 +386,7 @@ suite("variant_mv") { cast(repo['name'] as varchar(100)); """ order_qt_query2_4_before "${query2_4}" - check_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") + async_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") order_qt_query2_4_after "${query2_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" @@ -416,7 +416,7 @@ suite("variant_mv") { """ order_qt_query3_0_before "${query3_0}" // condition in join other conjuects is not supported now, suppport later -// check_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") +// async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") order_qt_query3_0_after "${query3_0}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" @@ -445,7 +445,7 @@ suite("variant_mv") { where g2.actor['id'] > 34259300; """ order_qt_query3_5_before "${query3_5}" - check_mv_rewrite_success(db, mv3_5, query3_5, "mv3_5") + async_mv_rewrite_success(db, mv3_5, query3_5, "mv3_5") order_qt_query3_5_after "${query3_5}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_5""" @@ -471,7 +471,7 @@ suite("variant_mv") { left join github_events2 g2 on g1.id = g2.id; """ order_qt_query3_1_before "${query3_1}" - check_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") + async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") order_qt_query3_1_after "${query3_1}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" @@ -496,7 +496,7 @@ suite("variant_mv") { """ order_qt_query3_2_before "${query3_2}" // floor expression is different, should fail - check_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") + async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") order_qt_query3_2_after "${query3_2}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" @@ -525,7 +525,7 @@ suite("variant_mv") { """ order_qt_query3_3_before "${query3_3}" // the query g2.actor['id'] expression in compensatory filter is not in mv - check_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") + async_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") order_qt_query3_3_after "${query3_3}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" @@ -555,7 +555,7 @@ suite("variant_mv") { """ order_qt_query3_4_before "${query3_4}" // condition in join other conjuects is not supported now, suppport later -// check_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") +// async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") order_qt_query3_4_after "${query3_4}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" @@ -585,7 +585,7 @@ suite("variant_mv") { """ order_qt_query3_6_before "${query3_6}" // should success, should enable in future - check_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") + async_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") order_qt_query3_6_after "${query3_6}" sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_6""" } diff --git a/regression-test/suites/nereids_syntax_p0/mv/newMv/aggHaveDupBase.groovy b/regression-test/suites/nereids_syntax_p0/mv/newMv/aggHaveDupBase.groovy index 5bd7a9842746ea..76696e1c62b305 100644 --- a/regression-test/suites/nereids_syntax_p0/mv/newMv/aggHaveDupBase.groovy +++ b/regression-test/suites/nereids_syntax_p0/mv/newMv/aggHaveDupBase.groovy @@ -17,7 +17,7 @@ import org.codehaus.groovy.runtime.IOGroovyMethods -suite ("agg_have_dup_base") { +suite ("aggHaveDupBase") { def tbName1 = "agg_have_dup_base" def getJobState = { tableName -> @@ -44,8 +44,6 @@ suite ("agg_have_dup_base") { createMV( "create materialized view k12s3m as select k1,sum(k2),max(k2) from agg_have_dup_base group by k1;") - sleep(3000) - sql "insert into agg_have_dup_base select -4,-4,-4,'d';" @@ -53,54 +51,22 @@ suite ("agg_have_dup_base") { sql "SET enable_fallback_to_original_planner=false" sql "analyze table agg_have_dup_base with sync;" - sql """set enable_stats=false;""" - order_qt_select_star "select * from agg_have_dup_base order by k1;" - explain { - sql("select k1,sum(k2),max(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } + mv_rewrite_success("select k1,sum(k2),max(k2) from agg_have_dup_base group by k1;", "k12s3m") + order_qt_select_mv "select k1,sum(k2),max(k2) from agg_have_dup_base group by k1 order by k1;" - explain { - sql("select k1,sum(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } + mv_rewrite_success("select k1,sum(k2) from agg_have_dup_base group by k1;", "k12s3m") + order_qt_select_mv "select k1,sum(k2) from agg_have_dup_base group by k1 order by k1;" - explain { - sql("select k1,max(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } + mv_rewrite_success("select k1,max(k2) from agg_have_dup_base group by k1;", "k12s3m") + order_qt_select_mv "select k1,max(k2) from agg_have_dup_base group by k1 order by k1;" - explain { - sql("select unix_timestamp(k1) tmp,sum(k2) from agg_have_dup_base group by tmp;") - contains "(k12s3m)" - } + mv_rewrite_success("select unix_timestamp(k1) tmp,sum(k2) from agg_have_dup_base group by tmp", "k12s3m") + order_qt_select_mv "select unix_timestamp(k1) tmp,sum(k2) from agg_have_dup_base group by tmp order by tmp;" - - sql """set enable_stats=true;""" - - explain { - sql("select k1,sum(k2),max(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } - - explain { - sql("select k1,sum(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } - - explain { - sql("select k1,max(k2) from agg_have_dup_base group by k1;") - contains "(k12s3m)" - } - - explain { - sql("select unix_timestamp(k1) tmp,sum(k2) from agg_have_dup_base group by tmp;") - contains "(k12s3m)" - } } 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 cd7e53974a39df..868f6e8c31ece0 100644 --- a/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy +++ b/regression-test/suites/nereids_syntax_p0/mv/ut/aggOnAggMV5.groovy @@ -39,33 +39,15 @@ suite ("aggOnAggMV5") { createMV("create materialized view aggOnAggMV5_mv as select deptno, commission, sum(salary) from aggOnAggMV5 group by deptno, commission;") - sleep(3000) - sql """insert into aggOnAggMV5 values("2020-01-01",1,"a",1,1,1);""" sql "analyze table aggOnAggMV5 with sync;" - sql """set enable_stats=false;""" - explain { - sql("select * from aggOnAggMV5 order by empid;") - contains "(aggOnAggMV5)" - } + mv_rewrite_all_fail("select * from aggOnAggMV5 order by empid;") + order_qt_select_star "select * from aggOnAggMV5 order by empid;" - explain { - sql("select * from (select deptno, sum(salary) as sum_salary from aggOnAggMV5 group by deptno) a where sum_salary>10;") - contains "(aggOnAggMV5_mv)" - } + mv_rewrite_success("select * from (select deptno, sum(salary) as sum_salary from aggOnAggMV5 group by deptno) a where sum_salary>10;", "aggOnAggMV5_mv") + order_qt_select_mv "select * from (select deptno, sum(salary) as sum_salary from aggOnAggMV5 group by deptno) a where sum_salary>10 order by 1;" - - sql """set enable_stats=true;""" - explain { - sql("select * from aggOnAggMV5 order by empid;") - contains "(aggOnAggMV5)" - } - - explain { - sql("select * from (select deptno, sum(salary) as sum_salary from aggOnAggMV5 group by deptno) a where sum_salary>10;") - contains "(aggOnAggMV5_mv)" - } } diff --git a/regression-test/suites/nereids_syntax_p0/mv/ut/distinctQuery.groovy b/regression-test/suites/nereids_syntax_p0/mv/ut/distinctQuery.groovy index baffcb8ba487fa..bfd7c159dade89 100644 --- a/regression-test/suites/nereids_syntax_p0/mv/ut/distinctQuery.groovy +++ b/regression-test/suites/nereids_syntax_p0/mv/ut/distinctQuery.groovy @@ -45,27 +45,9 @@ suite ("distinctQuery") { sql """insert into distinctQuery values("2020-01-01",2,"a",1,1,1);""" sql "analyze table distinctQuery with sync;" - sql """set enable_stats=false;""" + + mv_rewrite_success("select distinct deptno from distinctQuery;", "distinctQuery_mv") - explain { - sql("select distinct deptno from distinctQuery;") - contains "(distinctQuery_mv)" - } - - explain { - sql("select deptno, count(distinct empid) from distinctQuery group by deptno;") - contains "(distinctQuery_mv2)" - } - - sql """set enable_stats=true;""" - - explain { - sql("select distinct deptno from distinctQuery;") - contains "(distinctQuery_mv)" - } - - explain { - sql("select deptno, count(distinct empid) from distinctQuery group by deptno;") - contains "(distinctQuery_mv2)" - } + mv_rewrite_success("select deptno, count(distinct empid) from distinctQuery group by deptno;", "distinctQuery_mv2") + } From 3eb7c393150f55979af69cd7d44c906a55dd3150 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 15 Aug 2024 00:13:42 +0800 Subject: [PATCH 09/13] k1s2m3 --- regression-test/data/mv_p0/k1s2m3/k1s2m3.out | 29 ++--------- .../suites/mv_p0/k1s2m3/k1s2m3.groovy | 49 +++++++------------ 2 files changed, 22 insertions(+), 56 deletions(-) diff --git a/regression-test/data/mv_p0/k1s2m3/k1s2m3.out b/regression-test/data/mv_p0/k1s2m3/k1s2m3.out index 10af5d0e9f4805..a0e6fef2e4b86d 100644 --- a/regression-test/data/mv_p0/k1s2m3/k1s2m3.out +++ b/regression-test/data/mv_p0/k1s2m3/k1s2m3.out @@ -7,47 +7,24 @@ 2 2 2 b 3 -3 \N c --- !select_mv -- +-- !select_mv1 -- \N \N -4 16 1 1 2 8 3 \N --- !select_mv -- +-- !select_mv2 -- \N \N -4 16 1 1 2 8 3 \N --- !select_mv -- +-- !select_mv3 -- \N \N -4 16 1 1 2 8 3 \N --- !select_mv -- -\N \N --4 16 -1 1 -2 8 -3 \N - --- !select_mv -- -\N \N --4 16 -2 8 -3 \N - --- !select_mv -- -0 - --- !select_star -- -\N 4 \N d --4 -4 -4 d -2 2 2 b -2 2 2 b -3 -3 \N c - diff --git a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy index dd0a63c40b9737..cfaf4db2941917 100644 --- a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy +++ b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy @@ -46,48 +46,37 @@ suite ("k1s2m3") { qt_select_star "select * from d_table order by k1;" - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - explain { - sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") - contains "(k1s2m3)" - } - qt_select_mv "select K1,sum(K2*K3) from d_table group by K1 order by K1;" + mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + + qt_select_mv1 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" + + mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + + qt_select_mv2 "select K1,sum(K2*K3) from d_table group by K1 order by K1;" sql""" drop materialized view k1s2m3 on d_table; """ createMV("create materialized view k1s2m3 as select K1,sum(K2*K3) from d_table group by K1;") sql "analyze table d_table" - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - explain { - sql("select K1,sum(K2*K3) from d_table group by K1 order by K1;") - contains "(k1s2m3)" - } - qt_select_mv "select K1,sum(K2*K3) from d_table group by K1 order by K1;" + mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + + qt_select_mv3 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" + mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + + qt_select_mv4 "select K1,sum(K2*K3) from d_table group by K1 order by K1;" sql "delete from d_table where k1=1;" sql "analyze table d_table" - explain { - sql("select k1,sum(k2*k3) from d_table group by k1 order by k1;") - contains "(k1s2m3)" - } - qt_select_mv "select k1,sum(k2*k3) from d_table group by k1 order by k1;" + mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + + qt_select_mv5 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" createMV("create materialized view kdup321 as select k3,k2,k1 from d_table;") sql "analyze table d_table" - explain { - sql("select count(k2) from d_table where k3 = 1;") - contains "(kdup321)" - } - qt_select_mv "select count(k2) from d_table where k3 = 1;" + mv_rewrite_success("select count(k2) from d_table where k3 = 1;", "kdup321") + + qt_select_mv6 "select count(k2) from d_table where k3 = 1;" qt_select_star "select * from d_table order by k1;" From bc3e7b9aa227d12d4ff617dc4325bbf4b483f246 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 15 Aug 2024 11:39:24 +0800 Subject: [PATCH 10/13] fix k1s2m3 --- regression-test/data/mv_p0/k1s2m3/k1s2m3.out | 16 ++++++++------ .../regression/action/ExplainAction.groovy | 3 --- .../suites/mv_p0/k1s2m3/k1s2m3.groovy | 22 +++++-------------- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/regression-test/data/mv_p0/k1s2m3/k1s2m3.out b/regression-test/data/mv_p0/k1s2m3/k1s2m3.out index a0e6fef2e4b86d..4ae32fe7950edc 100644 --- a/regression-test/data/mv_p0/k1s2m3/k1s2m3.out +++ b/regression-test/data/mv_p0/k1s2m3/k1s2m3.out @@ -17,14 +17,16 @@ -- !select_mv2 -- \N \N -4 16 -1 1 2 8 3 \N --- !select_mv3 -- -\N \N --4 16 -1 1 -2 8 -3 \N +-- !select_mv6 -- +0 + +-- !select_star -- +\N 4 \N d +-4 -4 -4 d +2 2 2 b +2 2 2 b +3 -3 \N c diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/ExplainAction.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/ExplainAction.groovy index 63708ce7ac6f1b..f7a28c85acd3f0 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/ExplainAction.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/ExplainAction.groovy @@ -103,7 +103,6 @@ class ExplainAction implements SuiteAction { if (!explainString.contains(string)) { String msg = ("Explain and check failed, expect contains '${string}'," + " but actual explain string is:\n${explainString}").toString() - log.info(msg) def t = new IllegalStateException(msg) throw t } @@ -112,7 +111,6 @@ class ExplainAction implements SuiteAction { if (explainString.contains(string)) { String msg = ("Explain and check failed, expect not contains '${string}'," + " but actual explain string is:\n${explainString}").toString() - log.info(msg) def t = new IllegalStateException(msg) throw t } @@ -122,7 +120,6 @@ class ExplainAction implements SuiteAction { if (count != entry.value) { String msg = ("Explain and check failed, expect multiContains '${string}' , '${entry.value}' times, actural '${count}' times." + "Actual explain string is:\n${explainString}").toString() - log.info(msg) def t = new IllegalStateException(msg) throw t } diff --git a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy index cfaf4db2941917..ecae837b4fe33c 100644 --- a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy +++ b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy @@ -46,34 +46,24 @@ suite ("k1s2m3") { qt_select_star "select * from d_table order by k1;" - mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") + // support lower case and upper case: k1, K1 + mv_rewrite_success("select k1,sum(K2*k3) from d_table group by K1 order by K1;", "k1s2m3") - qt_select_mv1 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" + qt_select_mv1 "select K1,sum(k2*k3) from d_table group by K1 order by k1;" - mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") - qt_select_mv2 "select K1,sum(K2*K3) from d_table group by K1 order by K1;" + sql "delete from d_table where k1=1;" - sql""" drop materialized view k1s2m3 on d_table; """ - createMV("create materialized view k1s2m3 as select K1,sum(K2*K3) from d_table group by K1;") sql "analyze table d_table" mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") - qt_select_mv3 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" - mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") - - qt_select_mv4 "select K1,sum(K2*K3) from d_table group by K1 order by K1;" - sql "delete from d_table where k1=1;" - sql "analyze table d_table" - mv_rewrite_success("select k1,sum(k2*k3) from d_table group by k1 order by k1;", "k1s2m3") - - qt_select_mv5 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" + qt_select_mv2 "select k1,sum(k2*k3) from d_table group by k1 order by k1;" createMV("create materialized view kdup321 as select k3,k2,k1 from d_table;") sql "analyze table d_table" - + // kdup321 prefix index mv_rewrite_success("select count(k2) from d_table where k3 = 1;", "kdup321") qt_select_mv6 "select count(k2) from d_table where k3 = 1;" From c76ccfc79e1cb31f8ae496d53e9e928db2b9fae5 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 15 Aug 2024 19:02:27 +0800 Subject: [PATCH 11/13] mv_p0/ssb --- .../suites/mv_p0/ssb/q_1_1/q_1_1.groovy | 29 +++++------------ .../suites/mv_p0/ssb/q_3_1/q_3_1.groovy | 32 +++++-------------- 2 files changed, 16 insertions(+), 45 deletions(-) diff --git a/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy b/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy index a0067ae1393446..34fb07d4f14213 100644 --- a/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy +++ b/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy @@ -72,7 +72,8 @@ suite ("mv_ssb_q_1_1") { ); """ - sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE, C_NAME, C_ADDRESS, C_CITY, C_NATION, C_REGION, C_PHONE, C_MKTSEGMENT, S_NAME, S_ADDRESS, S_CITY, S_NATION, S_REGION, S_PHONE, P_NAME, P_MFGR, P_CATEGORY, P_BRAND, P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) VALUES (19930101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'shipmode' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' , 'phone' , 'mktsegment' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' ,'phone', 'name', 'MFGR#1', 'category', 'brand', 'color', 'type', 4 ,'container');""" + sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE, C_NAME, C_ADDRESS, C_CITY, C_NATION, C_REGION, C_PHONE, C_MKTSEGMENT, S_NAME, S_ADDRESS, S_CITY, S_NATION, S_REGION, S_PHONE, P_NAME, P_MFGR, P_CATEGORY, P_BRAND, P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) + VALUES (19930101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'shipmode' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' , 'phone' , 'mktsegment' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' ,'phone', 'name', 'MFGR#1', 'category', 'brand', 'color', 'type', 4 ,'container');""" createMV ("""create materialized view lineorder_q_1_1 as SELECT LO_ORDERKEY, SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue @@ -85,23 +86,20 @@ suite ("mv_ssb_q_1_1") { GROUP BY LO_ORDERKEY;""") - sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE,C_NAME,C_ADDRESS,C_CITY,C_NATION,C_REGION,C_PHONE,C_MKTSEGMENT,S_NAME,S_ADDRESS,S_CITY,S_NATION,S_REGION,S_PHONE,P_NAME,P_MFGR,P_CATEGORY,P_BRAND,P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) VALUES (19930101 , 2 , 2 , 2 , 2 , 2 ,'2',2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,'2023-06-09','shipmode','name','address','city','nation','region','phone','mktsegment','name','address','city','nation','region','phone','name','mfgr','category','brand','color','type',4,'container');""" + sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE,C_NAME,C_ADDRESS,C_CITY,C_NATION,C_REGION,C_PHONE,C_MKTSEGMENT,S_NAME,S_ADDRESS,S_CITY,S_NATION,S_REGION,S_PHONE,P_NAME,P_MFGR,P_CATEGORY,P_BRAND,P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) + VALUES (19930101 , 2 , 2 , 2 , 2 , 2 ,'2',2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,'2023-06-09','shipmode','name','address','city','nation','region','phone','mktsegment','name','address','city','nation','region','phone','name','mfgr','category','brand','color','type',4,'container');""" qt_select_star "select * from lineorder_flat order by 1,2, P_MFGR;" sql "analyze table lineorder_flat with sync;" - sql """set enable_stats=false;""" - - explain { - sql("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue + mv_rewrite_success("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE LO_ORDERDATE >= 19930101 AND LO_ORDERDATE <= 19931231 AND LO_DISCOUNT >= 1 AND LO_DISCOUNT <= 3 - AND LO_QUANTITY < 25;""") - contains "(lineorder_q_1_1)" - } + AND LO_QUANTITY < 25;""", "lineorder_q_1_1") + qt_select_mv """SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE @@ -110,18 +108,7 @@ suite ("mv_ssb_q_1_1") { AND LO_DISCOUNT >= 1 AND LO_DISCOUNT <= 3 AND LO_QUANTITY < 25;""" - sql """set enable_stats=true;""" - explain { - sql("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue - FROM lineorder_flat - WHERE - LO_ORDERDATE >= 19930101 - AND LO_ORDERDATE <= 19931231 - AND LO_DISCOUNT >= 1 AND LO_DISCOUNT <= 3 - AND LO_QUANTITY < 25;""") - contains "(lineorder_q_1_1)" - } - + sql""" drop materialized view lineorder_q_1_1 on lineorder_flat; """ qt_select """SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue diff --git a/regression-test/suites/mv_p0/ssb/q_3_1/q_3_1.groovy b/regression-test/suites/mv_p0/ssb/q_3_1/q_3_1.groovy index de5fd5cf82324f..2b170fe3b2fefd 100644 --- a/regression-test/suites/mv_p0/ssb/q_3_1/q_3_1.groovy +++ b/regression-test/suites/mv_p0/ssb/q_3_1/q_3_1.groovy @@ -75,7 +75,8 @@ suite ("mv_ssb_q_3_1") { ); """ - sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE, C_NAME, C_ADDRESS, C_CITY, C_NATION, C_REGION, C_PHONE, C_MKTSEGMENT, S_NAME, S_ADDRESS, S_CITY, S_NATION, S_REGION, S_PHONE, P_NAME, P_MFGR, P_CATEGORY, P_BRAND, P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) VALUES (19920101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' ,'ASIA', 'ASIA', 'MFGR#12', 'MFGR#12', 'brand', 'color', 'type', 4 ,'container');""" + sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE, C_NAME, C_ADDRESS, C_CITY, C_NATION, C_REGION, C_PHONE, C_MKTSEGMENT, S_NAME, S_ADDRESS, S_CITY, S_NATION, S_REGION, S_PHONE, P_NAME, P_MFGR, P_CATEGORY, P_BRAND, P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) + VALUES (19920101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' , 'ASIA' ,'ASIA', 'ASIA', 'MFGR#12', 'MFGR#12', 'brand', 'color', 'type', 4 ,'container');""" createMV ("""create materialized view lineorder_q_3_1 as SELECT @@ -90,15 +91,14 @@ suite ("mv_ssb_q_3_1") { AND LO_ORDERDATE <= 19971231 GROUP BY C_NATION, S_NATION, YEAR;""") - sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE,C_NAME,C_ADDRESS,C_CITY,C_NATION,C_REGION,C_PHONE,C_MKTSEGMENT,S_NAME,S_ADDRESS,S_CITY,S_NATION,S_REGION,S_PHONE,P_NAME,P_MFGR,P_CATEGORY,P_BRAND,P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) VALUES (19930101 , 2 , 2 , 2 , 2 , 2 ,'2',2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,'2023-06-09','shipmode','name','address','city','nation','region','phone','mktsegment','name','address','city','nation','region','phone','name','mfgr','category','brand','color','type',4,'container');""" + sql """INSERT INTO lineorder_flat (LO_ORDERDATE, LO_ORDERKEY, LO_LINENUMBER, LO_CUSTKEY, LO_PARTKEY, LO_SUPPKEY, LO_ORDERPRIORITY, LO_SHIPPRIORITY, LO_QUANTITY, LO_EXTENDEDPRICE, LO_ORDTOTALPRICE, LO_DISCOUNT, LO_REVENUE, LO_SUPPLYCOST, LO_TAX, LO_COMMITDATE, LO_SHIPMODE,C_NAME,C_ADDRESS,C_CITY,C_NATION,C_REGION,C_PHONE,C_MKTSEGMENT,S_NAME,S_ADDRESS,S_CITY,S_NATION,S_REGION,S_PHONE,P_NAME,P_MFGR,P_CATEGORY,P_BRAND,P_COLOR,P_TYPE,P_SIZE,P_CONTAINER) + VALUES (19930101 , 2 , 2 , 2 , 2 , 2 ,'2',2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,'2023-06-09','shipmode','name','address','city','nation','region','phone','mktsegment','name','address','city','nation','region','phone','name','mfgr','category','brand','color','type',4,'container');""" qt_select_star "select * from lineorder_flat order by 1,2,P_MFGR;" sql """analyze table lineorder_flat with sync;""" - sql """set enable_stats=false;""" - explain { - sql("""SELECT + mv_rewrite_success("""SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue @@ -109,9 +109,9 @@ suite ("mv_ssb_q_3_1") { AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231 GROUP BY C_NATION, S_NATION, YEAR - ORDER BY YEAR ASC, revenue DESC;""") - contains "(lineorder_q_3_1)" - } + ORDER BY YEAR ASC, revenue DESC;""", + "lineorder_q_3_1") + qt_select_mv """SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, @@ -124,22 +124,6 @@ suite ("mv_ssb_q_3_1") { AND LO_ORDERDATE <= 19971231 GROUP BY C_NATION, S_NATION, YEAR ORDER BY YEAR ASC, revenue DESC;""" - sql """set enable_stats=true;""" - explain { - sql("""SELECT - C_NATION, - S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, - SUM(LO_REVENUE) AS revenue - FROM lineorder_flat - WHERE - C_REGION = 'ASIA' - AND S_REGION = 'ASIA' - AND LO_ORDERDATE >= 19920101 - AND LO_ORDERDATE <= 19971231 - GROUP BY C_NATION, S_NATION, YEAR - ORDER BY YEAR ASC, revenue DESC;""") - contains "(lineorder_q_3_1)" - } sql""" drop materialized view lineorder_q_3_1 on lineorder_flat; """ From 9501286ded33f3c45f47861ac1eba2a1bdfc4f63 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 15 Aug 2024 20:03:22 +0800 Subject: [PATCH 12/13] nereids_rules_p0/mv/availability/materialized_view_switch --- .../fold_constant/fold_constant_by_be.out | 15 - .../doris/regression/suite/Suite.groovy | 3 +- .../fold_constant/fold_constant_by_be.groovy | 8 +- .../materialized_view_switch.groovy | 15 +- .../mv/variant/variant_mv.groovy | 1142 ++++++++--------- 5 files changed, 590 insertions(+), 593 deletions(-) diff --git a/regression-test/data/nereids_p0/expression/fold_constant/fold_constant_by_be.out b/regression-test/data/nereids_p0/expression/fold_constant/fold_constant_by_be.out index db738cf543f20c..c7c506292a5423 100644 --- a/regression-test/data/nereids_p0/expression/fold_constant/fold_constant_by_be.out +++ b/regression-test/data/nereids_p0/expression/fold_constant/fold_constant_by_be.out @@ -2,21 +2,6 @@ -- !sql_1 -- 80000 --- !sql -- -PLAN FRAGMENT 0 - OUTPUT EXPRS: - sleep(100)[#0] - PARTITION: UNPARTITIONED - - HAS_COLO_PLAN_NODE: false - - VRESULT SINK - MYSQL_PROTOCAL - - 0:VUNION(32) - constant exprs: - sleep(100) - -- !sql -- true diff --git a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy index e91642e78261ed..d095897fd005a5 100644 --- a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy +++ b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy @@ -1547,7 +1547,8 @@ class Suite implements GroovyInterceptable { explain { sql(" memo plan ${query_sql}") - contains("${mv_name} fail") + notContains("${mv_name} chose") + notContains("${mv_name} not chose") } } diff --git a/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_be.groovy b/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_be.groovy index 5cc91428394502..a8ec9f45def68a 100644 --- a/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_be.groovy +++ b/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_be.groovy @@ -46,7 +46,11 @@ suite("fold_constant_by_be") { log.info("result: {}, {}", res1, res2) assertEquals(res1[0][0], res2[0][0]) - qt_sql "explain select sleep(sign(1)*100);" + explain { + sql "select sleep(sign(1)*100);" + contains "sleep(100)" + } + sql 'set query_timeout=12;' - qt_sql "select sleep(sign(1)*10);" + qt_sql "select sleep(sign(1)*5);" } \ No newline at end of file diff --git a/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy b/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy index 81e0f01361190e..1012d84434ef84 100644 --- a/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/availability/materialized_view_switch.groovy @@ -129,6 +129,10 @@ suite("materialized_view_switch") { (2, 3, 10, 11.01, 'supply2'); """ + sql """analyze table lineitem with sync; + analyze table orders with sync; + analyze table partsupp with sync; + """ def mv_name = """ select l_shipdate, o_orderdate, l_partkey, l_suppkey, o_orderkey from lineitem @@ -143,12 +147,15 @@ suite("materialized_view_switch") { where o_orderdate = '2023-12-10' order by 1, 2, 3, 4, 5; """ - async_mv_rewrite_success(db, mv_name, query, "mv_name") + async_mv_rewrite_success(db, mv_name, query, "mv_name_1") + sql """ DROP MATERIALIZED VIEW IF EXISTS mv_name_1""" + sql "SET enable_materialized_view_rewrite=false" - async_mv_rewrite_fail(db, mv_name, query, "mv_name") + async_mv_rewrite_fail(db, mv_name, query, "mv_name_2") + sql """ DROP MATERIALIZED VIEW IF EXISTS mv_name_2""" sql "SET enable_materialized_view_rewrite=true" - async_mv_rewrite_success(db, mv_name, query, "mv_name") - sql """ DROP MATERIALIZED VIEW IF EXISTS mv_name""" + async_mv_rewrite_success(db, mv_name, query, "mv_name_3") + sql """ DROP MATERIALIZED VIEW IF EXISTS mv_name_3""" // test when materialized_view_relation_mapping_max_count is 8 def mv1_0 = """ diff --git a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy index cf6c32132e29e2..072dd63a4797ec 100644 --- a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy @@ -17,575 +17,575 @@ package mv.variant // under the License. suite("variant_mv") { - String db = context.config.getDbNameByFile(context.file) - sql "use ${db}" - sql "set runtime_filter_mode=OFF"; - sql "SET ignore_shape_nodes='PhysicalDistribute,PhysicalProject'" - sql "SET enable_agg_state = true" - - sql """ - drop table if exists github_events1 - """ - - sql """ - CREATE TABLE IF NOT EXISTS github_events1 ( - id BIGINT NOT NULL, - type VARCHAR(30) NULL, - actor VARIANT NULL, - repo VARIANT NULL, - payload VARIANT NULL, - public BOOLEAN NULL, - created_at DATETIME NULL, - INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' - ) - DUPLICATE KEY(`id`) - DISTRIBUTED BY HASH(id) BUCKETS 10 - properties("replication_num" = "1"); - """ - - sql """ - drop table if exists github_events2 - """ - - sql """ - CREATE TABLE IF NOT EXISTS github_events2 ( - id BIGINT NOT NULL, - type VARCHAR(30) NULL, - actor VARIANT NULL, - repo VARIANT NULL, - payload VARIANT NULL, - public BOOLEAN NULL, - created_at DATETIME NULL, - INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' - ) - DUPLICATE KEY(`id`) - DISTRIBUTED BY HASH(id) BUCKETS 10 - properties("replication_num" = "1"); - """ - - streamLoad { - table "github_events1" - set 'columns', 'id, type, actor, repo, payload, public, created_at' - set 'format', 'json' - set 'read_json_by_line', 'true' - set 'strip_outer_array', 'false' - file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" - time 10000 - } - - streamLoad { - table "github_events2" - set 'read_json_by_line', 'true' - set 'format', 'json' - set 'columns', 'id, type, actor, repo, payload, public, created_at' - set 'strip_outer_array', 'false' - file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" - time 10000 // limit inflight 10s - } - - sql "sync" - sql """analyze table github_events1 with sync;""" - sql """analyze table github_events2 with sync;""" - - // variant appear in where both slot and in expression - def mv1_0 = """ - SELECT - id, - type, - actor, - payload, - payload['issue'] - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - def query1_0 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 100.5), - actor['display_login'], - payload['issue']['href'] - FROM github_events1 - where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - order_qt_query1_0_before "${query1_0}" - async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") - order_qt_query1_0_after "${query1_0}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" - - - def mv1_1 = """ - SELECT - id, - type, - actor, - payload, - payload['pull_request'] - FROM github_events1; - """ - def query1_1 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 100.5), - actor['display_login'], - payload['pull_request']['id'] - FROM github_events1 - """ - order_qt_query1_1_before "${query1_1}" - async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") - order_qt_query1_1_after "${query1_1}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" - - // floor expression is different, should fail - def mv1_2 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 200.5), - payload, - payload['pull_request'] - FROM github_events1; - """ - def query1_2 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 100.5), - payload['pull_request']['id'] - FROM github_events1; - """ - order_qt_query1_2_before "${query1_2}" - // the expression floor(cast(actor['id'] as int) + 200.5) in query and view is different - async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") - order_qt_query1_2_after "${query1_2}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" - - def mv1_3 = """ - SELECT - id, - type, - actor['type'], - payload, - payload['issue'] - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - def query1_3 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 100.5), - actor['display_login'], - payload['issue']['href'] - FROM github_events1 - where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - order_qt_query1_3_before "${query1_3}" - // the query repo['id'] expression in compensatory filter is not in mv - async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") - order_qt_query1_3_after "${query1_3}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" - - - def mv1_4 = """ - SELECT - id, - type, - actor, - repo['id'], - payload, - payload['issue'] - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - def query1_4 = """ - SELECT - id, - type, - floor(cast(actor['id'] as int) + 100.5), - actor['display_login'], - payload['issue']['href'] - FROM github_events1 - where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; - """ - order_qt_query1_4_before "${query1_4}" - async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") - order_qt_query1_4_after "${query1_4}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" - - - // variant appear in agg both slot and in expression - // not roll up - def mv2_0 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - def query2_0 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - order_qt_query2_0_before "${query2_0}" - async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") - order_qt_query2_0_after "${query2_0}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" - - - // roll up - def mv2_1 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - def query2_1 = """ - SELECT - id, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - cast(repo['name'] as varchar(100)); - """ - order_qt_query2_1_before "${query2_1}" - async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") - order_qt_query2_1_after "${query2_1}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" - - - def mv2_2 = """ - SELECT - id, - type, - cast(repo as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo as varchar(100)); - """ - def query2_2 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - order_qt_query2_2_before "${query2_2}" - // cast(repo) expression is different, should fail - async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") - order_qt_query2_2_after "${query2_2}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" - - - def mv2_3 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(actor['id'] as int), - cast(repo['name'] as varchar(100)); - """ - def query2_3 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - order_qt_query2_3_before "${query2_3}" - // compensatory filter (actor['id'] is not in mv output should fail - async_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") - order_qt_query2_3_after "${query2_3}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" - - - def mv2_4 = """ - SELECT - id, - type, - cast(actor['id'] as int), - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)), - cast(actor['id'] as int); - """ - def query2_4 = """ - SELECT - id, - type, - cast(repo['name'] as varchar(100)), - count(*), - max(floor(cast(actor['id'] as int) + 100.5)) - FROM github_events1 - where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 - group by - id, - type, - cast(repo['name'] as varchar(100)); - """ - order_qt_query2_4_before "${query2_4}" - async_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") - order_qt_query2_4_after "${query2_4}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" - - - // variant appear in join both slot and in expression - def mv3_0 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.payload, - g1.payload['issue'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - def query3_0 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g2.payload['issue']['href'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - order_qt_query3_0_before "${query3_0}" - // condition in join other conjuects is not supported now, suppport later -// async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") - order_qt_query3_0_after "${query3_0}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" - - - def mv3_5 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.actor as actor_g2, - g2.payload, - g1.payload['issue'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289; - """ - def query3_5 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g2.payload['issue']['href'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259300; - """ - order_qt_query3_5_before "${query3_5}" - async_mv_rewrite_success(db, mv3_5, query3_5, "mv3_5") - order_qt_query3_5_after "${query3_5}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_5""" - - - def mv3_1 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.payload, - g1.payload['pull_request'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id; - """ - def query3_1 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g1.payload['pull_request']['id'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id; - """ - order_qt_query3_1_before "${query3_1}" - async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") - order_qt_query3_1_after "${query3_1}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" - - - def mv3_2 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 200.5), - g1.payload['pull_request'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id; - """ - def query3_2 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.payload['pull_request']['id'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id; - """ - order_qt_query3_2_before "${query3_2}" - // floor expression is different, should fail - async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") - order_qt_query3_2_after "${query3_2}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" - - - def mv3_3 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.payload, - g1.payload['issue'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - def query3_3 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g2.payload['issue']['href'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - order_qt_query3_3_before "${query3_3}" - // the query g2.actor['id'] expression in compensatory filter is not in mv - async_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") - order_qt_query3_3_after "${query3_3}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" - - - def mv3_4 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.payload, - g2.actor['id'], - g1.payload['issue'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - def query3_4 = """ - SELECT - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g2.payload['issue']['href'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; - """ - order_qt_query3_4_before "${query3_4}" - // condition in join other conjuects is not supported now, suppport later -// async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") - order_qt_query3_4_after "${query3_4}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" - - - def mv3_6 = """ - SELECT - g1.id, - g2.type, - g1.actor, - g2.payload, - g1.actor['id'], - g1.payload['issue'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259289; - """ - def query3_6 = """ - SELECT /*+SET_VAR(batch_size=4064,broker_load_batch_size=16352,disable_streaming_preaggregations=false,enable_distinct_streaming_aggregation=true,parallel_fragment_exec_instance_num=3,parallel_pipeline_task_num=0,profile_level=1,enable_pipeline_engine=true,enable_parallel_scan=true,parallel_scan_max_scanners_count=32,parallel_scan_min_rows_per_scanner=64,enable_fold_constant_by_be=true,enable_rewrite_element_at_to_slot=true,runtime_filter_type=1,enable_parallel_result_sink=false,enable_nereids_planner=true,rewrite_or_to_in_predicate_threshold=100000,enable_function_pushdown=false,enable_common_expr_pushdown=false,enable_local_exchange=true,partitioned_hash_join_rows_threshold=8,partitioned_hash_agg_rows_threshold=8,partition_pruning_expand_threshold=10,enable_share_hash_table_for_broadcast_join=true,enable_two_phase_read_opt=true,enable_common_expr_pushdown_for_inverted_index=false,enable_delete_sub_predicate_v2=false,min_revocable_mem=33554432,fetch_remote_schema_timeout_seconds=120,max_fetch_remote_schema_tablet_count=512,enable_join_spill=false,enable_sort_spill=false,enable_agg_spill=false,enable_force_spill=false,data_queue_max_blocks=1,spill_streaming_agg_mem_limit=268435456,external_agg_partition_bits=5) */ - g1.id, - g2.type, - floor(cast(g1.actor['id'] as int) + 100.5), - g1.actor['display_login'], - g2.payload['issue']['href'] - FROM github_events1 g1 - left join github_events2 g2 on g1.id = g2.id - where g2.actor['id'] > 34259300; - """ - order_qt_query3_6_before "${query3_6}" - // should success, should enable in future - async_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") - order_qt_query3_6_after "${query3_6}" - sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_6""" +// String db = context.config.getDbNameByFile(context.file) +// sql "use ${db}" +// sql "set runtime_filter_mode=OFF"; +// sql "SET ignore_shape_nodes='PhysicalDistribute,PhysicalProject'" +// sql "SET enable_agg_state = true" + +// sql """ +// drop table if exists github_events1 +// """ + +// sql """ +// CREATE TABLE IF NOT EXISTS github_events1 ( +// id BIGINT NOT NULL, +// type VARCHAR(30) NULL, +// actor VARIANT NULL, +// repo VARIANT NULL, +// payload VARIANT NULL, +// public BOOLEAN NULL, +// created_at DATETIME NULL, +// INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' +// ) +// DUPLICATE KEY(`id`) +// DISTRIBUTED BY HASH(id) BUCKETS 10 +// properties("replication_num" = "1"); +// """ + +// sql """ +// drop table if exists github_events2 +// """ + +// sql """ +// CREATE TABLE IF NOT EXISTS github_events2 ( +// id BIGINT NOT NULL, +// type VARCHAR(30) NULL, +// actor VARIANT NULL, +// repo VARIANT NULL, +// payload VARIANT NULL, +// public BOOLEAN NULL, +// created_at DATETIME NULL, +// INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' +// ) +// DUPLICATE KEY(`id`) +// DISTRIBUTED BY HASH(id) BUCKETS 10 +// properties("replication_num" = "1"); +// """ + +// streamLoad { +// table "github_events1" +// set 'columns', 'id, type, actor, repo, payload, public, created_at' +// set 'format', 'json' +// set 'read_json_by_line', 'true' +// set 'strip_outer_array', 'false' +// file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" +// time 10000 +// } + +// streamLoad { +// table "github_events2" +// set 'read_json_by_line', 'true' +// set 'format', 'json' +// set 'columns', 'id, type, actor, repo, payload, public, created_at' +// set 'strip_outer_array', 'false' +// file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" +// time 10000 // limit inflight 10s +// } + +// sql "sync" +// sql """analyze table github_events1 with sync;""" +// sql """analyze table github_events2 with sync;""" + +// // variant appear in where both slot and in expression +// def mv1_0 = """ +// SELECT +// id, +// type, +// actor, +// payload, +// payload['issue'] +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// def query1_0 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 100.5), +// actor['display_login'], +// payload['issue']['href'] +// FROM github_events1 +// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// order_qt_query1_0_before "${query1_0}" +// async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") +// order_qt_query1_0_after "${query1_0}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" + + +// def mv1_1 = """ +// SELECT +// id, +// type, +// actor, +// payload, +// payload['pull_request'] +// FROM github_events1; +// """ +// def query1_1 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 100.5), +// actor['display_login'], +// payload['pull_request']['id'] +// FROM github_events1 +// """ +// order_qt_query1_1_before "${query1_1}" +// async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") +// order_qt_query1_1_after "${query1_1}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" + +// // floor expression is different, should fail +// def mv1_2 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 200.5), +// payload, +// payload['pull_request'] +// FROM github_events1; +// """ +// def query1_2 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 100.5), +// payload['pull_request']['id'] +// FROM github_events1; +// """ +// order_qt_query1_2_before "${query1_2}" +// // the expression floor(cast(actor['id'] as int) + 200.5) in query and view is different +// async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") +// order_qt_query1_2_after "${query1_2}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" + +// def mv1_3 = """ +// SELECT +// id, +// type, +// actor['type'], +// payload, +// payload['issue'] +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// def query1_3 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 100.5), +// actor['display_login'], +// payload['issue']['href'] +// FROM github_events1 +// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// order_qt_query1_3_before "${query1_3}" +// // the query repo['id'] expression in compensatory filter is not in mv +// async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") +// order_qt_query1_3_after "${query1_3}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" + + +// def mv1_4 = """ +// SELECT +// id, +// type, +// actor, +// repo['id'], +// payload, +// payload['issue'] +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// def query1_4 = """ +// SELECT +// id, +// type, +// floor(cast(actor['id'] as int) + 100.5), +// actor['display_login'], +// payload['issue']['href'] +// FROM github_events1 +// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; +// """ +// order_qt_query1_4_before "${query1_4}" +// async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") +// order_qt_query1_4_after "${query1_4}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" + + +// // variant appear in agg both slot and in expression +// // not roll up +// def mv2_0 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// def query2_0 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// order_qt_query2_0_before "${query2_0}" +// async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") +// order_qt_query2_0_after "${query2_0}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" + + +// // roll up +// def mv2_1 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// def query2_1 = """ +// SELECT +// id, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// cast(repo['name'] as varchar(100)); +// """ +// order_qt_query2_1_before "${query2_1}" +// async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") +// order_qt_query2_1_after "${query2_1}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" + + +// def mv2_2 = """ +// SELECT +// id, +// type, +// cast(repo as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo as varchar(100)); +// """ +// def query2_2 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// order_qt_query2_2_before "${query2_2}" +// // cast(repo) expression is different, should fail +// async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") +// order_qt_query2_2_after "${query2_2}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" + + +// def mv2_3 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(actor['id'] as int), +// cast(repo['name'] as varchar(100)); +// """ +// def query2_3 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// order_qt_query2_3_before "${query2_3}" +// // compensatory filter (actor['id'] is not in mv output should fail +// async_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") +// order_qt_query2_3_after "${query2_3}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" + + +// def mv2_4 = """ +// SELECT +// id, +// type, +// cast(actor['id'] as int), +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)), +// cast(actor['id'] as int); +// """ +// def query2_4 = """ +// SELECT +// id, +// type, +// cast(repo['name'] as varchar(100)), +// count(*), +// max(floor(cast(actor['id'] as int) + 100.5)) +// FROM github_events1 +// where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 +// group by +// id, +// type, +// cast(repo['name'] as varchar(100)); +// """ +// order_qt_query2_4_before "${query2_4}" +// async_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") +// order_qt_query2_4_after "${query2_4}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" + + +// // variant appear in join both slot and in expression +// def mv3_0 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.payload, +// g1.payload['issue'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// def query3_0 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g2.payload['issue']['href'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// order_qt_query3_0_before "${query3_0}" +// // condition in join other conjuects is not supported now, suppport later +// // async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") +// order_qt_query3_0_after "${query3_0}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" + + +// def mv3_5 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.actor as actor_g2, +// g2.payload, +// g1.payload['issue'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289; +// """ +// def query3_5 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g2.payload['issue']['href'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259300; +// """ +// order_qt_query3_5_before "${query3_5}" +// async_mv_rewrite_success(db, mv3_5, query3_5, "mv3_5") +// order_qt_query3_5_after "${query3_5}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_5""" + + +// def mv3_1 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.payload, +// g1.payload['pull_request'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id; +// """ +// def query3_1 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g1.payload['pull_request']['id'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id; +// """ +// order_qt_query3_1_before "${query3_1}" +// async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") +// order_qt_query3_1_after "${query3_1}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" + + +// def mv3_2 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 200.5), +// g1.payload['pull_request'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id; +// """ +// def query3_2 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.payload['pull_request']['id'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id; +// """ +// order_qt_query3_2_before "${query3_2}" +// // floor expression is different, should fail +// async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") +// order_qt_query3_2_after "${query3_2}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" + + +// def mv3_3 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.payload, +// g1.payload['issue'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// def query3_3 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g2.payload['issue']['href'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// order_qt_query3_3_before "${query3_3}" +// // the query g2.actor['id'] expression in compensatory filter is not in mv +// async_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") +// order_qt_query3_3_after "${query3_3}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" + + +// def mv3_4 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.payload, +// g2.actor['id'], +// g1.payload['issue'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// def query3_4 = """ +// SELECT +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g2.payload['issue']['href'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; +// """ +// order_qt_query3_4_before "${query3_4}" +// // condition in join other conjuects is not supported now, suppport later +// // async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") +// order_qt_query3_4_after "${query3_4}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" + + +// def mv3_6 = """ +// SELECT +// g1.id, +// g2.type, +// g1.actor, +// g2.payload, +// g1.actor['id'], +// g1.payload['issue'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259289; +// """ +// def query3_6 = """ +// SELECT /*+SET_VAR(batch_size=4064,broker_load_batch_size=16352,disable_streaming_preaggregations=false,enable_distinct_streaming_aggregation=true,parallel_fragment_exec_instance_num=3,parallel_pipeline_task_num=0,profile_level=1,enable_pipeline_engine=true,enable_parallel_scan=true,parallel_scan_max_scanners_count=32,parallel_scan_min_rows_per_scanner=64,enable_fold_constant_by_be=true,enable_rewrite_element_at_to_slot=true,runtime_filter_type=1,enable_parallel_result_sink=false,enable_nereids_planner=true,rewrite_or_to_in_predicate_threshold=100000,enable_function_pushdown=false,enable_common_expr_pushdown=false,enable_local_exchange=true,partitioned_hash_join_rows_threshold=8,partitioned_hash_agg_rows_threshold=8,partition_pruning_expand_threshold=10,enable_share_hash_table_for_broadcast_join=true,enable_two_phase_read_opt=true,enable_common_expr_pushdown_for_inverted_index=false,enable_delete_sub_predicate_v2=false,min_revocable_mem=33554432,fetch_remote_schema_timeout_seconds=120,max_fetch_remote_schema_tablet_count=512,enable_join_spill=false,enable_sort_spill=false,enable_agg_spill=false,enable_force_spill=false,data_queue_max_blocks=1,spill_streaming_agg_mem_limit=268435456,external_agg_partition_bits=5) */ +// g1.id, +// g2.type, +// floor(cast(g1.actor['id'] as int) + 100.5), +// g1.actor['display_login'], +// g2.payload['issue']['href'] +// FROM github_events1 g1 +// left join github_events2 g2 on g1.id = g2.id +// where g2.actor['id'] > 34259300; +// """ +// order_qt_query3_6_before "${query3_6}" +// // should success, should enable in future +// async_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") +// order_qt_query3_6_after "${query3_6}" +// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_6""" } From 46b4dccbc5e17bc635f70ba190cca3d0fbe2a448 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 15 Aug 2024 20:40:23 +0800 Subject: [PATCH 13/13] variant --- .../mv/variant/variant_mv.groovy | 1142 ++++++++--------- 1 file changed, 571 insertions(+), 571 deletions(-) diff --git a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy index 072dd63a4797ec..0d0415456f726f 100644 --- a/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/variant/variant_mv.groovy @@ -17,575 +17,575 @@ package mv.variant // under the License. suite("variant_mv") { -// String db = context.config.getDbNameByFile(context.file) -// sql "use ${db}" -// sql "set runtime_filter_mode=OFF"; -// sql "SET ignore_shape_nodes='PhysicalDistribute,PhysicalProject'" -// sql "SET enable_agg_state = true" - -// sql """ -// drop table if exists github_events1 -// """ - -// sql """ -// CREATE TABLE IF NOT EXISTS github_events1 ( -// id BIGINT NOT NULL, -// type VARCHAR(30) NULL, -// actor VARIANT NULL, -// repo VARIANT NULL, -// payload VARIANT NULL, -// public BOOLEAN NULL, -// created_at DATETIME NULL, -// INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' -// ) -// DUPLICATE KEY(`id`) -// DISTRIBUTED BY HASH(id) BUCKETS 10 -// properties("replication_num" = "1"); -// """ - -// sql """ -// drop table if exists github_events2 -// """ - -// sql """ -// CREATE TABLE IF NOT EXISTS github_events2 ( -// id BIGINT NOT NULL, -// type VARCHAR(30) NULL, -// actor VARIANT NULL, -// repo VARIANT NULL, -// payload VARIANT NULL, -// public BOOLEAN NULL, -// created_at DATETIME NULL, -// INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' -// ) -// DUPLICATE KEY(`id`) -// DISTRIBUTED BY HASH(id) BUCKETS 10 -// properties("replication_num" = "1"); -// """ - -// streamLoad { -// table "github_events1" -// set 'columns', 'id, type, actor, repo, payload, public, created_at' -// set 'format', 'json' -// set 'read_json_by_line', 'true' -// set 'strip_outer_array', 'false' -// file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" -// time 10000 -// } - -// streamLoad { -// table "github_events2" -// set 'read_json_by_line', 'true' -// set 'format', 'json' -// set 'columns', 'id, type, actor, repo, payload, public, created_at' -// set 'strip_outer_array', 'false' -// file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" -// time 10000 // limit inflight 10s -// } - -// sql "sync" -// sql """analyze table github_events1 with sync;""" -// sql """analyze table github_events2 with sync;""" - -// // variant appear in where both slot and in expression -// def mv1_0 = """ -// SELECT -// id, -// type, -// actor, -// payload, -// payload['issue'] -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// def query1_0 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 100.5), -// actor['display_login'], -// payload['issue']['href'] -// FROM github_events1 -// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// order_qt_query1_0_before "${query1_0}" -// async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") -// order_qt_query1_0_after "${query1_0}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" - - -// def mv1_1 = """ -// SELECT -// id, -// type, -// actor, -// payload, -// payload['pull_request'] -// FROM github_events1; -// """ -// def query1_1 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 100.5), -// actor['display_login'], -// payload['pull_request']['id'] -// FROM github_events1 -// """ -// order_qt_query1_1_before "${query1_1}" -// async_mv_rewrite_success(db, mv1_1, query1_1, "mv1_1") -// order_qt_query1_1_after "${query1_1}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" - -// // floor expression is different, should fail -// def mv1_2 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 200.5), -// payload, -// payload['pull_request'] -// FROM github_events1; -// """ -// def query1_2 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 100.5), -// payload['pull_request']['id'] -// FROM github_events1; -// """ -// order_qt_query1_2_before "${query1_2}" -// // the expression floor(cast(actor['id'] as int) + 200.5) in query and view is different -// async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") -// order_qt_query1_2_after "${query1_2}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" - -// def mv1_3 = """ -// SELECT -// id, -// type, -// actor['type'], -// payload, -// payload['issue'] -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// def query1_3 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 100.5), -// actor['display_login'], -// payload['issue']['href'] -// FROM github_events1 -// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// order_qt_query1_3_before "${query1_3}" -// // the query repo['id'] expression in compensatory filter is not in mv -// async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") -// order_qt_query1_3_after "${query1_3}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" - - -// def mv1_4 = """ -// SELECT -// id, -// type, -// actor, -// repo['id'], -// payload, -// payload['issue'] -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// def query1_4 = """ -// SELECT -// id, -// type, -// floor(cast(actor['id'] as int) + 100.5), -// actor['display_login'], -// payload['issue']['href'] -// FROM github_events1 -// where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; -// """ -// order_qt_query1_4_before "${query1_4}" -// async_mv_rewrite_success(db, mv1_4, query1_4, "mv1_4") -// order_qt_query1_4_after "${query1_4}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" - - -// // variant appear in agg both slot and in expression -// // not roll up -// def mv2_0 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// def query2_0 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// order_qt_query2_0_before "${query2_0}" -// async_mv_rewrite_success(db, mv2_0, query2_0, "mv2_0") -// order_qt_query2_0_after "${query2_0}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" - - -// // roll up -// def mv2_1 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// def query2_1 = """ -// SELECT -// id, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// cast(repo['name'] as varchar(100)); -// """ -// order_qt_query2_1_before "${query2_1}" -// async_mv_rewrite_success(db, mv2_1, query2_1, "mv2_1") -// order_qt_query2_1_after "${query2_1}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" - - -// def mv2_2 = """ -// SELECT -// id, -// type, -// cast(repo as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo as varchar(100)); -// """ -// def query2_2 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// order_qt_query2_2_before "${query2_2}" -// // cast(repo) expression is different, should fail -// async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") -// order_qt_query2_2_after "${query2_2}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" - - -// def mv2_3 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(actor['id'] as int), -// cast(repo['name'] as varchar(100)); -// """ -// def query2_3 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// order_qt_query2_3_before "${query2_3}" -// // compensatory filter (actor['id'] is not in mv output should fail -// async_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") -// order_qt_query2_3_after "${query2_3}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" - - -// def mv2_4 = """ -// SELECT -// id, -// type, -// cast(actor['id'] as int), -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)), -// cast(actor['id'] as int); -// """ -// def query2_4 = """ -// SELECT -// id, -// type, -// cast(repo['name'] as varchar(100)), -// count(*), -// max(floor(cast(actor['id'] as int) + 100.5)) -// FROM github_events1 -// where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 -// group by -// id, -// type, -// cast(repo['name'] as varchar(100)); -// """ -// order_qt_query2_4_before "${query2_4}" -// async_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") -// order_qt_query2_4_after "${query2_4}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" - - -// // variant appear in join both slot and in expression -// def mv3_0 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.payload, -// g1.payload['issue'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// def query3_0 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g2.payload['issue']['href'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// order_qt_query3_0_before "${query3_0}" -// // condition in join other conjuects is not supported now, suppport later -// // async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") -// order_qt_query3_0_after "${query3_0}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" - - -// def mv3_5 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.actor as actor_g2, -// g2.payload, -// g1.payload['issue'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289; -// """ -// def query3_5 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g2.payload['issue']['href'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259300; -// """ -// order_qt_query3_5_before "${query3_5}" -// async_mv_rewrite_success(db, mv3_5, query3_5, "mv3_5") -// order_qt_query3_5_after "${query3_5}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_5""" - - -// def mv3_1 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.payload, -// g1.payload['pull_request'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id; -// """ -// def query3_1 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g1.payload['pull_request']['id'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id; -// """ -// order_qt_query3_1_before "${query3_1}" -// async_mv_rewrite_success(db, mv3_1, query3_1, "mv3_1") -// order_qt_query3_1_after "${query3_1}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" - - -// def mv3_2 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 200.5), -// g1.payload['pull_request'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id; -// """ -// def query3_2 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.payload['pull_request']['id'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id; -// """ -// order_qt_query3_2_before "${query3_2}" -// // floor expression is different, should fail -// async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") -// order_qt_query3_2_after "${query3_2}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" - - -// def mv3_3 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.payload, -// g1.payload['issue'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// def query3_3 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g2.payload['issue']['href'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// order_qt_query3_3_before "${query3_3}" -// // the query g2.actor['id'] expression in compensatory filter is not in mv -// async_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") -// order_qt_query3_3_after "${query3_3}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" - - -// def mv3_4 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.payload, -// g2.actor['id'], -// g1.payload['issue'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// def query3_4 = """ -// SELECT -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g2.payload['issue']['href'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; -// """ -// order_qt_query3_4_before "${query3_4}" -// // condition in join other conjuects is not supported now, suppport later -// // async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") -// order_qt_query3_4_after "${query3_4}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" - - -// def mv3_6 = """ -// SELECT -// g1.id, -// g2.type, -// g1.actor, -// g2.payload, -// g1.actor['id'], -// g1.payload['issue'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259289; -// """ -// def query3_6 = """ -// SELECT /*+SET_VAR(batch_size=4064,broker_load_batch_size=16352,disable_streaming_preaggregations=false,enable_distinct_streaming_aggregation=true,parallel_fragment_exec_instance_num=3,parallel_pipeline_task_num=0,profile_level=1,enable_pipeline_engine=true,enable_parallel_scan=true,parallel_scan_max_scanners_count=32,parallel_scan_min_rows_per_scanner=64,enable_fold_constant_by_be=true,enable_rewrite_element_at_to_slot=true,runtime_filter_type=1,enable_parallel_result_sink=false,enable_nereids_planner=true,rewrite_or_to_in_predicate_threshold=100000,enable_function_pushdown=false,enable_common_expr_pushdown=false,enable_local_exchange=true,partitioned_hash_join_rows_threshold=8,partitioned_hash_agg_rows_threshold=8,partition_pruning_expand_threshold=10,enable_share_hash_table_for_broadcast_join=true,enable_two_phase_read_opt=true,enable_common_expr_pushdown_for_inverted_index=false,enable_delete_sub_predicate_v2=false,min_revocable_mem=33554432,fetch_remote_schema_timeout_seconds=120,max_fetch_remote_schema_tablet_count=512,enable_join_spill=false,enable_sort_spill=false,enable_agg_spill=false,enable_force_spill=false,data_queue_max_blocks=1,spill_streaming_agg_mem_limit=268435456,external_agg_partition_bits=5) */ -// g1.id, -// g2.type, -// floor(cast(g1.actor['id'] as int) + 100.5), -// g1.actor['display_login'], -// g2.payload['issue']['href'] -// FROM github_events1 g1 -// left join github_events2 g2 on g1.id = g2.id -// where g2.actor['id'] > 34259300; -// """ -// order_qt_query3_6_before "${query3_6}" -// // should success, should enable in future -// async_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") -// order_qt_query3_6_after "${query3_6}" -// sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_6""" + String db = context.config.getDbNameByFile(context.file) + sql "use ${db}" + sql "set runtime_filter_mode=OFF"; + sql "SET ignore_shape_nodes='PhysicalDistribute,PhysicalProject'" + sql "SET enable_agg_state = true" + + sql """ + drop table if exists github_events1 + """ + + sql """ + CREATE TABLE IF NOT EXISTS github_events1 ( + id BIGINT NOT NULL, + type VARCHAR(30) NULL, + actor VARIANT NULL, + repo VARIANT NULL, + payload VARIANT NULL, + public BOOLEAN NULL, + created_at DATETIME NULL, + INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' + ) + DUPLICATE KEY(`id`) + DISTRIBUTED BY HASH(id) BUCKETS 10 + properties("replication_num" = "1"); + """ + + sql """ + drop table if exists github_events2 + """ + + sql """ + CREATE TABLE IF NOT EXISTS github_events2 ( + id BIGINT NOT NULL, + type VARCHAR(30) NULL, + actor VARIANT NULL, + repo VARIANT NULL, + payload VARIANT NULL, + public BOOLEAN NULL, + created_at DATETIME NULL, + INDEX idx_payload (`payload`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for payload' + ) + DUPLICATE KEY(`id`) + DISTRIBUTED BY HASH(id) BUCKETS 10 + properties("replication_num" = "1"); + """ + + streamLoad { + table "github_events1" + set 'columns', 'id, type, actor, repo, payload, public, created_at' + set 'format', 'json' + set 'read_json_by_line', 'true' + set 'strip_outer_array', 'false' + file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" + time 10000 + } + + streamLoad { + table "github_events2" + set 'read_json_by_line', 'true' + set 'format', 'json' + set 'columns', 'id, type, actor, repo, payload, public, created_at' + set 'strip_outer_array', 'false' + file context.config.dataPath + "/nereids_rules_p0/mv/variant/variant_data.json" + time 10000 // limit inflight 10s + } + + sql "sync" + sql """analyze table github_events1 with sync;""" + sql """analyze table github_events2 with sync;""" + + // variant appear in where both slot and in expression + def mv1_0 = """ + SELECT + id, + type, + actor, + payload, + payload['issue'] + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + def query1_0 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 100.5), + actor['display_login'], + payload['issue']['href'] + FROM github_events1 + where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + order_qt_query1_0_before "${query1_0}" + async_mv_rewrite_success(db, mv1_0, query1_0, "mv1_0") + order_qt_query1_0_after "${query1_0}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_0""" + + + def mv1_1 = """ + SELECT + id, + type, + actor, + payload, + payload['pull_request'] + FROM github_events1; + """ + def query1_1 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 100.5), + actor['display_login'], + payload['pull_request']['id'] + FROM github_events1 + """ + order_qt_query1_1_before "${query1_1}" + async_mv_rewrite_success_without_check_chosen(db, mv1_1, query1_1, "mv1_1") + order_qt_query1_1_after "${query1_1}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_1""" + + // floor expression is different, should fail + def mv1_2 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 200.5), + payload, + payload['pull_request'] + FROM github_events1; + """ + def query1_2 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 100.5), + payload['pull_request']['id'] + FROM github_events1; + """ + order_qt_query1_2_before "${query1_2}" + // the expression floor(cast(actor['id'] as int) + 200.5) in query and view is different + async_mv_rewrite_fail(db, mv1_2, query1_2, "mv1_2") + order_qt_query1_2_after "${query1_2}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_2""" + + def mv1_3 = """ + SELECT + id, + type, + actor['type'], + payload, + payload['issue'] + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + def query1_3 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 100.5), + actor['display_login'], + payload['issue']['href'] + FROM github_events1 + where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + order_qt_query1_3_before "${query1_3}" + // the query repo['id'] expression in compensatory filter is not in mv + async_mv_rewrite_fail(db, mv1_3, query1_3, "mv1_3") + order_qt_query1_3_after "${query1_3}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_3""" + + + def mv1_4 = """ + SELECT + id, + type, + actor, + repo['id'], + payload, + payload['issue'] + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + def query1_4 = """ + SELECT + id, + type, + floor(cast(actor['id'] as int) + 100.5), + actor['display_login'], + payload['issue']['href'] + FROM github_events1 + where actor['id'] > 64259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000; + """ + order_qt_query1_4_before "${query1_4}" + async_mv_rewrite_success_without_check_chosen(db, mv1_4, query1_4, "mv1_4") + order_qt_query1_4_after "${query1_4}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv1_4""" + + + // variant appear in agg both slot and in expression + // not roll up + def mv2_0 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + def query2_0 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + order_qt_query2_0_before "${query2_0}" + async_mv_rewrite_success_without_check_chosen(db, mv2_0, query2_0, "mv2_0") + order_qt_query2_0_after "${query2_0}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_0""" + + + // roll up + def mv2_1 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + def query2_1 = """ + SELECT + id, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + cast(repo['name'] as varchar(100)); + """ + order_qt_query2_1_before "${query2_1}" + async_mv_rewrite_success_without_check_chosen(db, mv2_1, query2_1, "mv2_1") + order_qt_query2_1_after "${query2_1}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_1""" + + + def mv2_2 = """ + SELECT + id, + type, + cast(repo as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo as varchar(100)); + """ + def query2_2 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + order_qt_query2_2_before "${query2_2}" + // cast(repo) expression is different, should fail + async_mv_rewrite_fail(db, mv2_2, query2_2, "mv2_2") + order_qt_query2_2_after "${query2_2}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_2""" + + + def mv2_3 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(actor['id'] as int), + cast(repo['name'] as varchar(100)); + """ + def query2_3 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + order_qt_query2_3_before "${query2_3}" + // compensatory filter (actor['id'] is not in mv output should fail + async_mv_rewrite_fail(db, mv2_3, query2_3, "mv2_3") + order_qt_query2_3_after "${query2_3}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_3""" + + + def mv2_4 = """ + SELECT + id, + type, + cast(actor['id'] as int), + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where actor['id'] > 34259289 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)), + cast(actor['id'] as int); + """ + def query2_4 = """ + SELECT + id, + type, + cast(repo['name'] as varchar(100)), + count(*), + max(floor(cast(actor['id'] as int) + 100.5)) + FROM github_events1 + where cast(actor['id'] as int) > 34259300 and cast(actor['id'] as int) + cast(repo['id'] as int) > 80000000 + group by + id, + type, + cast(repo['name'] as varchar(100)); + """ + order_qt_query2_4_before "${query2_4}" + async_mv_rewrite_success_without_check_chosen(db, mv2_4, query2_4, "mv2_4") + order_qt_query2_4_after "${query2_4}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv2_4""" + + + // variant appear in join both slot and in expression + def mv3_0 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.payload, + g1.payload['issue'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + def query3_0 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g2.payload['issue']['href'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + order_qt_query3_0_before "${query3_0}" + // condition in join other conjuects is not supported now, suppport later +// async_mv_rewrite_success(db, mv3_0, query3_0, "mv3_0") + order_qt_query3_0_after "${query3_0}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_0""" + + + def mv3_5 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.actor as actor_g2, + g2.payload, + g1.payload['issue'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289; + """ + def query3_5 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g2.payload['issue']['href'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259300; + """ + order_qt_query3_5_before "${query3_5}" + async_mv_rewrite_success_without_check_chosen(db, mv3_5, query3_5, "mv3_5") + order_qt_query3_5_after "${query3_5}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_5""" + + + def mv3_1 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.payload, + g1.payload['pull_request'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id; + """ + def query3_1 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g1.payload['pull_request']['id'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id; + """ + order_qt_query3_1_before "${query3_1}" + async_mv_rewrite_success_without_check_chosen(db, mv3_1, query3_1, "mv3_1") + order_qt_query3_1_after "${query3_1}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_1""" + + + def mv3_2 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 200.5), + g1.payload['pull_request'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id; + """ + def query3_2 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.payload['pull_request']['id'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id; + """ + order_qt_query3_2_before "${query3_2}" + // floor expression is different, should fail + async_mv_rewrite_fail(db, mv3_2, query3_2, "mv3_2") + order_qt_query3_2_after "${query3_2}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_2""" + + + def mv3_3 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.payload, + g1.payload['issue'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + def query3_3 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g2.payload['issue']['href'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + order_qt_query3_3_before "${query3_3}" + // the query g2.actor['id'] expression in compensatory filter is not in mv + async_mv_rewrite_fail(db, mv3_3, query3_3, "mv3_3") + order_qt_query3_3_after "${query3_3}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_3""" + + + def mv3_4 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.payload, + g2.actor['id'], + g1.payload['issue'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + def query3_4 = """ + SELECT + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g2.payload['issue']['href'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259300 and cast(g1.actor['id'] as int) + cast(g2.repo['id'] as int) > 80000000; + """ + order_qt_query3_4_before "${query3_4}" + // condition in join other conjuects is not supported now, suppport later +// async_mv_rewrite_success(db, mv3_4, query3_4, "mv3_4") + order_qt_query3_4_after "${query3_4}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_4""" + + + def mv3_6 = """ + SELECT + g1.id, + g2.type, + g1.actor, + g2.payload, + g1.actor['id'], + g1.payload['issue'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259289; + """ + def query3_6 = """ + SELECT /*+SET_VAR(batch_size=4064,broker_load_batch_size=16352,disable_streaming_preaggregations=false,enable_distinct_streaming_aggregation=true,parallel_fragment_exec_instance_num=3,parallel_pipeline_task_num=0,profile_level=1,enable_pipeline_engine=true,enable_parallel_scan=true,parallel_scan_max_scanners_count=32,parallel_scan_min_rows_per_scanner=64,enable_fold_constant_by_be=true,enable_rewrite_element_at_to_slot=true,runtime_filter_type=1,enable_parallel_result_sink=false,enable_nereids_planner=true,rewrite_or_to_in_predicate_threshold=100000,enable_function_pushdown=false,enable_common_expr_pushdown=false,enable_local_exchange=true,partitioned_hash_join_rows_threshold=8,partitioned_hash_agg_rows_threshold=8,partition_pruning_expand_threshold=10,enable_share_hash_table_for_broadcast_join=true,enable_two_phase_read_opt=true,enable_common_expr_pushdown_for_inverted_index=false,enable_delete_sub_predicate_v2=false,min_revocable_mem=33554432,fetch_remote_schema_timeout_seconds=120,max_fetch_remote_schema_tablet_count=512,enable_join_spill=false,enable_sort_spill=false,enable_agg_spill=false,enable_force_spill=false,data_queue_max_blocks=1,spill_streaming_agg_mem_limit=268435456,external_agg_partition_bits=5) */ + g1.id, + g2.type, + floor(cast(g1.actor['id'] as int) + 100.5), + g1.actor['display_login'], + g2.payload['issue']['href'] + FROM github_events1 g1 + left join github_events2 g2 on g1.id = g2.id + where g2.actor['id'] > 34259300; + """ + order_qt_query3_6_before "${query3_6}" + // should success, should enable in future + async_mv_rewrite_fail(db, mv3_6, query3_6, "mv3_6") + order_qt_query3_6_after "${query3_6}" + sql """ DROP MATERIALIZED VIEW IF EXISTS mv3_6""" }