You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/10/15 17:48:47 UTC
svn commit: r1632099 -
/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Author: hashutosh
Date: Wed Oct 15 15:48:47 2014
New Revision: 1632099
URL: http://svn.apache.org/r1632099
Log:
HIVE-7914 : Simplify join predicates for CBO to avoid cross products (John Pullokkaran via Ashutosh Chauhan)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1632099&r1=1632098&r2=1632099&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Wed Oct 15 15:48:47 2014
@@ -42,6 +42,7 @@ import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import com.google.common.annotations.VisibleForTesting;
+
import net.hydromatic.optiq.SchemaPlus;
import net.hydromatic.optiq.tools.Frameworks;
@@ -274,6 +275,7 @@ import org.eigenbase.reltype.RelDataType
import org.eigenbase.rex.RexBuilder;
import org.eigenbase.rex.RexInputRef;
import org.eigenbase.rex.RexNode;
+import org.eigenbase.rex.RexUtil;
import org.eigenbase.rex.RexWindowBound;
import org.eigenbase.rex.RexFieldCollation;
import org.eigenbase.sql.SqlAggFunction;
@@ -12821,8 +12823,9 @@ public class SemanticAnalyzer extends Ba
.get(srcRel);
RexNode convertedFilterExpr = new RexNodeConverter(cluster, srcRel.getRowType(),
hiveColNameOptiqPosMap, 0, true).convert(filterCondn);
+ RexNode factoredFilterExpr = RexUtil.pullFactors(cluster.getRexBuilder(), convertedFilterExpr);
RelNode filterRel = new HiveFilterRel(cluster, cluster.traitSetOf(HiveRel.CONVENTION),
- srcRel, convertedFilterExpr);
+ srcRel, factoredFilterExpr);
this.relToHiveColNameOptiqPosMap.put(filterRel, hiveColNameOptiqPosMap);
relToHiveRR.put(filterRel, relToHiveRR.get(srcRel));
relToHiveColNameOptiqPosMap.put(filterRel, hiveColNameOptiqPosMap);