Skip to content

Commit

Permalink
fixut
Browse files Browse the repository at this point in the history
  • Loading branch information
EmmyMiao87 committed Jun 23, 2022
1 parent acd2768 commit cf8fb62
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,12 @@ public Set<SlotId> computeInputSlotIds(Analyzer analyzer) throws NotImplementedE
// Actually need to take a column as the input column of the agg operator
if (result.isEmpty()) {
TupleDescriptor tupleDesc = analyzer.getTupleDesc(getChild(0).getOutputTupleIds().get(0));
result.add(tupleDesc.getMaterializedSlots().get(0).getId());
// If the query result is empty set such as: select count(*) from table where 1=2
// then the materialized slot will be empty
// So the result should be empty also.
if (!tupleDesc.getMaterializedSlots().isEmpty()) {
result.add(tupleDesc.getMaterializedSlots().get(0).getId());
}
}
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ public void projectByJoin() throws Exception {
String queryStr = "desc verbose select a.k2 from test.t1 a inner join test.t1 b on a.k1=b.k1 "
+ "inner join test.t1 c on a.k1=c.k1;";
String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr);
Assert.assertTrue(explainString.contains("output slot ids: 3"));
Assert.assertTrue(explainString.contains("output slot ids: 0 3"));
Assert.assertTrue(explainString.contains("output slot ids: 8"));
Assert.assertTrue(explainString.contains("output slot ids: 4 5"));
}

// keep a.k2 after a join b
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,7 @@ public void testBucketShuffleJoin() throws Exception {
+ " on t2.k1 = t3.k1 and t2.k2 = t3.k2";
explainString = getSQLPlanOrErrorMsg(queryStr);
Assert.assertTrue(explainString.contains("BUCKET_SHFFULE_HASH_PARTITIONED: `t1`.`k1`, `t1`.`k1`"));
System.out.println("SQL explain : " + explainString);
Assert.assertTrue(explainString.contains("BUCKET_SHFFULE_HASH_PARTITIONED: `t3`.`k1`, `t3`.`k2`"));

// support recurse of bucket shuffle because t4 join t2 and join column name is same as t2 distribute column name
Expand Down Expand Up @@ -1589,32 +1590,31 @@ public void testOutJoinSmapReplace() throws Exception {
//valid date
String sql = "SELECT a.aid, b.bid FROM (SELECT 3 AS aid) a right outer JOIN (SELECT 4 AS bid) b ON (a.aid=b.bid)";
String explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:`a`.`aid` | 4"));
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:<slot 2> | <slot 3>"));

sql = "SELECT a.aid, b.bid FROM (SELECT 3 AS aid) a left outer JOIN (SELECT 4 AS bid) b ON (a.aid=b.bid)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:3 | `b`.`bid`"));
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:<slot 2> | <slot 3>"));

sql = "SELECT a.aid, b.bid FROM (SELECT 3 AS aid) a full outer JOIN (SELECT 4 AS bid) b ON (a.aid=b.bid)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:`a`.`aid` | `b`.`bid`"));
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:<slot 2> | <slot 3>"));

sql = "SELECT a.aid, b.bid FROM (SELECT 3 AS aid) a JOIN (SELECT 4 AS bid) b ON (a.aid=b.bid)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:3 | 4"));
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:<slot 2> | <slot 3>"));

sql = "SELECT a.k1, b.k2 FROM (SELECT k1 from baseall) a LEFT OUTER JOIN (select k1, 999 as k2 from baseall) b ON (a.k1=b.k1)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("if(TupleIsNull(2), NULL, 999)"));
Assert.assertTrue(explainString.contains("<slot 5> | <slot 7>"));

sql = "SELECT a.k1, b.k2 FROM (SELECT 1 as k1 from baseall) a RIGHT OUTER JOIN (select k1, 999 as k2 from baseall) b ON (a.k1=b.k1)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("if(TupleIsNull(0), NULL, 1)"));
Assert.assertTrue(explainString.contains("<slot 5> | <slot 7>"));

sql = "SELECT a.k1, b.k2 FROM (SELECT 1 as k1 from baseall) a FULL JOIN (select k1, 999 as k2 from baseall) b ON (a.k1=b.k1)";
explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
Assert.assertTrue(explainString.contains("if(TupleIsNull(0), NULL, 1)"));
Assert.assertTrue(explainString.contains("if(TupleIsNull(2), NULL, 999)"));
Assert.assertTrue(explainString.contains("<slot 5> | <slot 7>"));
}

@Test
Expand Down Expand Up @@ -2063,7 +2063,7 @@ public void testResultExprs() throws Exception {
String explainString = getSQLPlanOrErrorMsg(queryStr);
Assert.assertFalse(explainString.contains("OUTPUT EXPRS:3 | 4"));
System.out.println(explainString);
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:CAST(`a`.`aid` AS INT) | 4"));
Assert.assertTrue(explainString.contains("OUTPUT EXPRS:CAST(<slot 4> AS INT) | CAST(<slot 5> AS INT)"));
}

@Test
Expand Down

0 comments on commit cf8fb62

Please sign in to comment.