You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by gu...@apache.org on 2013/10/24 04:45:07 UTC
svn commit: r1535269 - in
/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer:
AbstractSMBJoinProc.java MapJoinProcessor.java
correlation/CorrelationOptimizer.java physical/CommonJoinTaskDispatcher.java
Author: gunther
Date: Thu Oct 24 02:45:07 2013
New Revision: 1535269
URL: http://svn.apache.org/r1535269
Log:
HIVE-5638: NPE in ConvertJoinMapJoin on Tez (Gunther Hagleitner)
Modified:
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java
Modified: hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
URL: http://svn.apache.org/viewvc/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java?rev=1535269&r1=1535268&r2=1535269&view=diff
==============================================================================
--- hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java (original)
+++ hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java Thu Oct 24 02:45:07 2013
@@ -473,7 +473,7 @@ abstract public class AbstractSMBJoinPro
JoinDesc joinDesc = joinOp.getConf();
JoinCondDesc[] joinCondns = joinDesc.getConds();
Set<Integer> joinCandidates = MapJoinProcessor.getBigTableCandidates(joinCondns);
- if (joinCandidates == null) {
+ if (joinCandidates.isEmpty()) {
// This is a full outer join. This can never be a map-join
// of any type. So return false.
return false;
@@ -527,7 +527,7 @@ abstract public class AbstractSMBJoinPro
SortBucketJoinProcCtx joinContext,
ParseContext parseContext) throws SemanticException {
MapJoinOperator mapJoinOp = MapJoinProcessor.convertMapJoin(
- parseContext.getConf(),
+ parseContext.getConf(),
parseContext.getOpParseCtx(),
joinOp,
pGraphContext.getJoinContext().get(joinOp),
Modified: hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java
URL: http://svn.apache.org/viewvc/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java?rev=1535269&r1=1535268&r2=1535269&view=diff
==============================================================================
--- hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java (original)
+++ hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java Thu Oct 24 02:45:07 2013
@@ -237,7 +237,7 @@ public class MapJoinProcessor implements
* @return the alias to the big table
* @throws SemanticException
*/
- public static String genMapJoinOpAndLocalWork(HiveConf conf, MapredWork newWork,
+ public static String genMapJoinOpAndLocalWork(HiveConf conf, MapredWork newWork,
JoinOperator op, int mapJoinPos)
throws SemanticException {
LinkedHashMap<Operator<? extends OperatorDesc>, OpParseContext> opParseCtxMap =
@@ -663,7 +663,7 @@ public class MapJoinProcessor implements
* If see a right outer join, set lastSeenRightOuterJoin to true, clear the
* bigTableCandidates, and add right side to the bigTableCandidates, it means
* the right side of a right outer join always win. If see a full outer join,
- * return null immediately (no one can be the big table, can not do a
+ * return empty set immediately (no one can be the big table, can not do a
* mapjoin).
*
*
@@ -689,7 +689,8 @@ public class MapJoinProcessor implements
// changed in future, these 2 are not missing.
seenOuterJoin = true;
lastSeenRightOuterJoin = false;
- return null;
+ // empty set - cannot convert
+ return new HashSet<Integer>();
} else if (joinType == JoinDesc.LEFT_OUTER_JOIN
|| joinType == JoinDesc.LEFT_SEMI_JOIN) {
seenOuterJoin = true;
Modified: hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
URL: http://svn.apache.org/viewvc/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java?rev=1535269&r1=1535268&r2=1535269&view=diff
==============================================================================
--- hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java (original)
+++ hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java Thu Oct 24 02:45:07 2013
@@ -168,7 +168,7 @@ public class CorrelationOptimizer implem
int numAliases = order.length;
Set<Integer> bigTableCandidates =
MapJoinProcessor.getBigTableCandidates(joinDesc.getConds());
- if (bigTableCandidates == null) {
+ if (bigTableCandidates.isEmpty()) {
continue;
}
Modified: hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java
URL: http://svn.apache.org/viewvc/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java?rev=1535269&r1=1535268&r2=1535269&view=diff
==============================================================================
--- hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java (original)
+++ hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java Thu Oct 24 02:45:07 2013
@@ -420,7 +420,7 @@ public class CommonJoinTaskDispatcher ex
.getConds());
// no table could be the big table; there is no need to convert
- if (bigTableCandidates == null) {
+ if (bigTableCandidates.isEmpty()) {
return null;
}