Skip to content

Commit

Permalink
fix test
Browse files Browse the repository at this point in the history
Signed-off-by: before-Sunrise <[email protected]>
  • Loading branch information
before-Sunrise committed Sep 3, 2024
1 parent 01875f0 commit 88fb31e
Showing 1 changed file with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@

import com.google.common.collect.Lists;
import com.starrocks.common.FeConstants;
import org.junit.Test;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

import java.util.List;
import java.util.stream.Stream;

public class OuterJoinReorderTest extends PlanTestBase {

Expand All @@ -30,8 +33,14 @@ public static void beforeClass() throws Exception {
FeConstants.runningUnitTest = true;
}

@Test
public void joinAssocRuleSqls() throws Exception {
@ParameterizedTest(name = "sql_{index}: {0}.")
@MethodSource("joinAssocRuleSqls")
void joinAssociativityRuleSql(String sql, String expectedPlan) throws Exception {
String plan = getFragmentPlan(sql);
assertContains(plan, expectedPlan);
}

public static Stream<Arguments> joinAssocRuleSqls() {
List<String> sqlList = Lists.newArrayList();
List<String> planList = Lists.newArrayList();
sqlList.add("select t1.* from t0 join t1 on v1 > v4 left join t2 on v1 < v7 ");
Expand All @@ -52,7 +61,7 @@ public void joinAssocRuleSqls() throws Exception {
sqlList.add("select * from t0 left join (select v4 from t1 union select v7 from t2) t1 on v2 > v4 " +
"left semi join t2 on v1 = v7");
planList.add("3:HASH JOIN\n" +
" | join op: LEFT SEMI JOIN (BROADCAST)\n" +
" | join op: LEFT SEMI JOIN (BUCKET_SHUFFLE)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 1: v1 = 11: v7");
sqlList.add("select subq_0.v1 as c0 from (select 88 as v1 from t0 as ref_0) as subq_0 inner join t1 as ref_1 " +
Expand Down Expand Up @@ -84,7 +93,7 @@ public void joinAssocRuleSqls() throws Exception {
sqlList.add("select tmp.a, t0.v3 from t0 left join (select * from tarray, unnest(v3) as unnest_tbl(a)) " +
"tmp on t0.v1 = tmp.a join t1 on t0.v2 = t1.v4");
planList.add("8:HASH JOIN\n" +
" | join op: LEFT OUTER JOIN (BROADCAST)\n" +
" | join op: LEFT OUTER JOIN (BUCKET_SHUFFLE)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 1: v1 = 7: a\n" +
" | \n" +
Expand All @@ -97,38 +106,38 @@ public void joinAssocRuleSqls() throws Exception {
" 3:HASH JOIN");
sqlList.add("select t0.* from t0 left join t1 on t0.v1 = t1.v4 join t2 on t0.v1 = t2.v7 " +
"where t0.v2 in (select max(v10) from t3) and t1.v5 is null;");
planList.add(" 12:HASH JOIN\n" +
planList.add(" 14:HASH JOIN\n" +
" | join op: LEFT SEMI JOIN (BROADCAST)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 2: v2 = 13: max\n" +
" | \n" +
" |----11:EXCHANGE\n" +
" |----13:EXCHANGE\n" +
" | \n" +
" 8:Project\n" +
" | <slot 1> : 1: v1\n" +
" | <slot 2> : 2: v2\n" +
" | <slot 3> : 3: v3\n" +
" | \n" +
" 7:HASH JOIN\n" +
" | join op: LEFT OUTER JOIN (BROADCAST)\n" +
" | join op: LEFT OUTER JOIN (BUCKET_SHUFFLE)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 1: v1 = 4: v4\n" +
" | other predicates: 5: v5 IS NULL");
sqlList.add("select t0.*, t1.v5 from t0 join t1 on t0.v1 = t1.v4 left join t2 on t1.v5 = t2.v7 " +
"where t2.v8 <=> t0.v2 and t0.v3 in (select max(v10) from t3) and t1.v5 is null");
planList.add("13:Project\n" +
planList.add("15:Project\n" +
" | <slot 1> : 1: v1\n" +
" | <slot 2> : 2: v2\n" +
" | <slot 3> : 3: v3\n" +
" | <slot 5> : 5: v5\n" +
" | \n" +
" 12:HASH JOIN\n" +
" 14:HASH JOIN\n" +
" | join op: LEFT OUTER JOIN (BROADCAST)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 5: v5 = 7: v7\n" +
" | other predicates: 8: v8 <=> 2: v2\n" +
" | \n" +
" |----11:EXCHANGE");
" |----13:EXCHANGE");
sqlList.add("select * from (select t0.*, concat(abs(abs(v7)), ifnull(v8, 1), null) from colocate_t0 t0 left join" +
" t2 on v2 = v7) t left join colocate_t1 on v1 = v4");
planList.add("4:Project\n" +
Expand All @@ -141,11 +150,7 @@ public void joinAssocRuleSqls() throws Exception {
" | join op: LEFT OUTER JOIN (BROADCAST)\n" +
" | colocate: false, reason: \n" +
" | equal join conjunct: 2: v2 = 4: v7");
for (int i = 0; i < sqlList.size(); i++) {
String sql = sqlList.get(i);
String expectedPlan = planList.get(i);
String plan = getFragmentPlan(sql);
assertContains(plan, expectedPlan);
}
List<Arguments> zips = zipSqlAndPlan(sqlList, planList);
return zips.stream();
}
}

0 comments on commit 88fb31e

Please sign in to comment.