[ https://issues.apache.org/jira/browse/HIVE-24041?focusedWorklogId=474347&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-474347 ]
ASF GitHub Bot logged work on HIVE-24041: ----------------------------------------- Author: ASF GitHub Bot Created on: 25/Aug/20 14:26 Start Date: 25/Aug/20 14:26 Worklog Time Spent: 10m Work Description: jcamachor commented on a change in pull request #1405: URL: https://github.com/apache/hive/pull/1405#discussion_r476491640 ########## File path: ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSemiJoinRule.java ########## @@ -33,194 +37,263 @@ import org.apache.calcite.rex.RexBuilder; import org.apache.calcite.rex.RexNode; import org.apache.calcite.tools.RelBuilder; +import org.apache.calcite.tools.RelBuilder.GroupKey; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableBitSet; +import org.apache.calcite.util.ImmutableIntList; +import org.apache.hadoop.hive.ql.optimizer.calcite.HiveCalciteUtil; import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; /** - * Planner rule that creates a {@code SemiJoinRule} from a - * {@link org.apache.calcite.rel.core.Join} on top of a - * {@link org.apache.calcite.rel.logical.LogicalAggregate}. - * - * TODO Remove this rule and use Calcite's SemiJoinRule. Not possible currently - * since Calcite doesnt use RelBuilder for this rule and we want to generate HiveSemiJoin rel here. + * Class that gathers SemiJoin conversion rules. */ -public abstract class HiveSemiJoinRule extends RelOptRule { +public class HiveSemiJoinRule { - protected static final Logger LOG = LoggerFactory.getLogger(HiveSemiJoinRule.class); + public static final HiveProjectJoinToSemiJoinRule INSTANCE_PROJECT = + new HiveProjectJoinToSemiJoinRule(HiveRelFactories.HIVE_BUILDER); - public static final HiveProjectToSemiJoinRule INSTANCE_PROJECT = - new HiveProjectToSemiJoinRule(HiveRelFactories.HIVE_BUILDER); + public static final HiveAggregateJoinToSemiJoinRule INSTANCE_AGGREGATE = + new HiveAggregateJoinToSemiJoinRule(HiveRelFactories.HIVE_BUILDER); - public static final HiveProjectToSemiJoinRuleSwapInputs INSTANCE_PROJECT_SWAPPED = - new HiveProjectToSemiJoinRuleSwapInputs(HiveRelFactories.HIVE_BUILDER); + public static final HiveProjectJoinToSemiJoinRuleSwapInputs INSTANCE_PROJECT_SWAPPED = + new HiveProjectJoinToSemiJoinRuleSwapInputs(HiveRelFactories.HIVE_BUILDER); - public static final HiveAggregateToSemiJoinRule INSTANCE_AGGREGATE = - new HiveAggregateToSemiJoinRule(HiveRelFactories.HIVE_BUILDER); + public static final HiveAggregateJoinToSemiJoinRuleSwapInputs INSTANCE_AGGREGATE_SWAPPED = + new HiveAggregateJoinToSemiJoinRuleSwapInputs(HiveRelFactories.HIVE_BUILDER); Review comment: done. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 474347) Time Spent: 40m (was: 0.5h) > Extend semijoin conversion rules > -------------------------------- > > Key: HIVE-24041 > URL: https://issues.apache.org/jira/browse/HIVE-24041 > Project: Hive > Issue Type: Improvement > Components: CBO > Reporter: Jesus Camacho Rodriguez > Assignee: Jesus Camacho Rodriguez > Priority: Major > Labels: pull-request-available > Time Spent: 40m > Remaining Estimate: 0h > > This patch fixes a couple of limitations that can be seen in > {{cbo_query95.q}}, in particular: > - It adds a rule to trigger semijoin conversion when the there is an > aggregate on top of the join that prunes all columns from left side, and the > aggregate operator is on the left input of the join. > - It extends existing semijoin conversion rules to prune the unused columns > from its left input, which leads to additional conversion opportunities. -- This message was sent by Atlassian Jira (v8.3.4#803005)