You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by yh...@apache.org on 2014/01/16 18:45:45 UTC
svn commit: r1558866 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/exec/
java/org/apache/hadoop/hive/ql/optimizer/physical/
java/org/apache/hadoop/hive/ql/plan/ test/org/apache/hadoop/hive/ql/plan/
test/results/clientpositive/
Author: yhuai
Date: Thu Jan 16 17:45:45 2014
New Revision: 1558866
URL: http://svn.apache.org/r1558866
Log:
HIVE-5945: ql.plan.ConditionalResolverCommonJoin.resolveMapJoinTask also sums those tables which are not used in the child of this conditional task. (Navis via Yin Huai)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverCommonJoin.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/plan/TestConditionalResolverCommonJoin.java
hive/trunk/ql/src/test/results/clientpositive/auto_join25.q.out
hive/trunk/ql/src/test/results/clientpositive/infer_bucket_sort_convert_join.q.out
hive/trunk/ql/src/test/results/clientpositive/mapjoin_hook.q.out
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java Thu Jan 16 17:45:45 2014
@@ -95,7 +95,6 @@ import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.hive.common.HiveInterruptCallback;
import org.apache.hadoop.hive.common.HiveInterruptUtils;
import org.apache.hadoop.hive.common.HiveStatsUtils;
-import org.apache.hadoop.hive.common.ObjectPair;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
import org.apache.hadoop.hive.metastore.Warehouse;
@@ -133,12 +132,9 @@ import org.apache.hadoop.hive.ql.metadat
import org.apache.hadoop.hive.ql.metadata.InputEstimator;
import org.apache.hadoop.hive.ql.metadata.Partition;
import org.apache.hadoop.hive.ql.metadata.Table;
-import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner;
-import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.plan.BaseWork;
import org.apache.hadoop.hive.ql.plan.DynamicPartitionCtx;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
import org.apache.hadoop.hive.ql.plan.GroupByDesc;
@@ -184,8 +180,6 @@ import com.esotericsoftware.kryo.io.Inpu
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.serializers.FieldSerializer;
-import org.apache.commons.codec.binary.Base64;
-
/**
* Utilities.
*
@@ -2191,6 +2185,8 @@ public final class Utilities {
}
resultMap.put(pathStr, new ContentSummary(total, -1, -1));
}
+ // todo: should nullify summary for non-native tables,
+ // not to be selected as a mapjoin target
FileSystem fs = p.getFileSystem(myConf);
resultMap.put(pathStr, fs.getContentSummary(p));
} catch (Exception e) {
@@ -2252,6 +2248,23 @@ public final class Utilities {
}
}
+ // return sum of lengths except one alias. returns -1 if any of other alias is unknown
+ public static long sumOfExcept(Map<String, Long> aliasToSize,
+ Set<String> aliases, String except) {
+ long total = 0;
+ for (String alias : aliases) {
+ if (alias.equals(except)) {
+ continue;
+ }
+ Long size = aliasToSize.get(alias);
+ if (size == null) {
+ return -1;
+ }
+ total += size;
+ }
+ return total;
+ }
+
public static boolean isEmptyPath(JobConf job, Path dirPath, Context ctx)
throws Exception {
ContentSummary cs = ctx.getCS(dirPath);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java Thu Jan 16 17:45:45 2014
@@ -441,7 +441,7 @@ public class CommonJoinTaskDispatcher ex
Configuration conf = context.getConf();
- // If sizes of atleast n-1 tables in a n-way join is known, and their sum is smaller than
+ // If sizes of at least n-1 tables in a n-way join is known, and their sum is smaller than
// the threshold size, convert the join into map-join and don't create a conditional task
boolean convertJoinMapJoin = HiveConf.getBoolVar(conf,
HiveConf.ConfVars.HIVECONVERTJOINNOCONDITIONALTASK);
@@ -451,47 +451,32 @@ public class CommonJoinTaskDispatcher ex
long mapJoinSize = HiveConf.getLongVar(conf,
HiveConf.ConfVars.HIVECONVERTJOINNOCONDITIONALTASKTHRESHOLD);
- boolean bigTableFound = false;
- long largestBigTableCandidateSize = -1;
- long sumTableSizes = 0;
- for (String alias : aliasToWork.keySet()) {
+ Long bigTableSize = null;
+ Set<String> aliases = aliasToWork.keySet();
+ for (String alias : aliases) {
int tablePosition = getPosition(currWork, joinOp, alias);
- boolean bigTableCandidate = bigTableCandidates.contains(tablePosition);
- Long size = aliasToSize.get(alias);
- // The size is not available at compile time if the input is a sub-query.
- // If the size of atleast n-1 inputs for a n-way join are available at compile time,
- // and the sum of them is less than the specified threshold, then convert the join
- // into a map-join without the conditional task.
- if ((size == null) || (size > mapJoinSize)) {
- sumTableSizes += largestBigTableCandidateSize;
- if (bigTableFound || (sumTableSizes > mapJoinSize) || !bigTableCandidate) {
- convertJoinMapJoin = false;
- break;
- }
- bigTableFound = true;
+ if (!bigTableCandidates.contains(tablePosition)) {
+ continue;
+ }
+ long sumOfOthers = Utilities.sumOfExcept(aliasToSize, aliases, alias);
+ if (sumOfOthers < 0 || sumOfOthers > mapJoinSize) {
+ continue; // some small alias is not known or too big
+ }
+ if (bigTableSize == null && bigTablePosition >= 0 && tablePosition < bigTablePosition) {
+ continue; // prefer right most alias
+ }
+ Long aliasSize = aliasToSize.get(alias);
+ if (bigTableSize == null || (aliasSize != null && aliasSize > bigTableSize)) {
bigTablePosition = tablePosition;
- largestBigTableCandidateSize = mapJoinSize + 1;
- } else {
- if (bigTableCandidate && size > largestBigTableCandidateSize) {
- bigTablePosition = tablePosition;
- sumTableSizes += largestBigTableCandidateSize;
- largestBigTableCandidateSize = size;
- } else {
- sumTableSizes += size;
- }
- if (sumTableSizes > mapJoinSize) {
- convertJoinMapJoin = false;
- break;
- }
+ bigTableSize = aliasSize;
}
}
}
- String bigTableAlias = null;
currWork.setOpParseCtxMap(parseCtx.getOpParseCtx());
currWork.setJoinTree(joinTree);
- if (convertJoinMapJoin) {
+ if (bigTablePosition >= 0) {
// create map join task and set big table as bigTablePosition
MapRedTask newTask = convertTaskToMapJoinTask(currTask.getWork(), bigTablePosition).getFirst();
@@ -521,7 +506,7 @@ public class CommonJoinTaskDispatcher ex
// create map join task and set big table as i
ObjectPair<MapRedTask, String> newTaskAlias = convertTaskToMapJoinTask(newWork, i);
MapRedTask newTask = newTaskAlias.getFirst();
- bigTableAlias = newTaskAlias.getSecond();
+ String bigTableAlias = newTaskAlias.getSecond();
if (cannotConvert(bigTableAlias, aliasToSize,
aliasTotalKnownInputSize, ThresholdOfSmallTblSizeSum)) {
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverCommonJoin.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverCommonJoin.java?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverCommonJoin.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverCommonJoin.java Thu Jan 16 17:45:45 2014
@@ -19,22 +19,28 @@ package org.apache.hadoop.hive.ql.plan;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.exec.Task;
+import org.apache.hadoop.hive.ql.exec.Utilities;
/**
* ConditionalResolverSkewJoin.
*
*/
public class ConditionalResolverCommonJoin implements ConditionalResolver, Serializable {
+
private static final long serialVersionUID = 1L;
+ private static final Log LOG = LogFactory.getLog(ConditionalResolverCommonJoin.class);
/**
* ConditionalResolverSkewJoinCtx.
@@ -71,7 +77,8 @@ public class ConditionalResolverCommonJo
}
public HashMap<String, Long> getAliasToKnownSize() {
- return aliasToKnownSize == null ? new HashMap<String, Long>() : aliasToKnownSize;
+ return aliasToKnownSize == null ?
+ aliasToKnownSize = new HashMap<String, Long>() : aliasToKnownSize;
}
public void setAliasToKnownSize(HashMap<String, Long> aliasToKnownSize) {
@@ -101,6 +108,20 @@ public class ConditionalResolverCommonJo
public void setHdfsTmpDir(Path hdfsTmpDir) {
this.hdfsTmpDir = hdfsTmpDir;
}
+
+ @Override
+ public ConditionalResolverCommonJoinCtx clone() {
+ ConditionalResolverCommonJoinCtx ctx = new ConditionalResolverCommonJoinCtx();
+ ctx.setAliasToTask(aliasToTask);
+ ctx.setCommonJoinTask(commonJoinTask);
+ ctx.setPathToAliases(pathToAliases);
+ ctx.setHdfsTmpDir(hdfsTmpDir);
+ ctx.setLocalTmpDir(localTmpDir);
+ // if any of join participants is from other MR, it has alias like '[pos:]$INTNAME'
+ // which of size should be caculated for each resolver.
+ ctx.setAliasToKnownSize(new HashMap<String, Long>(aliasToKnownSize));
+ return ctx;
+ }
}
public ConditionalResolverCommonJoin() {
@@ -108,15 +129,11 @@ public class ConditionalResolverCommonJo
@Override
public List<Task<? extends Serializable>> getTasks(HiveConf conf, Object objCtx) {
- ConditionalResolverCommonJoinCtx ctx = (ConditionalResolverCommonJoinCtx) objCtx;
+ ConditionalResolverCommonJoinCtx ctx = ((ConditionalResolverCommonJoinCtx) objCtx).clone();
List<Task<? extends Serializable>> resTsks = new ArrayList<Task<? extends Serializable>>();
// get aliasToPath and pass it to the heuristic
- HashMap<String, ArrayList<String>> pathToAliases = ctx.getPathToAliases();
- HashMap<String, Long> aliasToKnownSize = ctx.getAliasToKnownSize();
- String bigTableAlias = this.resolveMapJoinTask(pathToAliases, ctx
- .getAliasToTask(), aliasToKnownSize, ctx.getHdfsTmpDir(), ctx
- .getLocalTmpDir(), conf);
+ String bigTableAlias = resolveDriverAlias(ctx, conf);
if (bigTableAlias == null) {
// run common join task
@@ -135,99 +152,98 @@ public class ConditionalResolverCommonJo
return resTsks;
}
- static class AliasFileSizePair implements Comparable<AliasFileSizePair> {
- String alias;
- long size;
- AliasFileSizePair(String alias, long size) {
- super();
- this.alias = alias;
- this.size = size;
- }
- @Override
- public int compareTo(AliasFileSizePair o) {
- if (o == null) {
- return 1;
- }
- return (size < o.size) ? -1 : ((size > o.size) ? 1 : 0);
+ private String resolveDriverAlias(ConditionalResolverCommonJoinCtx ctx, HiveConf conf) {
+ try {
+ resolveUnknownSizes(ctx, conf);
+ return resolveMapJoinTask(ctx, conf);
+ } catch (Exception e) {
+ LOG.info("Failed to resolve driver alias by exception.. Falling back to common join", e);
}
+ return null;
}
- private String resolveMapJoinTask(
- HashMap<String, ArrayList<String>> pathToAliases,
- HashMap<String, Task<? extends Serializable>> aliasToTask,
- HashMap<String, Long> aliasToKnownSize, Path hdfsTmpDir,
- Path localTmpDir, HiveConf conf) {
+ protected String resolveMapJoinTask(
+ ConditionalResolverCommonJoinCtx ctx, HiveConf conf) throws Exception {
+
+ Set<String> aliases = getParticipants(ctx);
+
+ Map<String, Long> aliasToKnownSize = ctx.getAliasToKnownSize();
+ Map<String, ArrayList<String>> pathToAliases = ctx.getPathToAliases();
+ Map<String, Task<? extends Serializable>> aliasToTask = ctx.getAliasToTask();
+
+ long threshold = HiveConf.getLongVar(conf, HiveConf.ConfVars.HIVESMALLTABLESFILESIZE);
+ Long bigTableSize = null;
+ Long smallTablesSize = null;
String bigTableFileAlias = null;
- long smallTablesFileSizeSum = 0;
+ for (String alias : aliases) {
+ if (!aliasToTask.containsKey(alias)) {
+ continue;
+ }
+ long sumOfOthers = Utilities.sumOfExcept(aliasToKnownSize, aliases, alias);
+ if (sumOfOthers < 0 || sumOfOthers > threshold) {
+ continue;
+ }
+ // at most one alias is unknown. we can safely regard it as a big alias
+ Long aliasSize = aliasToKnownSize.get(alias);
+ if (bigTableSize == null || (aliasSize != null && aliasSize > bigTableSize)) {
+ bigTableFileAlias = alias;
+ bigTableSize = aliasSize;
+ smallTablesSize = sumOfOthers;
+ }
+ }
+ if (bigTableFileAlias != null) {
+ LOG.info("Driver alias is " + bigTableFileAlias + " with size " + bigTableSize
+ + " (total size of others : " + smallTablesSize + ", threshold : " + threshold + ")");
+ return bigTableFileAlias;
+ }
+ LOG.info("Failed to resolve driver alias (threshold : " + threshold +
+ ", length mapping : " + aliasToKnownSize + ")");
+ return null;
+ }
- Map<String, AliasFileSizePair> aliasToFileSizeMap = new HashMap<String, AliasFileSizePair>();
- for (Map.Entry<String, Long> entry : aliasToKnownSize.entrySet()) {
- String alias = entry.getKey();
- AliasFileSizePair pair = new AliasFileSizePair(alias, entry.getValue());
- aliasToFileSizeMap.put(alias, pair);
+ private Set<String> getParticipants(ConditionalResolverCommonJoinCtx ctx) {
+ Set<String> participants = new HashSet<String>();
+ for (List<String> aliases : ctx.getPathToAliases().values()) {
+ participants.addAll(aliases);
}
+ return participants;
+ }
- try {
- // need to compute the input size at runtime, and select the biggest as
- // the big table.
- for (Map.Entry<String, ArrayList<String>> oneEntry : pathToAliases
- .entrySet()) {
- String p = oneEntry.getKey();
- // this path is intermediate data
- if (p.startsWith(hdfsTmpDir.toString()) || p.startsWith(localTmpDir.toString())) {
- ArrayList<String> aliasArray = oneEntry.getValue();
- if (aliasArray.size() <= 0) {
- continue;
- }
- Path path = new Path(p);
- FileSystem fs = path.getFileSystem(conf);
- long fileSize = fs.getContentSummary(path).getLength();
- for (String alias : aliasArray) {
- AliasFileSizePair pair = aliasToFileSizeMap.get(alias);
- if (pair == null) {
- pair = new AliasFileSizePair(alias, 0);
- aliasToFileSizeMap.put(alias, pair);
- }
- pair.size += fileSize;
- }
- }
- }
- // generate file size to alias mapping; but not set file size as key,
- // because different file may have the same file size.
+ protected void resolveUnknownSizes(ConditionalResolverCommonJoinCtx ctx, HiveConf conf)
+ throws Exception {
+
+ Set<String> aliases = getParticipants(ctx);
- List<AliasFileSizePair> aliasFileSizeList = new ArrayList<AliasFileSizePair>(
- aliasToFileSizeMap.values());
+ Map<String, Long> aliasToKnownSize = ctx.getAliasToKnownSize();
+ Map<String, ArrayList<String>> pathToAliases = ctx.getPathToAliases();
- Collections.sort(aliasFileSizeList);
- // iterating through this list from the end to beginning, trying to find
- // the big table for mapjoin
- int idx = aliasFileSizeList.size() - 1;
- boolean bigAliasFound = false;
- while (idx >= 0) {
- AliasFileSizePair pair = aliasFileSizeList.get(idx);
- String alias = pair.alias;
- long size = pair.size;
- idx--;
- if (!bigAliasFound && aliasToTask.get(alias) != null) {
- // got the big table
- bigAliasFound = true;
- bigTableFileAlias = alias;
- continue;
+ Set<String> unknownPaths = new HashSet<String>();
+ for (Map.Entry<String, ArrayList<String>> entry : pathToAliases.entrySet()) {
+ for (String alias : entry.getValue()) {
+ if (aliases.contains(alias) && !aliasToKnownSize.containsKey(alias)) {
+ unknownPaths.add(entry.getKey());
+ break;
}
- smallTablesFileSizeSum += size;
}
-
- // compare with threshold
- long threshold = HiveConf.getLongVar(conf, HiveConf.ConfVars.HIVESMALLTABLESFILESIZE);
- if (smallTablesFileSizeSum <= threshold) {
- return bigTableFileAlias;
- } else {
- return null;
+ }
+ Path hdfsTmpDir = ctx.getHdfsTmpDir();
+ Path localTmpDir = ctx.getLocalTmpDir();
+ // need to compute the input size at runtime, and select the biggest as
+ // the big table.
+ for (String p : unknownPaths) {
+ // this path is intermediate data
+ if (p.startsWith(hdfsTmpDir.toString()) || p.startsWith(localTmpDir.toString())) {
+ Path path = new Path(p);
+ FileSystem fs = path.getFileSystem(conf);
+ long fileSize = fs.getContentSummary(path).getLength();
+ for (String alias : pathToAliases.get(p)) {
+ Long length = aliasToKnownSize.get(alias);
+ if (length == null) {
+ aliasToKnownSize.put(alias, fileSize);
+ }
+ }
}
- } catch (Exception e) {
- e.printStackTrace();
- return null;
}
}
}
Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/plan/TestConditionalResolverCommonJoin.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/plan/TestConditionalResolverCommonJoin.java?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/plan/TestConditionalResolverCommonJoin.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/plan/TestConditionalResolverCommonJoin.java Thu Jan 16 17:45:45 2014
@@ -18,18 +18,60 @@
package org.apache.hadoop.hive.ql.plan;
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.plan.ConditionalResolverCommonJoin.AliasFileSizePair;
-
-public class TestConditionalResolverCommonJoin extends TestCase {
-
- public void testAliasFileSizePairCompareTo() {
- AliasFileSizePair big = new AliasFileSizePair("big", 389560034778L);
- AliasFileSizePair small = new AliasFileSizePair("small", 1647L);
-
- assertEquals(0, big.compareTo(big));
- assertEquals(1, big.compareTo(small));
- assertEquals(-1, small.compareTo(big));
- }
-}
+import junit.framework.Assert;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.exec.Task;
+import org.junit.Test;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+
+public class TestConditionalResolverCommonJoin {
+
+ @Test
+ public void testResolvingDriverAlias() throws Exception {
+ ConditionalResolverCommonJoin resolver = new ConditionalResolverCommonJoin();
+
+ HashMap<String, ArrayList<String>> pathToAliases = new HashMap<String, ArrayList<String>>();
+ pathToAliases.put("path1", new ArrayList<String>(Arrays.asList("alias1", "alias2")));
+ pathToAliases.put("path2", new ArrayList<String>(Arrays.asList("alias3")));
+
+ HashMap<String, Long> aliasToKnownSize = new HashMap<String, Long>();
+ aliasToKnownSize.put("alias1", 1024l);
+ aliasToKnownSize.put("alias2", 2048l);
+ aliasToKnownSize.put("alias3", 4096l);
+
+ // joins alias1, alias2, alias3 (alias1 was not eligible for big pos)
+ HashMap<String, Task<? extends Serializable>> aliasToTask =
+ new HashMap<String, Task<? extends Serializable>>();
+ aliasToTask.put("alias2", null);
+ aliasToTask.put("alias3", null);
+
+ ConditionalResolverCommonJoin.ConditionalResolverCommonJoinCtx ctx =
+ new ConditionalResolverCommonJoin.ConditionalResolverCommonJoinCtx();
+ ctx.setPathToAliases(pathToAliases);
+ ctx.setAliasToTask(aliasToTask);
+ ctx.setAliasToKnownSize(aliasToKnownSize);
+
+ HiveConf conf = new HiveConf();
+ conf.setLongVar(HiveConf.ConfVars.HIVESMALLTABLESFILESIZE, 4096);
+
+ // alias3 only can be selected
+ String resolved = resolver.resolveMapJoinTask(ctx, conf);
+ Assert.assertEquals("alias3", resolved);
+
+ conf.setLongVar(HiveConf.ConfVars.HIVESMALLTABLESFILESIZE, 65536);
+
+ // alias1, alias2, alias3 all can be selected but overriden by biggest one (alias3)
+ resolved = resolver.resolveMapJoinTask(ctx, conf);
+ Assert.assertEquals("alias3", resolved);
+
+ conf.setLongVar(HiveConf.ConfVars.HIVESMALLTABLESFILESIZE, 2048);
+
+ // not selected
+ resolved = resolver.resolveMapJoinTask(ctx, conf);
+ Assert.assertNull(resolved);
+ }
+}
\ No newline at end of file
Modified: hive/trunk/ql/src/test/results/clientpositive/auto_join25.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/auto_join25.q.out?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/auto_join25.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/auto_join25.q.out Thu Jan 16 17:45:45 2014
@@ -69,7 +69,7 @@ Obtaining error information
Task failed!
Task ID:
- Stage-14
+ Stage-15
Logs:
@@ -129,7 +129,7 @@ Obtaining error information
Task failed!
Task ID:
- Stage-7
+ Stage-8
Logs:
Modified: hive/trunk/ql/src/test/results/clientpositive/infer_bucket_sort_convert_join.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/infer_bucket_sort_convert_join.q.out?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/infer_bucket_sort_convert_join.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/infer_bucket_sort_convert_join.q.out Thu Jan 16 17:45:45 2014
@@ -79,7 +79,7 @@ Obtaining error information
Task failed!
Task ID:
- Stage-7
+ Stage-8
Logs:
Modified: hive/trunk/ql/src/test/results/clientpositive/mapjoin_hook.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/mapjoin_hook.q.out?rev=1558866&r1=1558865&r2=1558866&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/mapjoin_hook.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/mapjoin_hook.q.out Thu Jan 16 17:45:45 2014
@@ -49,7 +49,7 @@ Obtaining error information
Task failed!
Task ID:
- Stage-14
+ Stage-15
Logs: