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 --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org