From 81e0a348a749b37f46098badca1eddbc9528cb8d Mon Sep 17 00:00:00 2001 From: Mingyu Chen Date: Tue, 14 Jun 2022 15:34:16 +0800 Subject: [PATCH] [fix] fix bug that show proc "/cluster_balance/history_tablets" return malformat error (#10073) --- .../proc/TabletSchedulerDetailProcDir.java | 11 ++-- .../apache/doris/planner/HashJoinNode.java | 22 +++---- .../apache/doris/planner/OlapScanNode.java | 58 ++++++------------- .../apache/doris/planner/PlanFragment.java | 5 +- .../doris/planner/ColocatePlanTest.java | 2 +- .../doris/planner/DistributedPlannerTest.java | 8 +-- .../planner/MaterializedViewFunctionTest.java | 18 +++--- .../apache/doris/planner/QueryPlanTest.java | 30 +++++----- .../doris/planner/ResourceTagQueryTest.java | 6 +- .../doris/planner/TableFunctionPlanTest.java | 2 +- .../org/apache/doris/policy/PolicyTest.java | 20 ++----- .../data/performance/redundant_conjuncts.out | 28 +++------ .../rollup/test_materialized_view.groovy | 2 +- .../suites/rollup/test_rollup_agg.groovy | 2 +- 14 files changed, 85 insertions(+), 129 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/TabletSchedulerDetailProcDir.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/TabletSchedulerDetailProcDir.java index 6777c3ede9..40695c8b62 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/proc/TabletSchedulerDetailProcDir.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/TabletSchedulerDetailProcDir.java @@ -34,12 +34,11 @@ import java.util.List; * show proc "/tablet_scheduler/history_tablets"; */ public class TabletSchedulerDetailProcDir implements ProcDirInterface { - public static final ImmutableList TITLE_NAMES = new ImmutableList.Builder() - .add("TabletId").add("Type").add("Medium").add("Status").add("State").add("OrigPrio").add("DynmPrio") - .add("SrcBe").add("SrcPath").add("DestBe").add("DestPath").add("Timeout") - .add("Create").add("LstSched").add("LstVisit").add("Finished").add("Rate").add("FailedSched") - .add("FailedRunning").add("LstAdjPrio").add("VisibleVer").add("VisibleVerHash") - .add("CmtVer").add("CmtVerHash").add("ErrMsg") + public static final ImmutableList TITLE_NAMES = new ImmutableList.Builder().add("TabletId") + .add("Type").add("Medium").add("Status").add("State").add("OrigPrio").add("DynmPrio").add("SrcBe") + .add("SrcPath").add("DestBe").add("DestPath").add("Timeout").add("Create").add("LstSched").add("LstVisit") + .add("Finished").add("Rate").add("FailedSched").add("FailedRunning").add("LstAdjPrio").add("VisibleVer") + .add("CmtVer").add("ErrMsg") .build(); private String type; diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java index f474e9efd6..706a127c0a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java @@ -693,23 +693,26 @@ public class HashJoinNode extends PlanNode { @Override public String getNodeExplainString(String detailPrefix, TExplainLevel detailLevel) { - String distrModeStr = - (distrMode != DistributionMode.NONE) ? (" (" + distrMode.toString() + ")") : ""; - StringBuilder output = new StringBuilder() - .append(detailPrefix).append("join op: ").append(joinOp.toString()).append(distrModeStr).append("\n"); + String distrModeStr = ""; + if (isColocate) { + distrModeStr = "COLOCATE[" + colocateReason + "]"; + } else { + distrModeStr = distrMode.toString(); + } + StringBuilder output = + new StringBuilder().append(detailPrefix).append("join op: ").append(joinOp.toString()).append("(") + .append(distrModeStr).append(")").append("[").append(colocateReason).append("]\n"); if (detailLevel == TExplainLevel.BRIEF) { return output.toString(); } - output.append(detailPrefix).append("hash predicates:\n") - .append(detailPrefix).append("colocate: ").append(isColocate).append(isColocate ? "" : ", reason: " + colocateReason).append("\n"); - for (BinaryPredicate eqJoinPredicate : eqJoinConjuncts) { output.append(detailPrefix).append("equal join conjunct: ").append(eqJoinPredicate.toSql()).append("\n"); } if (!otherJoinConjuncts.isEmpty()) { - output.append(detailPrefix).append("other join predicates: ").append(getExplainString(otherJoinConjuncts)).append("\n"); + output.append(detailPrefix).append("other join predicates: ").append(getExplainString(otherJoinConjuncts)) + .append("\n"); } if (!conjuncts.isEmpty()) { output.append(detailPrefix).append("other predicates: ").append(getExplainString(conjuncts)).append("\n"); @@ -718,8 +721,7 @@ public class HashJoinNode extends PlanNode { output.append(detailPrefix).append("runtime filters: "); output.append(getRuntimeFilterExplainString(true)); } - output.append(detailPrefix).append(String.format( - "cardinality=%s", cardinality)).append("\n"); + output.append(detailPrefix).append(String.format("cardinality=%s", cardinality)).append("\n"); // todo unify in plan node if (outputSlotIds != null) { output.append(detailPrefix).append("output slot ids: "); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java index fff10e95ad..e2e6ec0d41 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java @@ -688,63 +688,43 @@ public class OlapScanNode extends ScanNode { public String getNodeExplainString(String prefix, TExplainLevel detailLevel) { StringBuilder output = new StringBuilder(); - output.append(prefix).append("TABLE: ").append(olapTable.getName()).append("\n"); - + String indexName = olapTable.getIndexNameById(selectedIndexId); + output.append(prefix).append("TABLE: ").append(olapTable.getName()).append("(").append(indexName).append(")"); if (detailLevel == TExplainLevel.BRIEF) { return output.toString(); } + if (isPreAggregation) { + output.append(", PREAGGREGATION: ON"); + } else { + output.append(", PREAGGREGATION: OFF. Reason: ").append(reasonOfPreAggregation); + } + output.append("\n"); if (null != sortColumn) { output.append(prefix).append("SORT COLUMN: ").append(sortColumn).append("\n"); } - if (isPreAggregation) { - output.append(prefix).append("PREAGGREGATION: ON").append("\n"); - } else { - output.append(prefix).append("PREAGGREGATION: OFF. Reason: ").append(reasonOfPreAggregation).append("\n"); - } + if (!conjuncts.isEmpty()) { - output.append(prefix).append("PREDICATES: ").append( - getExplainString(conjuncts)).append("\n"); + output.append(prefix).append("PREDICATES: ").append(getExplainString(conjuncts)).append("\n"); } if (!runtimeFilters.isEmpty()) { output.append(prefix).append("runtime filters: "); output.append(getRuntimeFilterExplainString(false)); } - output.append(prefix).append(String.format( - "partitions=%s/%s", - selectedPartitionNum, - olapTable.getPartitions().size())); - - String indexName = olapTable.getIndexNameById(selectedIndexId); - output.append("\n").append(prefix).append(String.format("rollup: %s", indexName)); - - output.append("\n"); - - output.append(prefix).append(String.format( - "tabletRatio=%s/%s", selectedTabletsNum, totalTabletsNum)); - output.append("\n"); - - // We print up to 10 tablet, and we print "..." if the number is more than 10 - if (scanTabletIds.size() > 10) { - List firstTenTabletIds = scanTabletIds.subList(0, 10); - output.append(prefix).append(String.format("tabletList=%s ...", Joiner.on(",").join(firstTenTabletIds))); + output.append(prefix).append(String.format("partitions=%s/%s, tablets=%s/%s", selectedPartitionNum, + olapTable.getPartitions().size(), selectedTabletsNum, totalTabletsNum)); + // We print up to 3 tablet, and we print "..." if the number is more than 3 + if (scanTabletIds.size() > 3) { + List firstTenTabletIds = scanTabletIds.subList(0, 3); + output.append(String.format(", tabletList=%s ...", Joiner.on(",").join(firstTenTabletIds))); } else { - output.append(prefix).append(String.format("tabletList=%s", Joiner.on(",").join(scanTabletIds))); + output.append(String.format(", tabletList=%s", Joiner.on(",").join(scanTabletIds))); } - output.append("\n"); - output.append(prefix).append(String.format( - "cardinality=%s", cardinality)); - output.append("\n"); - - output.append(prefix).append(String.format( - "avgRowSize=%s", avgRowSize)); - output.append("\n"); - - output.append(prefix).append(String.format( - "numNodes=%s", numNodes)); + output.append(prefix).append(String.format("cardinality=%s", cardinality)) + .append(String.format(", avgRowSize=%s", avgRowSize)).append(String.format(", numNodes=%s", numNodes)); output.append("\n"); return output.toString(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java index eea0afde9d..1ecc3342f3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java @@ -293,10 +293,9 @@ public class PlanFragment extends TreeNode { public String getExplainString(TExplainLevel explainLevel) { StringBuilder str = new StringBuilder(); Preconditions.checkState(dataPartition != null); - str.append(" OUTPUT EXPRS:"); if (CollectionUtils.isNotEmpty(outputExprs)) { - str.append(outputExprs.stream().map(Expr::toSql) - .collect(Collectors.joining(" | "))); + str.append(" OUTPUT EXPRS:"); + str.append(outputExprs.stream().map(Expr::toSql).collect(Collectors.joining(" | "))); } str.append("\n"); str.append(" PARTITION: " + dataPartition.getExplainString(explainLevel) + "\n"); diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/ColocatePlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/ColocatePlanTest.java index a27387f478..234a650ced 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/ColocatePlanTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/ColocatePlanTest.java @@ -39,7 +39,7 @@ import java.util.List; import java.util.UUID; public class ColocatePlanTest { - private static final String COLOCATE_ENABLE = "colocate: true"; + public static final String COLOCATE_ENABLE = "COLOCATE"; private static String runningDir = "fe/mocked/DemoTest/" + UUID.randomUUID().toString() + "/"; private static ConnectContext ctx; diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/DistributedPlannerTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/DistributedPlannerTest.java index 56bc5ad554..c8331573e5 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/DistributedPlannerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/DistributedPlannerTest.java @@ -135,7 +135,7 @@ public class DistributedPlannerTest { Planner planner = stmtExecutor.planner(); List fragments = planner.getFragments(); String plan = planner.getExplainString(fragments, new ExplainOptions(false, false)); - Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN (BROADCAST)")); + Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN(BROADCAST)")); sql = "explain select * from db1.tbl1 join [SHUFFLE] db1.tbl2 on tbl1.k1 = tbl2.k3"; stmtExecutor = new StmtExecutor(ctx, sql); @@ -143,7 +143,7 @@ public class DistributedPlannerTest { planner = stmtExecutor.planner(); fragments = planner.getFragments(); plan = planner.getExplainString(fragments, new ExplainOptions(false, false)); - Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN (PARTITIONED)")); + Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN(PARTITIONED)")); } @Test @@ -154,7 +154,7 @@ public class DistributedPlannerTest { Planner planner = stmtExecutor.planner(); List fragments = planner.getFragments(); String plan = planner.getExplainString(fragments, new ExplainOptions(false, false)); - Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN (BROADCAST)")); + Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN(BROADCAST)")); double originThreshold = ctx.getSessionVariable().autoBroadcastJoinThreshold; try { @@ -164,7 +164,7 @@ public class DistributedPlannerTest { planner = stmtExecutor.planner(); fragments = planner.getFragments(); plan = planner.getExplainString(fragments, new ExplainOptions(false, false)); - Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN (PARTITIONED)")); + Assert.assertEquals(1, StringUtils.countMatches(plan, "INNER JOIN(PARTITIONED)")); } finally { ctx.getSessionVariable().autoBroadcastJoinThreshold = originThreshold; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/MaterializedViewFunctionTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/MaterializedViewFunctionTest.java index 7f920023bd..49f64d6e02 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/MaterializedViewFunctionTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/MaterializedViewFunctionTest.java @@ -34,21 +34,21 @@ import java.util.UUID; public class MaterializedViewFunctionTest { private static String baseDir = "fe"; - private static String runningDir = baseDir + "/mocked/MaterializedViewFunctionTest/" - + UUID.randomUUID().toString() + "/"; + private static String runningDir = + baseDir + "/mocked/MaterializedViewFunctionTest/" + UUID.randomUUID().toString() + "/"; private static final String EMPS_TABLE_NAME = "emps"; private static final String EMPS_MV_NAME = "emps_mv"; private static final String HR_DB_NAME = "db1"; - private static final String QUERY_USE_EMPS_MV = "rollup: " + EMPS_MV_NAME; - private static final String QUERY_USE_EMPS = "rollup: " + EMPS_TABLE_NAME; + private static final String QUERY_USE_EMPS_MV = "(" + EMPS_MV_NAME + ")"; + private static final String QUERY_USE_EMPS = "(" + EMPS_TABLE_NAME + ")"; private static final String DEPTS_TABLE_NAME = "depts"; private static final String DEPTS_MV_NAME = "depts_mv"; - private static final String QUERY_USE_DEPTS_MV = "rollup: " + DEPTS_MV_NAME; - private static final String QUERY_USE_DEPTS = "rollup: " + DEPTS_TABLE_NAME; + private static final String QUERY_USE_DEPTS_MV = "(" + DEPTS_MV_NAME + ")"; + private static final String QUERY_USE_DEPTS = "(" + DEPTS_TABLE_NAME + ")"; private static final String USER_TAG_TABLE_NAME = "user_tags"; private static final String USER_TAG_MV_NAME = "user_tags_mv"; - private static final String QUERY_USE_USER_TAG_MV = "rollup: " + USER_TAG_MV_NAME; - private static final String QUERY_USE_USER_TAG = "rollup: " + USER_TAG_TABLE_NAME; + private static final String QUERY_USE_USER_TAG_MV = "(" + USER_TAG_MV_NAME + ")"; + private static final String QUERY_USE_USER_TAG = "(" + USER_TAG_TABLE_NAME + ")"; private static final String TEST_TABLE_NAME = "test_tb"; private static DorisAssert dorisAssert; @@ -556,7 +556,7 @@ public class MaterializedViewFunctionTest { + "(select deptno, sum(salary) from " + EMPS_TABLE_NAME + " where deptno >200 group by deptno) B " + "using (deptno);"; dorisAssert.withMaterializedView(createEmpsMVSql01).withMaterializedView(createEmpsMVSql02).query(query) - .explainContains("rollup: emp_mv_01", "rollup: emp_mv_02"); + .explainContains("(emp_mv_01)", "(emp_mv_02)"); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java index ffbac35ec5..f580cb654a 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java @@ -1039,20 +1039,20 @@ public class QueryPlanTest extends TestWithFeService { String queryStr = "explain select * from test.colocate1 t1, test.colocate2 t2 where t1.k1 = t2.k1 and t1.k2 = t2.k2 and t1.k3 = t2.k3"; String explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: true")); + Assert.assertTrue(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); queryStr = "explain select * from test.colocate1 t1 join [shuffle] test.colocate2 t2 on t1.k1 = t2.k1 and t1.k2 = t2.k2"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: false")); + Assert.assertFalse(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); // t1.k1 = t2.k2 not same order with distribute column queryStr = "explain select * from test.colocate1 t1, test.colocate2 t2 where t1.k1 = t2.k2 and t1.k2 = t2.k1 and t1.k3 = t2.k3"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: false")); + Assert.assertFalse(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); queryStr = "explain select * from test.colocate1 t1, test.colocate2 t2 where t1.k2 = t2.k2"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: false")); + Assert.assertFalse(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); } @Test @@ -1062,12 +1062,12 @@ public class QueryPlanTest extends TestWithFeService { // single partition String queryStr = "explain select * from test.jointest t1, test.jointest t2 where t1.k1 = t2.k1"; String explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: true")); + Assert.assertTrue(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); // multi partition, should not be colocate queryStr = "explain select * from test.dynamic_partition t1, test.dynamic_partition t2 where t1.k1 = t2.k1"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("colocate: false")); + Assert.assertFalse(explainString.contains(ColocatePlanTest.COLOCATE_ENABLE)); } @Test @@ -1184,17 +1184,17 @@ public class QueryPlanTest extends TestWithFeService { String queryStr = "explain select * from mysql_table t2, jointest t1 where t1.k1 = t2.k1"; String explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 1, "SCAN MYSQL")); queryStr = "explain select * from jointest t1, mysql_table t2 where t1.k1 = t2.k1"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 1, "SCAN MYSQL")); queryStr = "explain select * from jointest t1, mysql_table t2, mysql_table t3 where t1.k1 = t3.k1"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertFalse(explainString.contains("INNER JOIN (PARTITIONED)")); + Assert.assertFalse(explainString.contains("INNER JOIN(PARTITIONED)")); // should clear the jointest table to make sure do not affect other test for (Partition partition : tbl.getPartitions()) { @@ -1231,17 +1231,17 @@ public class QueryPlanTest extends TestWithFeService { String queryStr = "explain select * from odbc_mysql t2, jointest t1 where t1.k1 = t2.k1"; String explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 1, "SCAN ODBC")); queryStr = "explain select * from jointest t1, odbc_mysql t2 where t1.k1 = t2.k1"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 1, "SCAN ODBC")); queryStr = "explain select * from jointest t1, odbc_mysql t2, odbc_mysql t3 where t1.k1 = t3.k1"; explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertFalse(explainString.contains("INNER JOIN (PARTITIONED)")); + Assert.assertFalse(explainString.contains("INNER JOIN(PARTITIONED)")); // should clear the jointest table to make sure do not affect other test for (Partition partition : tbl.getPartitions()) { @@ -1327,15 +1327,15 @@ public class QueryPlanTest extends TestWithFeService { // default set PreferBroadcastJoin true String explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); connectContext.getSessionVariable().setPreferJoinMethod("shuffle"); explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (PARTITIONED)")); + Assert.assertTrue(explainString.contains("INNER JOIN(PARTITIONED)")); connectContext.getSessionVariable().setPreferJoinMethod("broadcast"); explainString = getSQLPlanOrErrorMsg(queryStr); - Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("INNER JOIN(BROADCAST)")); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/ResourceTagQueryTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/ResourceTagQueryTest.java index 0a87605347..d202919e5b 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/ResourceTagQueryTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/ResourceTagQueryTest.java @@ -208,7 +208,7 @@ public class ResourceTagQueryTest { String queryStr = "explain select * from test.tbl1"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr); System.out.println(explainString); - Assert.assertTrue(explainString.contains("tabletRatio=30/30")); + Assert.assertTrue(explainString.contains("tablets=30/30")); // set zone1 tag for root String setPropStr2 = "set property for 'root' 'resource_tags.location' = 'zone1';"; @@ -246,7 +246,7 @@ public class ResourceTagQueryTest { queryStr = "explain select * from test.tbl1"; explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr); System.out.println(explainString); - Assert.assertTrue(explainString.contains("tabletRatio=30/30")); + Assert.assertTrue(explainString.contains("tablets=30/30")); // for now, 3 backends with tag zone1, 2 with tag default, so table is not stable. ExceptionChecker.expectThrows(UserException.class, () -> tbl.checkReplicaAllocation()); @@ -269,7 +269,7 @@ public class ResourceTagQueryTest { queryStr = "explain select * from test.tbl1"; explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr); System.out.println(explainString); - Assert.assertTrue(explainString.contains("tabletRatio=30/30")); + Assert.assertTrue(explainString.contains("tablets=30/30")); // set user exec mem limit String setExecMemLimitStr = "set property for 'root' 'exec_mem_limit' = '1000000';"; diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java index 82736b912e..ce14f2b2ac 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java @@ -508,7 +508,7 @@ public class TableFunctionPlanTest { public void testLateralViewWithWhere() throws Exception { String sql = "select k1,e1 from db1.table_for_view lateral view explode_split(k3,',') tmp as e1 where k1 in (select k2 from db1.table_for_view);"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql, true); - Assert.assertTrue(explainString.contains("join op: LEFT SEMI JOIN (BROADCAST)")); + Assert.assertTrue(explainString.contains("join op: LEFT SEMI JOIN(BROADCAST)")); Assert.assertTrue(explainString.contains("equal join conjunct: `k1` = `k2`")); Assert.assertTrue(!explainString.contains("equal join conjunct: `k2` = `k2`")); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java index 5a9c0b905e..3b162804df 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java @@ -183,25 +183,13 @@ public class PolicyTest extends TestWithFeService { createPolicy("CREATE ROW POLICY test_row_policy2 ON test.table1 AS RESTRICTIVE TO test_policy USING (k2 = 1)"); String joinSql = "select * from table1 join table2 on table1.k1=table2.k1"; System.out.println(getSQLPlanOrErrorMsg(joinSql)); - Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains( - " TABLE: table1\n" - + " PREAGGREGATION: ON\n" - + " PREDICATES: `k1` = 1, `k2` = 1")); + Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains("PREDICATES: `k1` = 1, `k2` = 1")); String unionSql = "select * from table1 union select * from table2"; - Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains( - " TABLE: table1\n" - + " PREAGGREGATION: ON\n" - + " PREDICATES: `k1` = 1, `k2` = 1")); + Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains("PREDICATES: `k1` = 1, `k2` = 1")); String subQuerySql = "select * from table2 where k1 in (select k1 from table1)"; - Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains( - " TABLE: table1\n" - + " PREAGGREGATION: ON\n" - + " PREDICATES: `k1` = 1, `k2` = 1")); + Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains("PREDICATES: `k1` = 1, `k2` = 1")); String aliasSql = "select * from table1 t1 join table2 t2 on t1.k1=t2.k1"; - Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains( - " TABLE: table1\n" - + " PREAGGREGATION: ON\n" - + " PREDICATES: `k1` = 1, `k2` = 1")); + Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains("PREDICATES: `k1` = 1, `k2` = 1")); dropPolicy("DROP ROW POLICY test_row_policy1 ON test.table1"); dropPolicy("DROP ROW POLICY test_row_policy2 ON test.table1"); } diff --git a/regression-test/data/performance/redundant_conjuncts.out b/regression-test/data/performance/redundant_conjuncts.out index ab2eadd2ea..af59089638 100644 --- a/regression-test/data/performance/redundant_conjuncts.out +++ b/regression-test/data/performance/redundant_conjuncts.out @@ -1,39 +1,27 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !redundant_conjuncts -- PLAN FRAGMENT 0 - OUTPUT EXPRS:`v1` + OUTPUT EXPRS:`v1` PARTITION: HASH_PARTITIONED: `default_cluster:regression_test`.`redundant_conjuncts`.`k1` VRESULT SINK 0:VOlapScanNode - TABLE: redundant_conjuncts - PREAGGREGATION: OFF. Reason: No AggregateInfo + TABLE: redundant_conjuncts(null), PREAGGREGATION: OFF. Reason: No AggregateInfo PREDICATES: `k1` = 1 - partitions=0/1 - rollup: null - tabletRatio=0/0 - tabletList= - cardinality=0 - avgRowSize=8.0 - numNodes=1 + partitions=0/1, tablets=0/0, tabletList= + cardinality=0, avgRowSize=8.0, numNodes=1 -- !redundant_conjuncts_gnerated_by_extract_common_filter -- PLAN FRAGMENT 0 - OUTPUT EXPRS:`v1` + OUTPUT EXPRS:`v1` PARTITION: HASH_PARTITIONED: `default_cluster:regression_test`.`redundant_conjuncts`.`k1` VRESULT SINK 0:VOlapScanNode - TABLE: redundant_conjuncts - PREAGGREGATION: OFF. Reason: No AggregateInfo + TABLE: redundant_conjuncts(null), PREAGGREGATION: OFF. Reason: No AggregateInfo PREDICATES: (`k1` = 1 OR `k1` = 2) - partitions=0/1 - rollup: null - tabletRatio=0/0 - tabletList= - cardinality=0 - avgRowSize=8.0 - numNodes=1 + partitions=0/1, tablets=0/0, tabletList= + cardinality=0, avgRowSize=8.0, numNodes=1 diff --git a/regression-test/suites/rollup/test_materialized_view.groovy b/regression-test/suites/rollup/test_materialized_view.groovy index ea42f0e7fa..07e040bae3 100644 --- a/regression-test/suites/rollup/test_materialized_view.groovy +++ b/regression-test/suites/rollup/test_materialized_view.groovy @@ -83,7 +83,7 @@ suite("test_materialized_view", "rollup") { Thread.sleep(1000) explain{ sql("SELECT store_id, sum(sale_amt) FROM ${tbName1} GROUP BY store_id") - contains("rollup: amt_sum") + contains("(amt_sum)") } qt_sql "SELECT * FROM ${tbName1} order by record_id;" qt_sql "SELECT store_id, sum(sale_amt) FROM ${tbName1} GROUP BY store_id order by store_id;" diff --git a/regression-test/suites/rollup/test_rollup_agg.groovy b/regression-test/suites/rollup/test_rollup_agg.groovy index 1292d15411..93d29a76a7 100644 --- a/regression-test/suites/rollup/test_rollup_agg.groovy +++ b/regression-test/suites/rollup/test_rollup_agg.groovy @@ -72,7 +72,7 @@ suite("test_rollup_agg", "rollup") { sql "insert into ${tbName} values(2, 1, 'test2', 100,100,100);" explain { sql("SELECT citycode,SUM(pv) FROM ${tbName} GROUP BY citycode") - contains("rollup: rollup_city") + contains("(rollup_city)") } qt_sql "SELECT citycode,SUM(pv) FROM ${tbName} GROUP BY citycode" sql "ALTER TABLE ${tbName} DROP ROLLUP rollup_city;"