[ 
https://issues.apache.org/jira/browse/HIVE-24041?focusedWorklogId=474150&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-474150
 ]

ASF GitHub Bot logged work on HIVE-24041:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 25/Aug/20 06:02
            Start Date: 25/Aug/20 06:02
    Worklog Time Spent: 10m 
      Work Description: kasakrisz commented on a change in pull request #1405:
URL: https://github.com/apache/hive/pull/1405#discussion_r476169201



##########
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:
       nit.: Is the parameter value always `HiveRelFactories.HIVE_BUILDER` ? It 
can be moved to the base class as a constant.

##########
File path: ql/src/test/queries/clientpositive/auto_sortmerge_join_10.q
##########
@@ -48,6 +48,8 @@ select count(*) from
   (select a.key as key, a.value as value from tbl2_n4 a where key < 6) subq2
   on subq1.key = subq2.key;
 
+set hive.auto.convert.sortmerge.join=false;

Review comment:
       Based on the test filename this test intend to test automatic conversion 
to a sort-merge join but it is not tested anymore if the feature is turned off.




----------------------------------------------------------------
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: 474150)
    Time Spent: 20m  (was: 10m)

> 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: 20m
>  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)

Reply via email to