ramesh0201 commented on code in PR #5462: URL: https://github.com/apache/hive/pull/5462#discussion_r1801807862
########## ql/src/test/org/apache/hadoop/hive/ql/optimizer/TestSharedWorkOptimizer.java: ########## @@ -323,39 +314,72 @@ public void testMapJoinCacheReuse() { Operator<?> rsC2 = OperatorFactory.getAndMakeChild(getReduceSinkDesc(), smallTableC); // case 1. MapJoin1: (big, A, B), MapJoin2: (big, A, B) - List<Operator<?>> joinSource1 = Arrays.asList(ts1, rsA1, rsB1); - List<Operator<?>> joinSource2 = Arrays.asList(ts2, rsA2, rsB2); + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.INNER.ordinal(), JoinType.INNER.ordinal(), true); - MapJoinOperator mapJoin1 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(0), joinSource1); - MapJoinOperator mapJoin2 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(0), joinSource2); + // case 2. MapJoin1: (big, A, B), MapJoin2: (big, A, C) + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsC2, 0, 0, + JoinType.INNER.ordinal(), JoinType.INNER.ordinal(), false); - runMapJoinCacheReuseOptimization(mapJoin1, mapJoin2); - assertEquals(mapJoin1.getConf().getCacheKey(), mapJoin2.getConf().getCacheKey()); + // case 3. MapJoin1: (big, A, B), MapJoin2: (A, big, B) + setupJoinOperatorsAndTest(ts1, rsA2, rsA1, ts2, rsB1, rsB2, 0, 1, + JoinType.INNER.ordinal(), JoinType.INNER.ordinal(), false); - // case 2. MapJoin3: (big, A, B), MapJoin4: (big, A, C) - List<Operator<?>> joinSource3 = Arrays.asList(ts1, rsA1, rsB1); - List<Operator<?>> joinSource4 = Arrays.asList(ts2, rsA2, rsC2); + // case 4. MapJoin1: (big, A, B), MapJoin2: (big, A, B) with inner join and left outer join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.INNER.ordinal(), JoinType.LEFTOUTER.ordinal(), false); - MapJoinOperator mapJoin3 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(0), joinSource3); - MapJoinOperator mapJoin4 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(0), joinSource4); + // case 5. same as case4 with inner join and right outer join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.INNER.ordinal(), JoinType.RIGHTOUTER.ordinal(), false); - runMapJoinCacheReuseOptimization(mapJoin3, mapJoin4); - assertNotEquals(mapJoin3.getConf().getCacheKey(), mapJoin4.getConf().getCacheKey()); + // case 6. same as case4 with inner join and left semi join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.INNER.ordinal(), JoinType.LEFTSEMI.ordinal(), false); - // case 3. MapJoin5: (big, A, B), MapJoin6: (A, big, B) - List<Operator<?>> joinSource5 = Arrays.asList(ts1, rsA1, rsB1); - List<Operator<?>> joinSource6 = Arrays.asList(rsA2, ts2, rsB2); + // case 7. same as case4 with inner join and anti join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.INNER.ordinal(), JoinType.ANTI.ordinal(), false); - MapJoinOperator mapJoin5 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(0), joinSource5); - MapJoinOperator mapJoin6 = (MapJoinOperator) OperatorFactory.getAndMakeChild( - cCtx, getMapJoinDesc(1), joinSource6); + // case 8. same as case4 with right outer join and left semi join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.RIGHTOUTER.ordinal(), JoinType.LEFTSEMI.ordinal(), false); + + // case 9. same as case4 with right outer join and left outer join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.RIGHTOUTER.ordinal(), JoinType.LEFTOUTER.ordinal(), true); + + // case 10. same as case4 with full outer join and inner join + setupJoinOperatorsAndTest(ts1, ts2, rsA1, rsA2, rsB1, rsB2, 0, 0, + JoinType.FULLOUTER.ordinal(), JoinType.INNER.ordinal(), false); + } - runMapJoinCacheReuseOptimization(mapJoin5, mapJoin6); - assertNotEquals(mapJoin5.getConf().getCacheKey(), mapJoin6.getConf().getCacheKey()); + private void setupJoinOperatorsAndTest(Operator<?> join1Op1, Operator<?> join2Op1, Operator<?> join1Op2, Review Comment: Addressed this -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org