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/01 07:27:39 UTC

svn commit: r1628601 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java

Author: hashutosh
Date: Wed Oct  1 05:27:38 2014
New Revision: 1628601

URL: http://svn.apache.org/r1628601
Log:
HIVE-8263 : CBO : TPC-DS Q64 is item is joined last with store_sales while it should be first as it is the most selective (Harish Butani via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java?rev=1628601&r1=1628600&r2=1628601&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java Wed Oct  1 05:27:38 2014
@@ -222,10 +222,8 @@ public class HiveRelMdRowCount extends R
       return null;
     }
 
-    double leftRowCount = RelMetadataQuery.getRowCount(left)
-        * RelMetadataQuery.getSelectivity(left, leftPred);
-    double rightRowCount = RelMetadataQuery.getRowCount(right)
-        * RelMetadataQuery.getSelectivity(right, rightPred);
+    double leftRowCount = RelMetadataQuery.getRowCount(left);
+    double rightRowCount = RelMetadataQuery.getRowCount(right);
 
     if (leftIsKey && rightIsKey) {
       if (rightRowCount < leftRowCount) {
@@ -275,7 +273,7 @@ public class HiveRelMdRowCount extends R
       PKSideInfo pkInfo = new PKSideInfo(leftRowCount,
           leftNDV,
           joinRel.getJoinType().generatesNullsOnRight() ? 1.0 :
-            RelMetadataQuery.getSelectivity(left, leftPred));
+            isPKSideSimpleTree ? RelMetadataQuery.getSelectivity(left, leftPred) : 1.0);
 
       return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree);
     }
@@ -286,7 +284,7 @@ public class HiveRelMdRowCount extends R
       PKSideInfo pkInfo = new PKSideInfo(rightRowCount,
           rightNDV,
           joinRel.getJoinType().generatesNullsOnLeft() ? 1.0 :
-            RelMetadataQuery.getSelectivity(right, rightPred));
+            isPKSideSimpleTree ?  RelMetadataQuery.getSelectivity(right, rightPred) : 1.0);
 
       return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree);
     }