*/
private Object processMapOnlyUnion(UnionOperator union, Stack<Node> stack,
GenMRProcContext ctx, UnionProcContext uCtx) throws SemanticException {
// merge currTask from multiple topOps
GenMRUnionCtx uCtxTask = ctx.getUnionTask(union);
if (uCtxTask != null) {
// get task associated with this union
Task<? extends Serializable> uTask = ctx.getUnionTask(union).getUTask();
if (uTask != null) {
if (ctx.getCurrTask() != null && ctx.getCurrTask() != uTask) {
// if ctx.getCurrTask() is in rootTasks, should be removed
ctx.getRootTasks().remove(ctx.getCurrTask());
}
ctx.setCurrTask(uTask);
}
}
UnionParseContext uPrsCtx = uCtx.getUnionParseContext(union);
if ((uPrsCtx != null) && (uPrsCtx.getMapJoinQuery())) {
GenMapRedUtils.mergeMapJoinUnion(union, ctx,
UnionProcFactory.getPositionParent(union, stack));
}
else {
ctx.getMapCurrCtx().put(
(Operator<? extends Serializable>) union,
new GenMapRedCtx(ctx.getCurrTask(), ctx.getCurrTopOp(),
ctx.getCurrAliasId()));
}
// if the union is the first time seen, set current task to GenMRUnionCtx
uCtxTask = ctx.getUnionTask(union);
if (uCtxTask == null) {
uCtxTask = new GenMRUnionCtx();
uCtxTask.setUTask(ctx.getCurrTask());
ctx.setUnionTask(union, uCtxTask);
}
Task<? extends Serializable> uTask=ctx.getCurrTask();
if (uTask.getParentTasks() == null