From b165abcd3bac5feb2cd26ae1cc4713c5f2596014 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sat, 14 Mar 2015 17:57:01 +0900 Subject: [PATCH 01/43] TAJO-1352_3 --- .../apache/tajo/plan/LogicalOptimizer.java | 58 +-- .../GreedyHeuristicJoinOrderAlgorithm.java | 409 ++++++++++-------- .../apache/tajo/plan/joinorder/JoinEdge.java | 66 +-- .../apache/tajo/plan/joinorder/JoinGraph.java | 142 +----- .../plan/joinorder/JoinOrderAlgorithm.java | 10 +- .../tajo/plan/joinorder/JoinOrderingUtil.java | 195 +++++++++ .../tajo/plan/joinorder/JoinVertex.java | 10 + .../plan/joinorder/JoinedRelationsVertex.java | 57 +++ .../tajo/plan/joinorder/RelationVertex.java | 61 +++ .../apache/tajo/plan/logical/JoinNode.java | 38 +- .../apache/tajo/plan/logical/JoinSpec.java | 103 +++++ .../plan/visitor/BasicLogicalPlanVisitor.java | 2 + 12 files changed, 749 insertions(+), 402 deletions(-) create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 18a8859d19..3826366ae4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -19,8 +19,7 @@ package org.apache.tajo.plan; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; +import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceStability; @@ -30,18 +29,18 @@ import org.apache.tajo.algebra.JoinType; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.conf.TajoConf.ConfVars; -import org.apache.tajo.util.ReflectionUtil; -import org.apache.tajo.util.graph.DirectedGraphCursor; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.joinorder.FoundJoinOrder; -import org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm; -import org.apache.tajo.plan.joinorder.JoinGraph; -import org.apache.tajo.plan.joinorder.JoinOrderAlgorithm; +import org.apache.tajo.plan.joinorder.*; import org.apache.tajo.plan.logical.*; -import org.apache.tajo.plan.rewrite.*; +import org.apache.tajo.plan.rewrite.BaseLogicalPlanRewriteEngine; +import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRule; +import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRuleProvider; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; +import org.apache.tajo.util.ReflectionUtil; +import org.apache.tajo.util.TUtil; +import org.apache.tajo.util.graph.DirectedGraphCursor; import java.util.LinkedHashSet; import java.util.Set; @@ -115,7 +114,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding join order and restore remain filter order FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, - joinGraphContext.joinGraph, joinGraphContext.relationsForProduct); + joinGraphContext.joinGraph); // replace join node with FoundJoinOrder. JoinNode newJoinNode = order.getOrderedJoin(); @@ -157,8 +156,7 @@ public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.Quer private static class JoinGraphContext { JoinGraph joinGraph = new JoinGraph(); - Set quals = Sets.newHashSet(); - Set relationsForProduct = Sets.newHashSet(); + Set joinPredicateCandidates = TUtil.newHashSet(); } private static class JoinGraphBuilder extends BasicLogicalPlanVisitor { @@ -180,32 +178,38 @@ public static JoinGraphContext buildJoinGraph(LogicalPlan plan, LogicalPlan.Quer return joinGraphContext; } + @Override public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack stack) throws PlanningException { + // all join predicate candidates must be collected before building the join tree + context.joinPredicateCandidates.addAll( + TUtil.newList(AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual()))); super.visitFilter(context, plan, block, node, stack); - context.quals.addAll(Lists.newArrayList(AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual()))); return node; } @Override - public LogicalNode visitJoin(JoinGraphContext joinGraphContext, LogicalPlan plan, LogicalPlan.QueryBlock block, + public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode joinNode, Stack stack) throws PlanningException { - super.visitJoin(joinGraphContext, plan, block, joinNode, stack); + super.visitJoin(context, plan, block, joinNode, stack); + + Set joinConditions = TUtil.newHashSet(); if (joinNode.hasJoinQual()) { - joinGraphContext.joinGraph.addJoin(plan, block, joinNode); - } else { - LogicalNode leftChild = joinNode.getLeftChild(); - LogicalNode rightChild = joinNode.getRightChild(); - if (leftChild instanceof RelationNode) { - RelationNode rel = (RelationNode) leftChild; - joinGraphContext.relationsForProduct.add(rel.getCanonicalName()); - } - if (rightChild instanceof RelationNode) { - RelationNode rel = (RelationNode) rightChild; - joinGraphContext.relationsForProduct.add(rel.getCanonicalName()); - } + joinConditions.addAll( + TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual()))); } + + RelationNode leftChild = JoinOrderingUtil.findMostRightRelation(plan, block, joinNode.getLeftChild()); + RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); + JoinEdge edge = context.joinGraph.addJoin(joinNode.getJoinSpec(), + new RelationVertex(leftChild), new RelationVertex(rightChild)); + if (joinNode.getJoinType() == JoinType.INNER || joinNode.getJoinType() == JoinType.CROSS) { + // find all possible predicates for this join + joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.joinPredicateCandidates, edge)); + } + edge.addJoinPredicates(joinConditions); + return joinNode; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 4231484c61..493e3a89b7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -26,6 +26,7 @@ import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.logical.*; +import org.apache.tajo.util.Pair; import org.apache.tajo.util.TUtil; import java.util.*; @@ -39,156 +40,166 @@ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { public static double DEFAULT_SELECTION_FACTOR = 0.1; @Override - public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph, - Set relationsWithoutQual) throws PlanningException { - - // Setup a remain relation set to be joined - // Why we should use LinkedHashSet? - it should keep the deterministic for the order of joins. - // Otherwise, join orders can be different even if join costs are the same to each other. - Set remainRelations = new LinkedHashSet(); - for (RelationNode relation : block.getRelations()) { - remainRelations.add(relation); - } - - LogicalNode latestJoin; - JoinEdge bestPair; - - while (remainRelations.size() > 1) { - Set checkingRelations = new LinkedHashSet(); - - for (LogicalNode relation : remainRelations) { - Collection relationStrings = PlannerUtil.getRelationLineageWithinQueryBlock(plan, relation); - List joinEdges = new ArrayList(); - String relationCollection = TUtil.collectionToString(relationStrings, ","); - List joinEdgesForGiven = joinGraph.getIncomingEdges(relationCollection); - if (joinEdgesForGiven != null) { - joinEdges.addAll(joinEdgesForGiven); - } - if (relationStrings.size() > 1) { - for (String relationString: relationStrings) { - joinEdgesForGiven = joinGraph.getIncomingEdges(relationString); - if (joinEdgesForGiven != null) { - joinEdges.addAll(joinEdgesForGiven); - } - } - } - - // check if the relation is the last piece of outer join - boolean endInnerRelation = false; - for (JoinEdge joinEdge: joinEdges) { - switch(joinEdge.getJoinType()) { - case LEFT_ANTI: - case RIGHT_ANTI: - case LEFT_SEMI: - case RIGHT_SEMI: - case LEFT_OUTER: - case RIGHT_OUTER: - case FULL_OUTER: - endInnerRelation = true; - if (checkingRelations.size() <= 1) { - checkingRelations.add(relation); - } - break; - } - } - - if (endInnerRelation) { - break; - } - - checkingRelations.add(relation); - } - - remainRelations.removeAll(checkingRelations); - - // Find the best join pair among all joinable operators in candidate set. - while (checkingRelations.size() > 1) { - LinkedHashSet removingJoinEdges = new LinkedHashSet(); - bestPair = getBestPair(plan, joinGraph, checkingRelations, removingJoinEdges); - - checkingRelations.remove(bestPair.getLeftRelation()); - checkingRelations.remove(bestPair.getRightRelation()); - for (String[] joinEdge: removingJoinEdges) { - // remove the edge of the best pair from join graph - joinGraph.removeEdge(joinEdge[0], joinEdge[1]); - } - - latestJoin = createJoinNode(plan, bestPair); - checkingRelations.add(latestJoin); - - // all logical nodes should be registered to corresponding blocks - block.registerNode(latestJoin); - } + public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph) + throws PlanningException { - // new Logical block should be the first entry of new Set - checkingRelations.addAll(remainRelations); - remainRelations = checkingRelations; + Set vertexes = TUtil.newHashSet(); + for (RelationNode relationNode : block.getRelations()) { + vertexes.add(new RelationVertex(relationNode)); + } + JoinEdgeFinderContext context = new JoinEdgeFinderContext(); + while (vertexes.size() > 1) { + JoinEdge bestPair = getBestPair(context, ) } - JoinNode joinTree = (JoinNode) remainRelations.iterator().next(); - // all generated nodes should be registered to corresponding blocks - block.registerNode(joinTree); - return new FoundJoinOrder(joinTree, getCost(joinTree)); - } - - private static JoinNode createJoinNode(LogicalPlan plan, JoinEdge joinEdge) { - LogicalNode left = joinEdge.getLeftRelation(); - LogicalNode right = joinEdge.getRightRelation(); - - JoinNode joinNode = plan.createNode(JoinNode.class); - if (PlannerUtil.isCommutativeJoin(joinEdge.getJoinType())) { - // if only one operator is relation - if ((left instanceof RelationNode) && !(right instanceof RelationNode)) { - // for left deep - joinNode.init(joinEdge.getJoinType(), right, left); - } else { - // if both operators are relation or if both are relations - // we don't need to concern the left-right position. - joinNode.init(joinEdge.getJoinType(), left, right); - } - } else { - joinNode.init(joinEdge.getJoinType(), left, right); - } - Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), - joinNode.getRightChild().getOutSchema()); - joinNode.setInSchema(mergedSchema); - joinNode.setOutSchema(mergedSchema); - if (joinEdge.hasJoinQual()) { - joinNode.setJoinQual(AlgebraicUtil.createSingletonExprFromCNF(joinEdge.getJoinQual())); - } - return joinNode; +// // Setup a remain relation set to be joined +// // Why we should use LinkedHashSet? - it should keep the deterministic for the order of joins. +// // Otherwise, join orders can be different even if join costs are the same to each other. +// Set remainRelations = new LinkedHashSet(); +// for (RelationNode relation : block.getRelations()) { +// remainRelations.add(relation); +// } +// +// LogicalNode latestJoin; +// JoinEdge bestPair; +// +// while (remainRelations.size() > 1) { +// Set checkingRelations = new LinkedHashSet(); +// +// for (LogicalNode relation : remainRelations) { +// Collection relationStrings = PlannerUtil.getRelationLineageWithinQueryBlock(plan, relation); +// List joinEdges = new ArrayList(); +// String relationCollection = TUtil.collectionToString(relationStrings, ","); +// List joinEdgesForGiven = joinGraph.getIncomingEdges(relationCollection); +// if (joinEdgesForGiven != null) { +// joinEdges.addAll(joinEdgesForGiven); +// } +// if (relationStrings.size() > 1) { +// for (String relationString: relationStrings) { +// joinEdgesForGiven = joinGraph.getIncomingEdges(relationString); +// if (joinEdgesForGiven != null) { +// joinEdges.addAll(joinEdgesForGiven); +// } +// } +// } +// +// // check if the relation is the last piece of outer join +// boolean endInnerRelation = false; +// for (JoinEdge joinEdge: joinEdges) { +// switch(joinEdge.getJoinType()) { +// case LEFT_ANTI: +// case RIGHT_ANTI: +// case LEFT_SEMI: +// case RIGHT_SEMI: +// case LEFT_OUTER: +// case RIGHT_OUTER: +// case FULL_OUTER: +// endInnerRelation = true; +// if (checkingRelations.size() <= 1) { +// checkingRelations.add(relation); +// } +// break; +// } +// } +// +// if (endInnerRelation) { +// break; +// } +// +// checkingRelations.add(relation); +// } +// +// remainRelations.removeAll(checkingRelations); +// +// // Find the best join pair among all joinable operators in candidate set. +// while (checkingRelations.size() > 1) { +// LinkedHashSet removingJoinEdges = new LinkedHashSet(); +// bestPair = getBestPair(plan, joinGraph, checkingRelations, removingJoinEdges); +// +// checkingRelations.remove(bestPair.getLeftRelation()); +// checkingRelations.remove(bestPair.getRightRelation()); +// for (String[] joinEdge: removingJoinEdges) { +// // remove the edge of the best pair from join graph +// joinGraph.removeEdge(joinEdge[0], joinEdge[1]); +// } +// +// latestJoin = createJoinNode(plan, bestPair); +// checkingRelations.add(latestJoin); +// +// // all logical nodes should be registered to corresponding blocks +// block.registerNode(latestJoin); +// } +// +// // new Logical block should be the first entry of new Set +// checkingRelations.addAll(remainRelations); +// remainRelations = checkingRelations; +// } +// +// JoinNode joinTree = (JoinNode) remainRelations.iterator().next(); +// // all generated nodes should be registered to corresponding blocks +// block.registerNode(joinTree); +// return new FoundJoinOrder(joinTree, getCost(joinTree)); + return null; } +// private static JoinNode createJoinNode(LogicalPlan plan, JoinEdge joinEdge) { +// LogicalNode left = joinEdge.getLeftRelation(); +// LogicalNode right = joinEdge.getRightRelation(); +// +// JoinNode joinNode = plan.createNode(JoinNode.class); +// +// if (PlannerUtil.isCommutativeJoin(joinEdge.getJoinType())) { +// // if only one operator is relation +// if ((left instanceof RelationNode) && !(right instanceof RelationNode)) { +// // for left deep +// joinNode.init(joinEdge.getJoinType(), right, left); +// } else { +// // if both operators are relation or if both are relations +// // we don't need to concern the left-right position. +// joinNode.init(joinEdge.getJoinType(), left, right); +// } +// } else { +// joinNode.init(joinEdge.getJoinType(), left, right); +// } +// +// Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), +// joinNode.getRightChild().getOutSchema()); +// joinNode.setInSchema(mergedSchema); +// joinNode.setOutSchema(mergedSchema); +// if (joinEdge.hasJoinQual()) { +// joinNode.setJoinQual(AlgebraicUtil.createSingletonExprFromCNF(joinEdge.getJoinQual())); +// } +// return joinNode; +// } + /** * Find the best join pair among all joinable operators in candidate set. * - * @param plan a logical plan - * @param graph a join graph which consists of vertices and edges, where vertex is relation and - * each edge is join condition. - * @param candidateSet candidate operators to be joined. + * @param context + * @param joinGraph a join graph which consists of vertices and edges, where vertex is relation and + * each edge is join condition. + * @param vertexes candidate operators to be joined. * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(LogicalPlan plan, JoinGraph graph, Set candidateSet, Set bestJoinEdges) + private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraph joinGraph, Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; JoinEdge bestJoin = null; - LinkedHashSet relatedJoinEdges = null; - LinkedHashSet relatedNonCrossJoinEdges = null; double minNonCrossJoinCost = Double.MAX_VALUE; JoinEdge bestNonCrossJoin = null; - for (LogicalNode outer : candidateSet) { - for (LogicalNode inner : candidateSet) { + for (JoinVertex outer : vertexes) { + for (JoinVertex inner : vertexes) { if (outer.equals(inner)) { continue; } - LinkedHashSet joinEdgePairs = new LinkedHashSet(); - JoinEdge foundJoin = findJoin(plan, graph, outer, inner, joinEdgePairs); + context.reset(); + JoinEdge foundJoin = findJoin(context, joinGraph, outer, outer, inner); if (foundJoin == null) { continue; } @@ -197,7 +208,6 @@ private JoinEdge getBestPair(LogicalPlan plan, JoinGraph graph, Set if (cost < minCost) { minCost = cost; bestJoin = foundJoin; - relatedJoinEdges = joinEdgePairs; } // Keep the min cost join @@ -207,97 +217,112 @@ private JoinEdge getBestPair(LogicalPlan plan, JoinGraph graph, Set if (cost < minNonCrossJoinCost) { minNonCrossJoinCost = cost; bestNonCrossJoin = foundJoin; - relatedNonCrossJoinEdges = joinEdgePairs; } } } } if (bestNonCrossJoin != null) { - bestJoinEdges.addAll(relatedNonCrossJoinEdges); return bestNonCrossJoin; } else { - bestJoinEdges.addAll(relatedJoinEdges); return bestJoin; } } + private static class JoinEdgeFinderContext { + private Set visited = TUtil.newHashSet(); + + public void reset() { + visited.clear(); + } + } + /** * Find a join between two logical operator trees * * @return If there is no join condition between two relation, it returns NULL value. */ - private static JoinEdge findJoin(LogicalPlan plan, JoinGraph graph, LogicalNode outer, LogicalNode inner, Set joinEdgePairs) + private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraph joinGraph, JoinVertex begin, + final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { - JoinEdge foundJoinEdge = null; - - // If outer is outer join, make edge key using all relation names in outer. - SortedSet relationNames = - new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, outer)); - String outerEdgeKey = TUtil.collectionToString(relationNames, ", "); - for (String innerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, inner)) { - if (graph.hasEdge(outerEdgeKey, innerName)) { - JoinEdge existJoinEdge = graph.getEdge(outerEdgeKey, innerName); - String[] joinEdgePair = {outerEdgeKey, innerName}; - joinEdgePairs.add(joinEdgePair); - if (foundJoinEdge == null) { - foundJoinEdge = new JoinEdge(existJoinEdge.getJoinType(), outer, inner, - existJoinEdge.getJoinQual()); - } else { - foundJoinEdge.addJoinQual(AlgebraicUtil.createSingletonExprFromCNF( - existJoinEdge.getJoinQual())); + + + } + + private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraph joinGraph, RelationVertex begin, + final RelationVertex leftTarget, final RelationVertex rightTarget) { + if (isEqualsOrCommutative(joinGraph, begin, leftTarget)) { + for (JoinEdge eachEdge : joinGraph.getOutgoingEdges(leftTarget)) { + if (isEqualsOrCommutative(joinGraph, eachEdge.getRightVertex(), rightTarget)) { + return eachEdge; + } + } + // not found + return null; + } else { + for (JoinVertex commutativeVertex : getAllCommutativeVertexes(joinGraph, begin)) { + for (Pair associativePair : getAssociativeEdges(context, joinGraph, commutativeVertex)) { + // every left edge is already checked above + JoinEdge rightEdge = associativePair.getSecond(); + JoinEdge found = findJoin(context, joinGraph, rightEdge.getLeftVertex(), leftTarget, rightTarget); + if (found != null) { + return found; + } } } + // not found + return null; } - if (foundJoinEdge != null) { - return foundJoinEdge; + } + + public static boolean isEqualsOrCommutative(JoinGraph graph, RelationVertex v1, RelationVertex v2) { + if (v1.equals(v2) || isCommutative(graph, v1, v2)) { + return true; + } else { + return false; } + } - relationNames = - new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, inner)); - outerEdgeKey = TUtil.collectionToString(relationNames, ", "); - for (String outerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, outer)) { - if (graph.hasEdge(outerEdgeKey, outerName)) { - JoinEdge existJoinEdge = graph.getEdge(outerEdgeKey, outerName); - String[] joinEdgePair = {outerEdgeKey, outerName}; - joinEdgePairs.add(joinEdgePair); - if (foundJoinEdge == null) { - foundJoinEdge = new JoinEdge(existJoinEdge.getJoinType(), inner, outer, - existJoinEdge.getJoinQual()); - } else { - foundJoinEdge.addJoinQual(AlgebraicUtil.createSingletonExprFromCNF( - existJoinEdge.getJoinQual())); - } - } + public static boolean isCommutative(JoinGraph graph, RelationVertex v1, RelationVertex v2) { + JoinEdge edge = graph.getEdge(v1, v2); + if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + return true; } - if (foundJoinEdge != null) { - return foundJoinEdge; + return false; + } + + public static Set getAllCommutativeVertexes(JoinGraph graph, RelationVertex from) { + Set founds = TUtil.newHashSet(); + founds.add(from); + getAllCommutativeVertexes(founds, graph, from); + return founds; + } + + private static void getAllCommutativeVertexes(Set founds, JoinGraph graph, + JoinVertex vertex) { + for (JoinEdge candidateEdge : graph.getOutgoingEdges(vertex)) { + if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType())) { + founds.add(candidateEdge.getRightVertex()); + getAllCommutativeVertexes(founds, tree, candidateEdge.getRightVertex()); + } } + } - for (String outerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, outer)) { - for (String innerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, inner)) { - - // Find all joins between two relations and merge them into one join if possible - if (graph.hasEdge(outerName, innerName)) { - JoinEdge existJoinEdge = graph.getEdge(outerName, innerName); - String[] joinEdgePair = {outerName, innerName}; - joinEdgePairs.add(joinEdgePair); - if (foundJoinEdge == null) { - foundJoinEdge = new JoinEdge(existJoinEdge.getJoinType(), outer, inner, - existJoinEdge.getJoinQual()); - } else { - foundJoinEdge.addJoinQual(AlgebraicUtil.createSingletonExprFromCNF( - existJoinEdge.getJoinQual())); + public static Set> getAssociativeEdges(JoinEdgeFinderContext context, JoinTree tree, + JoinVertex start) { + Set> associativeEdges = TUtil.newHashSet(); + // find all associative edge pairs which begin at the start vertex + for (JoinEdge leftEdge : tree.getOutgoingEdges(start)) { + JoinVertex willBeVisited = leftEdge.getRightVertex(); + if (!context.visited.contains(willBeVisited)) { + for (JoinEdge rightEdge : tree.getOutgoingEdges(willBeVisited)) { + if (JoinOrderingUtil.isAssociativeJoin(leftEdge.getJoinType(), rightEdge.getJoinType())) { + associativeEdges.add(new Pair(leftEdge, rightEdge)); } } } } - - if (foundJoinEdge == null) { - foundJoinEdge = new JoinEdge(JoinType.CROSS, outer, inner); - } - - return foundJoinEdge; + return associativeEdges; } /** @@ -310,11 +335,13 @@ public static double getCost(JoinEdge joinEdge) { if (joinEdge.hasJoinQual()) { // TODO - should consider join type // TODO - should statistic information obtained from query history - filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().length); - return getCost(joinEdge.getLeftRelation()) * getCost(joinEdge.getRightRelation()) * filterFactor; + filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); + return getCost(joinEdge.getLeftVertex().getCorrespondingNode()) * + getCost(joinEdge.getRightVertex().getCorrespondingNode()) * filterFactor; } else { // make cost bigger if cross join - return Math.pow(getCost(joinEdge.getLeftRelation()) * getCost(joinEdge.getRightRelation()), 2); + return Math.pow(getCost(joinEdge.getLeftVertex().getCorrespondingNode()) * + getCost(joinEdge.getRightVertex().getCorrespondingNode()), 2); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java index ce06748cc3..3b3b1a0192 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java @@ -18,58 +18,66 @@ package org.apache.tajo.plan.joinorder; -import com.google.common.collect.Sets; import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.JoinSpec; import org.apache.tajo.util.TUtil; -import java.util.Collections; import java.util.Set; public class JoinEdge { - private final JoinType joinType; - private final LogicalNode leftRelation; - private final LogicalNode rightRelation; - private final Set joinQual = Sets.newHashSet(); + private final JoinSpec joinSpec; + private final JoinVertex leftVertex; + private final JoinVertex rightVertex; + private final Schema schema; - public JoinEdge(JoinType joinType, LogicalNode leftRelation, LogicalNode rightRelation) { - this.joinType = joinType; - this.leftRelation = leftRelation; - this.rightRelation = rightRelation; - } - - public JoinEdge(JoinType joinType, LogicalNode leftRelation, LogicalNode rightRelation, - EvalNode ... condition) { - this(joinType, leftRelation, rightRelation); - Collections.addAll(joinQual, condition); + public JoinEdge(JoinSpec joinSpec, JoinVertex leftVertex, JoinVertex rightVertex) { + this.joinSpec = joinSpec; + this.leftVertex = leftVertex; + this.rightVertex = rightVertex; + schema = SchemaUtil.merge(leftVertex.getSchema(), rightVertex.getSchema()); } public JoinType getJoinType() { - return joinType; + return joinSpec.getType(); } - public LogicalNode getLeftRelation() { - return leftRelation; + public boolean hasJoinQual() { + return joinSpec.hasPredicates(); } - public LogicalNode getRightRelation() { - return rightRelation; + public void addJoinQual(EvalNode joinQual) { + this.joinSpec.addPredicate(joinQual); } - public boolean hasJoinQual() { - return joinQual.size() > 0; + public void addJoinPredicates(Set predicates) { + this.joinSpec.addPredicates(predicates); } - public void addJoinQual(EvalNode joinQual) { - this.joinQual.add(joinQual); + public Set getJoinQual() { + return joinSpec.getPredicates(); } - public EvalNode [] getJoinQual() { - return joinQual.toArray(new EvalNode[joinQual.size()]); + public EvalNode getSingletonJoinQual() { + return joinSpec.getSingletonPredicate(); } public String toString() { - return leftRelation + " " + joinType + " " + rightRelation + " ON " + TUtil.collectionToString(joinQual, ", "); + return leftVertex + " " + joinSpec.getType() + " " + rightVertex + " ON " + + TUtil.collectionToString(joinSpec.getPredicates(), ", "); + } + + public JoinVertex getLeftVertex() { + return leftVertex; + } + + public JoinVertex getRightVertex() { + return rightVertex; + } + + public Schema getSchema() { + return schema; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 72e9b1d328..551e483f92 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -18,140 +18,18 @@ package org.apache.tajo.plan.joinorder; -import com.google.common.collect.Sets; -import org.apache.tajo.algebra.JoinType; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Column; -import org.apache.tajo.util.graph.SimpleUndirectedGraph; -import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.NamedExprsManager; -import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.plan.expr.AlgebraicUtil; -import org.apache.tajo.plan.expr.BinaryEval; -import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.expr.EvalTreeUtil; -import org.apache.tajo.plan.logical.JoinNode; -import org.apache.tajo.plan.logical.RelationNode; -import org.apache.tajo.util.TUtil; - -import java.util.*; - -public class JoinGraph extends SimpleUndirectedGraph { - - private String [] guessRelationsFromJoinQual(LogicalPlan.QueryBlock block, BinaryEval joinCondition) - throws PlanningException { - - // Note that we can guarantee that each join qual used here is a singleton. - // This is because we use dissect a join qual into conjunctive normal forms. - // In other words, each join qual has a form 'col1 = col2'. - Column leftExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getLeftExpr()).get(0); - Column rightExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getRightExpr()).get(0); - - // 0 - left table, 1 - right table - String [] relationNames = new String[2]; - - NamedExprsManager namedExprsMgr = block.getNamedExprsManager(); - if (leftExpr.hasQualifier()) { - relationNames[0] = leftExpr.getQualifier(); - } else { - if (namedExprsMgr.isAliasedName(leftExpr.getSimpleName())) { - String columnName = namedExprsMgr.getOriginalName(leftExpr.getSimpleName()); - String qualifier = CatalogUtil.extractQualifier(columnName); - relationNames[0] = qualifier; - } else { - // search for a relation which evaluates a right term included in a join condition - for (RelationNode rel : block.getRelations()) { - if (rel.getOutSchema().contains(leftExpr)) { - String qualifier = rel.getCanonicalName(); - relationNames[0] = qualifier; - } - } - - if (relationNames[0] == null) { // if not found - throw new PlanningException("Cannot expect a referenced relation: " + leftExpr); - } - } - } - - if (rightExpr.hasQualifier()) { - relationNames[1] = rightExpr.getQualifier(); - } else { - if (namedExprsMgr.isAliasedName(rightExpr.getSimpleName())) { - String columnName = namedExprsMgr.getOriginalName(rightExpr.getSimpleName()); - String qualifier = CatalogUtil.extractQualifier(columnName); - relationNames[1] = qualifier; - } else { - // search for a relation which evaluates a right term included in a join condition - for (RelationNode rel : block.getRelations()) { - if (rel.getOutSchema().contains(rightExpr)) { - String qualifier = rel.getCanonicalName(); - relationNames[1] = qualifier; - } - } - - if (relationNames[1] == null) { // if not found - throw new PlanningException("Cannot expect a referenced relation: " + rightExpr); - } - } - } - - return relationNames; - } - - public Collection addJoin(LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinNode joinNode) throws PlanningException { - if (joinNode.getJoinType() == JoinType.LEFT_OUTER || joinNode.getJoinType() == JoinType.RIGHT_OUTER) { - JoinEdge edge = new JoinEdge(joinNode.getJoinType(), - joinNode.getLeftChild(), joinNode.getRightChild(), joinNode.getJoinQual()); - - SortedSet leftNodeRelationName = - new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getLeftChild())); - SortedSet rightNodeRelationName = - new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getRightChild())); - - addEdge( - TUtil.collectionToString(leftNodeRelationName, ", "), - TUtil.collectionToString(rightNodeRelationName, ", "), - edge); - - Set allInOneCnf = new HashSet(); - allInOneCnf.add(joinNode.getJoinQual()); - - return allInOneCnf; - } else { - Set cnf = Sets.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual())); - - for (EvalNode singleQual : cnf) { - if (EvalTreeUtil.isJoinQual(block, - joinNode.getLeftChild().getOutSchema(), - joinNode.getRightChild().getOutSchema(), - singleQual, true)) { - String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) singleQual); - String leftExprRelName = relations[0]; - String rightExprRelName = relations[1]; - - Collection leftLineage = PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getLeftChild()); +import org.apache.tajo.plan.logical.JoinSpec; +import org.apache.tajo.util.graph.SimpleUndirectedGraph; - boolean isLeftExprForLeftTable = leftLineage.contains(leftExprRelName); +/** + * Left-deep graph + */ +public class JoinGraph extends SimpleUndirectedGraph { - JoinEdge edge = getEdge(leftExprRelName, rightExprRelName); - if (edge != null) { - edge.addJoinQual(singleQual); - } else { - if (isLeftExprForLeftTable) { - edge = new JoinEdge(joinNode.getJoinType(), - block.getRelation(leftExprRelName), block.getRelation(rightExprRelName), singleQual); - addEdge(leftExprRelName, rightExprRelName, edge); - } else { - edge = new JoinEdge(joinNode.getJoinType(), - block.getRelation(rightExprRelName), block.getRelation(leftExprRelName), singleQual); - addEdge(rightExprRelName, leftExprRelName, edge); - } - } - } - } - return cnf; - } + public JoinEdge addJoin(JoinSpec joinSpec, RelationVertex left, RelationVertex right) throws PlanningException { + JoinEdge edge = new JoinEdge(joinSpec, left, right); + this.addEdge(left, right, edge); + return edge; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java index 2dd0670579..3b8bb740f4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java @@ -36,13 +36,11 @@ public interface JoinOrderAlgorithm { * * @param plan * @param block - * @param joinGraph A join graph represents join conditions and their connections among relations. - * Given a graph, each vertex represents a relation, and each edge contains a join condition. - * A join graph does not contain relations that do not have any corresponding join condition. - * @param relationsWithoutQual The names of relations that do not have any corresponding join condition. + * @param joinGraph A left-deep join tree represents join conditions and their join relationships among relations. + * Each vertex represents a relation, and each edge contains a join condition. * @return * @throws org.apache.tajo.plan.PlanningException */ - FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph, - Set relationsWithoutQual) throws PlanningException; + FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph) + throws PlanningException; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java new file mode 100644 index 0000000000..12cfdf7ea3 --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -0,0 +1,195 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.plan.joinorder; + +import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.Column; +import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.expr.EvalTreeUtil; +import org.apache.tajo.plan.expr.EvalType; +import org.apache.tajo.plan.logical.JoinNode; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.RelationNode; +import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; +import org.apache.tajo.util.TUtil; + +import java.util.Set; +import java.util.Stack; + +public class JoinOrderingUtil { + + public static Set findJoinConditionForJoinVertex(Set candidates, JoinEdge edge) { + Set conditionsForThisJoin = TUtil.newHashSet(); + for (EvalNode predicate : candidates) { + if (EvalTreeUtil.isJoinQual(predicate, false) + && checkIfEvaluatedAtVertex(predicate, edge)) { + conditionsForThisJoin.add(predicate); + } + } + return conditionsForThisJoin; + } + + public static boolean checkIfEvaluatedAtVertex(EvalNode evalNode, JoinEdge edge) { + Set columnRefs = EvalTreeUtil.findUniqueColumns(evalNode); + if (EvalTreeUtil.findDistinctAggFunction(evalNode).size() > 0) { + return false; + } + if (EvalTreeUtil.findEvalsByType(evalNode, EvalType.WINDOW_FUNCTION).size() > 0) { + return false; + } + if (columnRefs.size() > 0 && !edge.getSchema().containsAll(columnRefs)) { + return false; + } + return true; + } + + /** + * Associativity rules + * + * ============================================================== + * Left-Hand Bracketed | Right-Hand Bracketed | Equivalence + * ============================================================== + * (A inner B) inner C | A inner (B inner C) | Equivalent + * (A left B) inner C | A left (B inner C) | Not equivalent + * (A right B) inner C | A right (B inner C) | Equivalent + * (A full B) inner C | A full (B inner C) | Not equivalent + * (A inner B) left C | A inner (B left C) | Equivalent + * (A left B) left C | A left (B left C) | Equivalent + * (A right B) left C | A right (B left C) | Equivalent + * (A full B) left C | A full (B left C) | Equivalent + * (A inner B) right C | A inner (B right C) | Not equivalent + * (A left B) right C | A left (B right C) | Not equivalent + * (A right B) right C | A right (B right C) | Equivalent + * (A full B) right C | A full (B right C) | Not equivalent + * (A inner B) full C | A inner (B full C) | Not equivalent + * (A left B) full C | A left (B full C) | Not equivalent + * (A right B) full C | A right (B full C) | Equivalent + * (A full B) full C | A full (B full C) | Equivalent + * ============================================================== + */ + public static boolean isAssociativeJoin(JoinType leftType, JoinType rightType) { + if (leftType == rightType) { + return true; + } + + if (leftType == JoinType.RIGHT_OUTER) { + return true; + } + + if (leftType == JoinType.LEFT_OUTER) { + // When the left type is the left outer join, input join types are associative + // if the right type is also the left outer join. + // This case is already checked above. + return false; + } + + if (leftType == JoinType.INNER) { + if (rightType == JoinType.LEFT_OUTER) { + return true; + } else { + return false; + } + } + + if (leftType == JoinType.FULL_OUTER) { + if (rightType == JoinType.LEFT_OUTER) { + return true; + } else { + return false; + } + } + + // TODO: consider when a join qual involves columns from two or more tables + return false; + } + + + public static Set findRelationVertexes(LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode from) throws PlanningException { + RelationNodeFinderContext context = new RelationNodeFinderContext(); + context.findMostLeft = context.findMostRight = true; + RelationNodeFinder finder = new RelationNodeFinder(); + finder.visit(context, plan, block, from, new Stack()); + return context.founds; + } + + public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode from) throws PlanningException { + RelationNodeFinderContext context = new RelationNodeFinderContext(); + context.findMostLeft = true; + RelationNodeFinder finder = new RelationNodeFinder(); + finder.visit(context, plan, block, from, new Stack()); + return context.founds.isEmpty() ? null : context.founds.iterator().next(); + } + + public static RelationNode findMostRightRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode from) throws PlanningException { + RelationNodeFinderContext context = new RelationNodeFinderContext(); + context.findMostRight = true; + RelationNodeFinder finder = new RelationNodeFinder(); + finder.visit(context, plan, block, from, new Stack()); + return context.founds.isEmpty() ? null : context.founds.iterator().next(); + } + + private static class RelationNodeFinderContext { + private Set founds = TUtil.newHashSet(); + private boolean findMostLeft; + private boolean findMostRight; + } + + private static class RelationNodeFinder extends BasicLogicalPlanVisitor { + + @Override + public void postHook(LogicalPlan plan, LogicalNode node, Stack stack, RelationNodeFinderContext context) + throws PlanningException { + if (node instanceof RelationNode) { + context.founds.add((RelationNode) node); + } + } + + @Override + public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinNode node, Stack stack) throws PlanningException { + stack.push(node); + LogicalNode result = null; + if (context.findMostLeft) { + result = visit(context, plan, block, node.getLeftChild(), stack); + } + if (context.findMostRight) { + result = visit(context, plan, block, node.getRightChild(), stack); + } + stack.pop(); + return result; + } + } + + public static JoinNode createJoinNodeFromEdge(LogicalPlan plan, JoinEdge edge) { + JoinNode node = plan.createNode(JoinNode.class); + + node.init(edge.getJoinType(), + edge.getLeftVertex().getCorrespondingNode(), + edge.getRightVertex().getCorrespondingNode()); + if (edge.hasJoinQual()) { + node.setJoinQual(edge.getSingletonJoinQual()); + } + return node; + } +} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java new file mode 100644 index 0000000000..8d62b6036a --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java @@ -0,0 +1,10 @@ +package org.apache.tajo.plan.joinorder; + +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.plan.logical.LogicalNode; + +public interface JoinVertex { + + Schema getSchema(); + LogicalNode getCorrespondingNode(); +} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java new file mode 100644 index 0000000000..2c5a4839bc --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -0,0 +1,57 @@ +package org.apache.tajo.plan.joinorder; + +import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaUtil; +import org.apache.tajo.plan.logical.JoinNode; +import org.apache.tajo.plan.logical.LogicalNode; + +public class JoinedRelationsVertex implements JoinVertex { + + private final JoinEdge joinEdge; + private final Schema schema; + private final JoinNode joinNode; // corresponding join node + + public JoinedRelationsVertex(JoinEdge joinEdge, JoinNode joinNode) { + this.joinEdge = joinEdge; + this.schema = SchemaUtil.merge(joinEdge.getLeftVertex().getSchema(), + joinEdge.getRightVertex().getSchema()); + this.joinNode = joinNode; + } + + public JoinEdge getJoinEdge() { + return this.joinEdge; + } + + @Override + public Schema getSchema() { + return schema; + } + + @Override + public String toString() { + return joinEdge.toString(); + } + + public LogicalNode getCorrespondingNode() { + return joinNode; + } + + public JoinType getJoinType() { + return joinEdge.getJoinType(); + } + + @Override + public boolean equals(Object o) { + if (o instanceof JoinedRelationsVertex) { + return this.joinEdge.equals(((JoinedRelationsVertex) o).joinEdge); + } + return false; + } + + @Override + public int hashCode() { + return joinEdge.hashCode(); + } + +} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java new file mode 100644 index 0000000000..25318049ab --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.plan.joinorder; + +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.RelationNode; + +public class RelationVertex implements JoinVertex{ + + private RelationNode relationNode; + + public RelationVertex(RelationNode relationNode) { + this.relationNode = relationNode; + } + + @Override + public String toString() { + return relationNode.getCanonicalName(); + } + + @Override + public boolean equals(Object o) { + if (o instanceof RelationVertex) { + RelationVertex other = (RelationVertex) o; + return this.relationNode.equals(other.relationNode); + } + return false; + } + + @Override + public int hashCode() { + return relationNode.hashCode(); + } + + @Override + public Schema getSchema() { + return relationNode.getOutSchema(); + } + + @Override + public LogicalNode getCorrespondingNode() { + return relationNode; + } +} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java index 58dfac24fb..17da7c2f1c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java @@ -26,7 +26,6 @@ import org.apache.tajo.plan.PlanString; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.Target; -import org.apache.tajo.plan.expr.BinaryEval; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.util.TUtil; @@ -34,8 +33,9 @@ import java.util.List; public class JoinNode extends BinaryNode implements Projectable, Cloneable { - @Expose private JoinType joinType; - @Expose private EvalNode joinQual; +// @Expose private JoinType joinType; +// @Expose private EvalNode joinQual; + @Expose private JoinSpec joinSpec = new JoinSpec(); @Expose private Target[] targets; // transition states @@ -47,7 +47,7 @@ public JoinNode(int pid) { } public void init(JoinType joinType, LogicalNode left, LogicalNode right) { - this.joinType = joinType; + this.joinSpec.setType(joinType); setLeftChild(left); setRightChild(right); } @@ -65,23 +65,27 @@ public List getBroadcastCandidateTargets() { } public JoinType getJoinType() { - return this.joinType; + return this.joinSpec.getType(); + } + + public JoinSpec getJoinSpec() { + return joinSpec; } public void setJoinType(JoinType joinType) { - this.joinType = joinType; + this.joinSpec.setType(joinType); } public void setJoinQual(EvalNode joinQual) { - this.joinQual = joinQual; + this.joinSpec.setSingletonPredicate(joinQual); } public boolean hasJoinQual() { - return this.joinQual != null; + return this.joinSpec.hasPredicates(); } public EvalNode getJoinQual() { - return this.joinQual; + return this.joinSpec.getSingletonPredicate(); } @Override @@ -102,9 +106,9 @@ public void setTargets(Target[] targets) { @Override public PlanString getPlanString() { - PlanString planStr = new PlanString(this).appendTitle("(").appendTitle(joinType.name()).appendTitle(")"); + PlanString planStr = new PlanString(this).appendTitle("(").appendTitle(joinSpec.getType().name()).appendTitle(")"); if (hasJoinQual()) { - planStr.addExplan("Join Cond: " + joinQual.toString()); + planStr.addExplan("Join Cond: " + joinSpec.getSingletonPredicate().toString()); } if (hasTargets()) { @@ -129,9 +133,8 @@ public PlanString getPlanString() { public boolean equals(Object obj) { if (obj instanceof JoinNode) { JoinNode other = (JoinNode) obj; - boolean eq = this.joinType.equals(other.joinType); + boolean eq = this.joinSpec.equals(other.joinSpec); eq &= TUtil.checkEquals(this.targets, other.targets); - eq &= TUtil.checkEquals(joinQual, other.joinQual); return eq && leftChild.equals(other.leftChild) && rightChild.equals(other.rightChild); } else { return false; @@ -141,8 +144,9 @@ public boolean equals(Object obj) { @Override public Object clone() throws CloneNotSupportedException { JoinNode join = (JoinNode) super.clone(); - join.joinType = this.joinType; - join.joinQual = this.joinQual == null ? null : (BinaryEval) this.joinQual.clone(); +// join.joinType = this.joinType; +// join.joinQual = this.joinQual == null ? null : (BinaryEval) this.joinQual.clone(); + join.joinSpec = (JoinSpec) this.joinSpec.clone(); if (hasTargets()) { join.targets = new Target[targets.length]; for (int i = 0; i < targets.length; i++) { @@ -153,9 +157,9 @@ public Object clone() throws CloneNotSupportedException { } public String toString() { - StringBuilder sb = new StringBuilder("Join (type").append(joinType); + StringBuilder sb = new StringBuilder("Join (type").append(joinSpec.getType()); if (hasJoinQual()) { - sb.append(",filter=").append(joinQual); + sb.append(",filter=").append(joinSpec.getSingletonPredicate()); } sb.append(")"); return sb.toString(); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java new file mode 100644 index 0000000000..e418f4782b --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java @@ -0,0 +1,103 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.plan.logical; + +import com.google.common.base.Objects; +import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.plan.expr.AlgebraicUtil; +import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.util.TUtil; + +import java.util.Set; + +public class JoinSpec implements Cloneable { + private JoinType type = null; + private Set predicates = TUtil.newHashSet(); + + public JoinSpec() { + + } + + public JoinSpec(JoinType type) { + this.type = type; + } + + public void addPredicate(EvalNode predicate) { + this.predicates.add(predicate); + } + + public void addPredicates(Set predicates) { + this.predicates.addAll(predicates); + } + + public boolean hasPredicates() { + return predicates.size() > 0; + } + + public void setPredicates(Set predicates) { + this.predicates.addAll(predicates); + } + + public void setSingletonPredicate(EvalNode predicates) { + this.predicates.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(predicates))); + } + + public EvalNode getSingletonPredicate() { + if (predicates.size() > 1) { + return AlgebraicUtil.createSingletonExprFromCNF(predicates.toArray(new EvalNode[predicates.size()])); + } else if (predicates.size() == 1) { + return predicates.iterator().next(); + } else { + return null; + } + } + + public Set getPredicates() { + return predicates; + } + + public JoinType getType() { + return type; + } + + public void setType(JoinType type) { + this.type = type; + } + + @Override + public boolean equals(Object o) { + if (o instanceof JoinSpec) { + JoinSpec other = (JoinSpec) o; + return this.type == other.type && this.predicates.equals(other.predicates); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(type, predicates.hashCode()); + } + + @Override + public Object clone() throws CloneNotSupportedException { + JoinSpec clone = new JoinSpec(this.type); + clone.setPredicates(this.predicates); + return clone; + } +} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java index 23c834d5c7..3acf3bff05 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java @@ -54,6 +54,7 @@ public CONTEXT visit(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock b public RESULT visit(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode node, Stack stack) throws PlanningException { + preHook(plan, node, stack, context); RESULT current; switch (node.getType()) { case ROOT: @@ -141,6 +142,7 @@ public RESULT visit(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock bl throw new PlanningException("Unknown logical node type: " + node.getType()); } + postHook(plan, node, stack, context); return current; } From d6e22ae056cf695a92306e008a2d941ca372519f Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 15 Mar 2015 11:49:53 +0900 Subject: [PATCH 02/43] problems in join tree building --- .../apache/tajo/plan/LogicalOptimizer.java | 50 ++-- .../GreedyHeuristicJoinOrderAlgorithm.java | 246 ++++++++++++------ .../apache/tajo/plan/joinorder/JoinEdge.java | 17 +- .../apache/tajo/plan/joinorder/JoinGraph.java | 12 +- .../tajo/plan/joinorder/JoinGraphContext.java | 46 ++++ .../plan/joinorder/JoinOrderAlgorithm.java | 2 +- .../tajo/plan/joinorder/JoinVertex.java | 3 + .../plan/joinorder/JoinedRelationsVertex.java | 44 +++- .../tajo/plan/joinorder/RelationVertex.java | 8 + 9 files changed, 306 insertions(+), 122 deletions(-) create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 3826366ae4..5357b945ca 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -98,6 +98,7 @@ public LogicalNode optimize(OverridableConf context, LogicalPlan plan) throws Pl } else { LOG.info("Skip Join Optimized."); } + // TODO: filter push down rulesAfterToJoinOpt.rewrite(context, plan); return plan.getRootBlock().getRoot(); } @@ -113,13 +114,14 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); // finding join order and restore remain filter order - FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, - joinGraphContext.joinGraph); + FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); // replace join node with FoundJoinOrder. JoinNode newJoinNode = order.getOrderedJoin(); JoinNode old = PlannerUtil.findTopNode(block.getRoot(), NodeType.JOIN); + // TODO: collect all join predicates and set them at the top join node (?) + JoinTargetCollector collector = new JoinTargetCollector(); Set targets = new LinkedHashSet(); collector.visitJoin(targets, plan, block, old, new Stack()); @@ -154,11 +156,6 @@ public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.Quer } } - private static class JoinGraphContext { - JoinGraph joinGraph = new JoinGraph(); - Set joinPredicateCandidates = TUtil.newHashSet(); - } - private static class JoinGraphBuilder extends BasicLogicalPlanVisitor { private final static JoinGraphBuilder instance; @@ -182,7 +179,7 @@ public static JoinGraphContext buildJoinGraph(LogicalPlan plan, LogicalPlan.Quer public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack stack) throws PlanningException { // all join predicate candidates must be collected before building the join tree - context.joinPredicateCandidates.addAll( + context.addPredicateCandidates( TUtil.newList(AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual()))); super.visitFilter(context, plan, block, node, stack); return node; @@ -194,21 +191,38 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical throws PlanningException { super.visitJoin(context, plan, block, joinNode, stack); + RelationNode leftChild = JoinOrderingUtil.findMostRightRelation(plan, block, joinNode.getLeftChild()); + RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); + JoinEdge edge = context.getJoinGraph().addJoin(joinNode, + new RelationVertex(leftChild), new RelationVertex(rightChild)); + + // find all possible predicates for this join edge Set joinConditions = TUtil.newHashSet(); if (joinNode.hasJoinQual()) { - joinConditions.addAll( - TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual()))); + Set originPredicates = joinNode.getJoinSpec().getPredicates(); + joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(originPredicates, edge)); + // find impossible predicates + originPredicates.removeAll(joinConditions); + context.addPredicateCandidates(originPredicates); + originPredicates.clear(); + originPredicates.addAll(joinConditions); } - RelationNode leftChild = JoinOrderingUtil.findMostRightRelation(plan, block, joinNode.getLeftChild()); - RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); - JoinEdge edge = context.joinGraph.addJoin(joinNode.getJoinSpec(), - new RelationVertex(leftChild), new RelationVertex(rightChild)); - if (joinNode.getJoinType() == JoinType.INNER || joinNode.getJoinType() == JoinType.CROSS) { - // find all possible predicates for this join - joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.joinPredicateCandidates, edge)); + joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getJoinPredicateCandidates(), edge)); + if (!joinConditions.isEmpty()) { + if (edge.getJoinType() == JoinType.CROSS) { + edge.getJoinSpec().setType(JoinType.INNER); + } + edge.addJoinPredicates(joinConditions); + } + + if (PlannerUtil.isCommutativeJoin(joinNode.getJoinType())) { + JoinEdge commutativeEdge = new JoinEdge(joinNode, + new RelationVertex(rightChild), new RelationVertex(leftChild)); + commutativeEdge.addJoinPredicates(joinConditions); + context.getJoinGraph().addEdge(commutativeEdge.getLeftVertex(), commutativeEdge.getRightVertex(), + commutativeEdge); } - edge.addJoinPredicates(joinConditions); return joinNode; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 493e3a89b7..7c9f89b4c8 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -20,13 +20,13 @@ import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.logical.*; -import org.apache.tajo.util.Pair; import org.apache.tajo.util.TUtil; import java.util.*; @@ -40,7 +40,7 @@ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { public static double DEFAULT_SELECTION_FACTOR = 0.1; @Override - public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph) + public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext graphContext) throws PlanningException { Set vertexes = TUtil.newHashSet(); @@ -48,11 +48,43 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo vertexes.add(new RelationVertex(relationNode)); } JoinEdgeFinderContext context = new JoinEdgeFinderContext(); + JoinGraph joinGraph = graphContext.getJoinGraph(); while (vertexes.size() > 1) { - JoinEdge bestPair = getBestPair(context, ) - } + JoinEdge bestPair = getBestPair(context, graphContext, vertexes); + JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); + + Set willBeRemoved = TUtil.newHashSet(); + Set willBeAdded = TUtil.newHashSet(); + prepareUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getLeftVertex()), newVertex, true, + willBeAdded, willBeRemoved); + prepareUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getLeftVertex()), newVertex, false, + willBeAdded, willBeRemoved); + + prepareUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getRightVertex()), newVertex, true, + willBeAdded, willBeRemoved); + + prepareUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getRightVertex()), newVertex, false, + willBeAdded, willBeRemoved); + + for (JoinEdge edge : willBeRemoved) { + joinGraph.removeEdge(edge.getLeftVertex(), edge.getRightVertex()); + } + + for (JoinEdge edge : willBeAdded) { + joinGraph.addEdge(edge.getLeftVertex(), edge.getRightVertex(), edge); + } + + vertexes.remove(bestPair.getLeftVertex()); + vertexes.remove(bestPair.getRightVertex()); + vertexes.add(newVertex); + } + + JoinNode joinTree = (JoinNode) vertexes.iterator().next().getCorrespondingNode(); +// // all generated nodes should be registered to corresponding blocks + block.registerNode(joinTree); + return new FoundJoinOrder(joinTree, getCost(joinTree)); // // Setup a remain relation set to be joined // // Why we should use LinkedHashSet? - it should keep the deterministic for the order of joins. @@ -141,38 +173,48 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo // // all generated nodes should be registered to corresponding blocks // block.registerNode(joinTree); // return new FoundJoinOrder(joinTree, getCost(joinTree)); - return null; } -// private static JoinNode createJoinNode(LogicalPlan plan, JoinEdge joinEdge) { -// LogicalNode left = joinEdge.getLeftRelation(); -// LogicalNode right = joinEdge.getRightRelation(); -// -// JoinNode joinNode = plan.createNode(JoinNode.class); -// -// if (PlannerUtil.isCommutativeJoin(joinEdge.getJoinType())) { -// // if only one operator is relation -// if ((left instanceof RelationNode) && !(right instanceof RelationNode)) { -// // for left deep -// joinNode.init(joinEdge.getJoinType(), right, left); -// } else { -// // if both operators are relation or if both are relations -// // we don't need to concern the left-right position. -// joinNode.init(joinEdge.getJoinType(), left, right); -// } -// } else { -// joinNode.init(joinEdge.getJoinType(), left, right); -// } -// -// Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), -// joinNode.getRightChild().getOutSchema()); -// joinNode.setInSchema(mergedSchema); -// joinNode.setOutSchema(mergedSchema); -// if (joinEdge.hasJoinQual()) { -// joinNode.setJoinQual(AlgebraicUtil.createSingletonExprFromCNF(joinEdge.getJoinQual())); -// } -// return joinNode; -// } + private void prepareUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List edges, + JoinedRelationsVertex vertex, boolean isLeftVertex, + Set willBeAdded, Set willBeRemoved) { + if (edges != null) { + for (JoinEdge edge : edges) { + if (!isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { + JoinNode newNode; + if (isLeftVertex) { + newNode = createJoinNode(plan, edge.getJoinType(), vertex, edge.getRightVertex(), + edge.getSingletonJoinQual()); + willBeAdded.add(new JoinEdge(newNode, vertex, edge.getRightVertex())); + } else { + newNode = createJoinNode(plan, edge.getJoinType(), edge.getLeftVertex(), vertex, + edge.getSingletonJoinQual()); + willBeAdded.add(new JoinEdge(newNode, edge.getLeftVertex(), vertex)); + } + block.registerNode(newNode); + } + willBeRemoved.add(edge); + } + } + } + + private static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, + EvalNode predicates) { + LogicalNode leftChild = left.getCorrespondingNode(); + LogicalNode rightChild = right.getCorrespondingNode(); + + JoinNode joinNode = plan.createNode(JoinNode.class); + joinNode.init(joinType, leftChild, rightChild); + + Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), + joinNode.getRightChild().getOutSchema()); + joinNode.setInSchema(mergedSchema); + joinNode.setOutSchema(mergedSchema); + if (predicates != null) { + joinNode.setJoinQual(predicates); + } + return joinNode; + } /** * Find the best join pair among all joinable operators in candidate set. @@ -184,7 +226,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraph joinGraph, Set vertexes) + private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; JoinEdge bestJoin = null; @@ -199,10 +241,15 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraph joinGraph, } context.reset(); - JoinEdge foundJoin = findJoin(context, joinGraph, outer, outer, inner); + JoinEdge foundJoin = findJoin(context, graphContext.getJoinGraph(), outer, outer, inner); if (foundJoin == null) { continue; } + Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( + graphContext.getJoinPredicateCandidates(), foundJoin); + if (!additionalPredicates.isEmpty()) { + foundJoin.addJoinPredicates(additionalPredicates); + } double cost = getCost(foundJoin); if (cost < minCost) { @@ -246,27 +293,35 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { + context.visited.add(begin); - } - - private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraph joinGraph, RelationVertex begin, - final RelationVertex leftTarget, final RelationVertex rightTarget) { - if (isEqualsOrCommutative(joinGraph, begin, leftTarget)) { - for (JoinEdge eachEdge : joinGraph.getOutgoingEdges(leftTarget)) { - if (isEqualsOrCommutative(joinGraph, eachEdge.getRightVertex(), rightTarget)) { - return eachEdge; + // Find the matching edge from begin + if (isEqualsOrExchangeable(joinGraph, begin, leftTarget)) { + List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); + if (edgesFromLeftTarget != null) { + for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { + if (isEqualsOrExchangeable(joinGraph, edgeFromLeftTarget.getRightVertex(), rightTarget)) { + return edgeFromLeftTarget; + } } } // not found return null; } else { - for (JoinVertex commutativeVertex : getAllCommutativeVertexes(joinGraph, begin)) { - for (Pair associativePair : getAssociativeEdges(context, joinGraph, commutativeVertex)) { - // every left edge is already checked above - JoinEdge rightEdge = associativePair.getSecond(); - JoinEdge found = findJoin(context, joinGraph, rightEdge.getLeftVertex(), leftTarget, rightTarget); - if (found != null) { - return found; + // move to right if associative + for (JoinVertex reacheableVertex : getAllReacheableVertexesByCommutativity(joinGraph, begin)) { + List edges = joinGraph.getOutgoingEdges(reacheableVertex); + if (edges != null) { + for (JoinEdge edge : edges) { + for (JoinEdge associativeEdge : getAllAssociativeEdges(joinGraph, edge)) { + JoinVertex willBeVisited = associativeEdge.getLeftVertex(); + if (!context.visited.contains(willBeVisited)) { + JoinEdge found = findJoin(context, joinGraph, associativeEdge.getLeftVertex(), leftTarget, rightTarget); + if (found != null) { + return found; + } + } + } } } } @@ -275,54 +330,79 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } } - public static boolean isEqualsOrCommutative(JoinGraph graph, RelationVertex v1, RelationVertex v2) { - if (v1.equals(v2) || isCommutative(graph, v1, v2)) { + private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge edge) { + Set associativeEdges = TUtil.newHashSet(); + // find all associative edge pairs which begin at the start vertex + JoinVertex start = edge.getRightVertex(); + List candidateEdges = graph.getOutgoingEdges(start); + if (candidateEdges != null) { + for (JoinEdge candidateEdge : candidateEdges) { + if (JoinOrderingUtil.isAssociativeJoin(edge.getJoinType(), candidateEdge.getJoinType())) { + associativeEdges.add(candidateEdge); + } + } + } + return associativeEdges; + } + + /** + * + * @param graph + * @param v1 + * @param v2 + * @return + */ + private static boolean isEqualsOrExchangeable(JoinGraph graph, JoinVertex v1, JoinVertex v2) { + for (JoinVertex commutative : getAllReacheableVertexesByCommutativity(graph, v1)) { + if (v2.equals(commutative)) { + return true; + } + } + return false; + } + + private static boolean isEqualsOrCommutative(JoinEdge edge1, JoinEdge edge2) { + if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { return true; - } else { - return false; } + return false; } - public static boolean isCommutative(JoinGraph graph, RelationVertex v1, RelationVertex v2) { - JoinEdge edge = graph.getEdge(v1, v2); - if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { + if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && + edge1.getRightVertex().equals(edge2.getLeftVertex()) && + edge1.getJoinSpec().equals(edge2.getJoinSpec()) && + PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { return true; } return false; } - public static Set getAllCommutativeVertexes(JoinGraph graph, RelationVertex from) { + private static Set getAllReacheableVertexesByCommutativity(JoinGraph graph, JoinVertex from) { Set founds = TUtil.newHashSet(); - founds.add(from); - getAllCommutativeVertexes(founds, graph, from); + getAllReacheableVertexesByCommutativity(founds, graph, from); return founds; } - private static void getAllCommutativeVertexes(Set founds, JoinGraph graph, - JoinVertex vertex) { - for (JoinEdge candidateEdge : graph.getOutgoingEdges(vertex)) { - if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType())) { - founds.add(candidateEdge.getRightVertex()); - getAllCommutativeVertexes(founds, tree, candidateEdge.getRightVertex()); + private static void getAllReacheableVertexesByCommutativity(Set founds, JoinGraph graph, + JoinVertex vertex) { + founds.add(vertex); + Set foundAtThis = TUtil.newHashSet(); + List candidatedEdges = graph.getOutgoingEdges(vertex); + if (candidatedEdges != null) { + for (JoinEdge candidateEdge : candidatedEdges) { + if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) + && !founds.contains(candidateEdge.getRightVertex())) { + foundAtThis.add(candidateEdge.getRightVertex()); + } } - } - } - - public static Set> getAssociativeEdges(JoinEdgeFinderContext context, JoinTree tree, - JoinVertex start) { - Set> associativeEdges = TUtil.newHashSet(); - // find all associative edge pairs which begin at the start vertex - for (JoinEdge leftEdge : tree.getOutgoingEdges(start)) { - JoinVertex willBeVisited = leftEdge.getRightVertex(); - if (!context.visited.contains(willBeVisited)) { - for (JoinEdge rightEdge : tree.getOutgoingEdges(willBeVisited)) { - if (JoinOrderingUtil.isAssociativeJoin(leftEdge.getJoinType(), rightEdge.getJoinType())) { - associativeEdges.add(new Pair(leftEdge, rightEdge)); - } + if (foundAtThis.size() > 0) { + founds.addAll(foundAtThis); + for (JoinVertex v : foundAtThis) { + getAllReacheableVertexesByCommutativity(founds, graph, v); } } } - return associativeEdges; } /** diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java index 3b3b1a0192..aaf3f1d3cf 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java @@ -22,6 +22,7 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.JoinSpec; import org.apache.tajo.util.TUtil; @@ -32,12 +33,14 @@ public class JoinEdge { private final JoinVertex leftVertex; private final JoinVertex rightVertex; private final Schema schema; + private final JoinNode correspondingJoinNode; - public JoinEdge(JoinSpec joinSpec, JoinVertex leftVertex, JoinVertex rightVertex) { - this.joinSpec = joinSpec; + public JoinEdge(JoinNode joinNode, JoinVertex leftVertex, JoinVertex rightVertex) { + this.joinSpec = joinNode.getJoinSpec(); this.leftVertex = leftVertex; this.rightVertex = rightVertex; - schema = SchemaUtil.merge(leftVertex.getSchema(), rightVertex.getSchema()); + this.schema = SchemaUtil.merge(leftVertex.getSchema(), rightVertex.getSchema()); + this.correspondingJoinNode = joinNode; } public JoinType getJoinType() { @@ -60,6 +63,10 @@ public Set getJoinQual() { return joinSpec.getPredicates(); } + public JoinSpec getJoinSpec() { + return this.joinSpec; + } + public EvalNode getSingletonJoinQual() { return joinSpec.getSingletonPredicate(); } @@ -80,4 +87,8 @@ public JoinVertex getRightVertex() { public Schema getSchema() { return schema; } + + public JoinNode getCorrespondingJoinNode() { + return correspondingJoinNode; + } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 551e483f92..ad820e6254 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -19,16 +19,22 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.JoinSpec; +import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.SimpleUndirectedGraph; +import java.util.List; +import java.util.Set; + /** * Left-deep graph */ -public class JoinGraph extends SimpleUndirectedGraph { +public class JoinGraph extends SimpleUndirectedGraph { - public JoinEdge addJoin(JoinSpec joinSpec, RelationVertex left, RelationVertex right) throws PlanningException { - JoinEdge edge = new JoinEdge(joinSpec, left, right); + public JoinEdge addJoin(JoinNode joinNode, JoinVertex left, JoinVertex right) throws PlanningException { + JoinEdge edge = new JoinEdge(joinNode, left, right); this.addEdge(left, right, edge); return edge; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java new file mode 100644 index 0000000000..397c6715ef --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.plan.joinorder; + +import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.util.TUtil; + +import java.util.Collection; +import java.util.Set; + +public class JoinGraphContext { + private JoinGraph joinGraph = new JoinGraph(); + private Set joinPredicateCandidates = TUtil.newHashSet(); + + public void setJoinGraph(JoinGraph joinGraph) { + this.joinGraph = joinGraph; + } + + public JoinGraph getJoinGraph() { + return joinGraph; + } + + public void addPredicateCandidates(Collection candidates) { + joinPredicateCandidates.addAll(candidates); + } + + public Set getJoinPredicateCandidates() { + return joinPredicateCandidates; + } +} \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java index 3b8bb740f4..5dde3603b2 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java @@ -41,6 +41,6 @@ public interface JoinOrderAlgorithm { * @return * @throws org.apache.tajo.plan.PlanningException */ - FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph) + FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext joinGraphContext) throws PlanningException; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java index 8d62b6036a..48f0d66ffd 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java @@ -3,8 +3,11 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.plan.logical.LogicalNode; +import java.util.Set; + public interface JoinVertex { Schema getSchema(); LogicalNode getCorrespondingNode(); + Set getRelations(); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index 2c5a4839bc..17b026831e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -1,31 +1,46 @@ package org.apache.tajo.plan.joinorder; -import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.SchemaUtil; -import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.util.TUtil; +import java.util.Set; + +/** + * The join order is fixed in this vertex. + */ public class JoinedRelationsVertex implements JoinVertex { + private final Set relations = TUtil.newHashSet(); private final JoinEdge joinEdge; - private final Schema schema; - private final JoinNode joinNode; // corresponding join node - public JoinedRelationsVertex(JoinEdge joinEdge, JoinNode joinNode) { + public JoinedRelationsVertex(JoinEdge joinEdge) { this.joinEdge = joinEdge; - this.schema = SchemaUtil.merge(joinEdge.getLeftVertex().getSchema(), - joinEdge.getRightVertex().getSchema()); - this.joinNode = joinNode; + findRelationVertexes(this.joinEdge); + } + + private void findRelationVertexes(JoinEdge edge) { + if (edge.getLeftVertex() instanceof JoinedRelationsVertex) { + JoinedRelationsVertex leftChild = (JoinedRelationsVertex) edge.getLeftVertex(); + findRelationVertexes(leftChild.getJoinEdge()); + } else { + relations.add((RelationVertex) edge.getLeftVertex()); + } + if (edge.getRightVertex() instanceof JoinedRelationsVertex) { + JoinedRelationsVertex rightChild = (JoinedRelationsVertex) edge.getRightVertex(); + findRelationVertexes(rightChild.getJoinEdge()); + } else { + relations.add((RelationVertex) edge.getRightVertex()); + } } public JoinEdge getJoinEdge() { - return this.joinEdge; + return joinEdge; } @Override public Schema getSchema() { - return schema; + return joinEdge.getSchema(); } @Override @@ -34,11 +49,12 @@ public String toString() { } public LogicalNode getCorrespondingNode() { - return joinNode; + return joinEdge.getCorrespondingJoinNode(); } - public JoinType getJoinType() { - return joinEdge.getJoinType(); + @Override + public Set getRelations() { + return relations; } @Override diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java index 25318049ab..4e1ba81278 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java @@ -21,6 +21,9 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.logical.RelationNode; +import org.apache.tajo.util.TUtil; + +import java.util.Set; public class RelationVertex implements JoinVertex{ @@ -58,4 +61,9 @@ public Schema getSchema() { public LogicalNode getCorrespondingNode() { return relationNode; } + + @Override + public Set getRelations() { + return TUtil.newHashSet(this); + } } From 213c09ba79b800c57397c55f1d4f5b96519f7f50 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 15 Mar 2015 13:30:54 +0900 Subject: [PATCH 03/43] TAJO-1352_3 --- .../apache/tajo/plan/LogicalOptimizer.java | 29 +++++++++---- .../GreedyHeuristicJoinOrderAlgorithm.java | 27 ++---------- .../tajo/plan/joinorder/JoinGraphContext.java | 4 ++ .../tajo/plan/joinorder/JoinOrderingUtil.java | 41 ++++++++++++++++++- 4 files changed, 67 insertions(+), 34 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 5357b945ca..14be93f4ad 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -118,6 +118,15 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // replace join node with FoundJoinOrder. JoinNode newJoinNode = order.getOrderedJoin(); + LogicalNode newNode = newJoinNode; + if (!joinGraphContext.getJoinPredicateCandidates().isEmpty()) { + Set remainings = joinGraphContext.getJoinPredicateCandidates(); + SelectionNode newSelection = plan.createNode(SelectionNode.class); + newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( + remainings.toArray(new EvalNode[remainings.size()]))); + newSelection.setChild(newJoinNode); + newNode = newSelection; + } JoinNode old = PlannerUtil.findTopNode(block.getRoot(), NodeType.JOIN); // TODO: collect all join predicates and set them at the top join node (?) @@ -131,7 +140,8 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } else { newJoinNode.setTargets(targets.toArray(new Target[targets.size()])); } - PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); + PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); +// PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); // End of replacement logic String optimizedOrder = JoinOrderStringBuilder.buildJoinOrderString(plan, block); @@ -193,8 +203,10 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical RelationNode leftChild = JoinOrderingUtil.findMostRightRelation(plan, block, joinNode.getLeftChild()); RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); - JoinEdge edge = context.getJoinGraph().addJoin(joinNode, - new RelationVertex(leftChild), new RelationVertex(rightChild)); + RelationVertex leftVertex = new RelationVertex(leftChild); + RelationVertex rightVertex = new RelationVertex(rightChild); + JoinNode newNode = JoinOrderingUtil.createJoinNode(plan, joinNode.getJoinType(), leftVertex, rightVertex, null); + JoinEdge edge = context.getJoinGraph().addJoin(newNode, leftVertex, rightVertex); // find all possible predicates for this join edge Set joinConditions = TUtil.newHashSet(); @@ -209,15 +221,14 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical } joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getJoinPredicateCandidates(), edge)); - if (!joinConditions.isEmpty()) { - if (edge.getJoinType() == JoinType.CROSS) { - edge.getJoinSpec().setType(JoinType.INNER); - } - edge.addJoinPredicates(joinConditions); + context.removePredicateCandidates(joinConditions); + edge = JoinOrderingUtil.addPredicates(edge, joinConditions); + if (edge.hasJoinQual()) { + newNode.setJoinQual(edge.getSingletonJoinQual()); } if (PlannerUtil.isCommutativeJoin(joinNode.getJoinType())) { - JoinEdge commutativeEdge = new JoinEdge(joinNode, + JoinEdge commutativeEdge = new JoinEdge(newNode, new RelationVertex(rightChild), new RelationVertex(leftChild)); commutativeEdge.addJoinPredicates(joinConditions); context.getJoinGraph().addEdge(commutativeEdge.getLeftVertex(), commutativeEdge.getRightVertex(), diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 7c9f89b4c8..a36c720f49 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -183,11 +183,11 @@ private void prepareUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List< if (!isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { JoinNode newNode; if (isLeftVertex) { - newNode = createJoinNode(plan, edge.getJoinType(), vertex, edge.getRightVertex(), + newNode = JoinOrderingUtil.createJoinNode(plan, edge.getJoinType(), vertex, edge.getRightVertex(), edge.getSingletonJoinQual()); willBeAdded.add(new JoinEdge(newNode, vertex, edge.getRightVertex())); } else { - newNode = createJoinNode(plan, edge.getJoinType(), edge.getLeftVertex(), vertex, + newNode = JoinOrderingUtil.createJoinNode(plan, edge.getJoinType(), edge.getLeftVertex(), vertex, edge.getSingletonJoinQual()); willBeAdded.add(new JoinEdge(newNode, edge.getLeftVertex(), vertex)); } @@ -198,24 +198,6 @@ private void prepareUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List< } } - private static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, - EvalNode predicates) { - LogicalNode leftChild = left.getCorrespondingNode(); - LogicalNode rightChild = right.getCorrespondingNode(); - - JoinNode joinNode = plan.createNode(JoinNode.class); - joinNode.init(joinType, leftChild, rightChild); - - Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), - joinNode.getRightChild().getOutSchema()); - joinNode.setInSchema(mergedSchema); - joinNode.setOutSchema(mergedSchema); - if (predicates != null) { - joinNode.setJoinQual(predicates); - } - return joinNode; - } - /** * Find the best join pair among all joinable operators in candidate set. * @@ -247,9 +229,8 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( graphContext.getJoinPredicateCandidates(), foundJoin); - if (!additionalPredicates.isEmpty()) { - foundJoin.addJoinPredicates(additionalPredicates); - } + graphContext.removePredicateCandidates(additionalPredicates); + foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); double cost = getCost(foundJoin); if (cost < minCost) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 397c6715ef..800c6f533d 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -40,6 +40,10 @@ public void addPredicateCandidates(Collection candidates) { joinPredicateCandidates.addAll(candidates); } + public void removePredicateCandidates(Collection willBeRemoved) { + joinPredicateCandidates.removeAll(willBeRemoved); + } + public Set getJoinPredicateCandidates() { return joinPredicateCandidates; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 12cfdf7ea3..ff25c12180 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -20,6 +20,8 @@ import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.Column; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.EvalNode; @@ -27,6 +29,7 @@ import org.apache.tajo.plan.expr.EvalType; import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.NodeType; import org.apache.tajo.plan.logical.RelationNode; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@ -61,6 +64,34 @@ public static boolean checkIfEvaluatedAtVertex(EvalNode evalNode, JoinEdge edge) return true; } + public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, + EvalNode predicates) { + LogicalNode leftChild = left.getCorrespondingNode(); + LogicalNode rightChild = right.getCorrespondingNode(); + + JoinNode joinNode = plan.createNode(JoinNode.class); + joinNode.init(joinType, leftChild, rightChild); + + Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), + joinNode.getRightChild().getOutSchema()); + joinNode.setInSchema(mergedSchema); + joinNode.setOutSchema(mergedSchema); + if (predicates != null) { + joinNode.setJoinQual(predicates); + } + return joinNode; + } + + public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { + if (!predicates.isEmpty()) { + if (edge.getJoinType() == JoinType.CROSS) { + edge.getJoinSpec().setType(JoinType.INNER); + } + edge.addJoinPredicates(predicates); + } + return edge; + } + /** * Associativity rules * @@ -158,11 +189,17 @@ private static class RelationNodeFinderContext { private static class RelationNodeFinder extends BasicLogicalPlanVisitor { @Override - public void postHook(LogicalPlan plan, LogicalNode node, Stack stack, RelationNodeFinderContext context) - throws PlanningException { + public LogicalNode visit(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode node, Stack stack) throws PlanningException { + if (node.getType() != NodeType.TABLE_SUBQUERY) { + super.visit(context, plan, block, node, stack); + } + if (node instanceof RelationNode) { context.founds.add((RelationNode) node); } + + return node; } @Override From 60d250dce16d11693c3a1b5a87cb04bb7102deb3 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 15 Mar 2015 14:47:28 +0900 Subject: [PATCH 04/43] TAJO-1352_3 --- .../tajo/engine/query/TestJoinQuery.java | 2 +- .../apache/tajo/plan/LogicalOptimizer.java | 7 +++- .../GreedyHeuristicJoinOrderAlgorithm.java | 40 +++++++++++-------- .../tajo/plan/joinorder/JoinGraphContext.java | 9 +++++ .../apache/tajo/plan/logical/JoinSpec.java | 3 +- .../rewrite/rules/FilterPushDownRule.java | 10 ++++- 6 files changed, 49 insertions(+), 22 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 9ab32ff19b..af6b2eb2b4 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -984,7 +984,7 @@ public final void testFullOuterJoinPredicationCaseByCase1() throws Exception { } } - private void createOuterJoinTestTable() throws Exception { + private void createOuterJoinTestTable() throws Exception { KeyValueSet tableOptions = new KeyValueSet(); tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 14be93f4ad..aaa6a66297 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -140,8 +140,8 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } else { newJoinNode.setTargets(targets.toArray(new Target[targets.size()])); } - PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); -// PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); +// PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); + PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); // End of replacement logic String optimizedOrder = JoinOrderStringBuilder.buildJoinOrderString(plan, block); @@ -207,6 +207,9 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical RelationVertex rightVertex = new RelationVertex(rightChild); JoinNode newNode = JoinOrderingUtil.createJoinNode(plan, joinNode.getJoinType(), leftVertex, rightVertex, null); JoinEdge edge = context.getJoinGraph().addJoin(newNode, leftVertex, rightVertex); + if (context.getMostLeftVertex() == null) { + context.setMostLeftVertex(leftVertex); + } // find all possible predicates for this join edge Set joinConditions = TUtil.newHashSet(); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index a36c720f49..f26370cf03 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -18,9 +18,6 @@ package org.apache.tajo.plan.joinorder; -import org.apache.tajo.algebra.JoinType; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.util.PlannerUtil; @@ -53,19 +50,23 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); + if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex())) { + graphContext.setMostLeftVertex(newVertex); + } + Set willBeRemoved = TUtil.newHashSet(); Set willBeAdded = TUtil.newHashSet(); - prepareUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getLeftVertex()), newVertex, true, + prepareGraphUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getLeftVertex()), newVertex, true, willBeAdded, willBeRemoved); - prepareUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getLeftVertex()), newVertex, false, + prepareGraphUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getLeftVertex()), newVertex, false, willBeAdded, willBeRemoved); - prepareUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getRightVertex()), newVertex, true, + prepareGraphUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getRightVertex()), newVertex, true, willBeAdded, willBeRemoved); - prepareUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getRightVertex()), newVertex, false, + prepareGraphUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getRightVertex()), newVertex, false, willBeAdded, willBeRemoved); for (JoinEdge edge : willBeRemoved) { @@ -175,9 +176,9 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo // return new FoundJoinOrder(joinTree, getCost(joinTree)); } - private void prepareUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List edges, - JoinedRelationsVertex vertex, boolean isLeftVertex, - Set willBeAdded, Set willBeRemoved) { + private void prepareGraphUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List edges, + JoinedRelationsVertex vertex, boolean isLeftVertex, + Set willBeAdded, Set willBeRemoved) { if (edges != null) { for (JoinEdge edge : edges) { if (!isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { @@ -223,7 +224,8 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } context.reset(); - JoinEdge foundJoin = findJoin(context, graphContext.getJoinGraph(), outer, outer, inner); + JoinEdge foundJoin = findJoin(context, graphContext.getJoinGraph(), graphContext.getMostLeftVertex(), + outer, inner); if (foundJoin == null) { continue; } @@ -277,11 +279,13 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join context.visited.add(begin); // Find the matching edge from begin - if (isEqualsOrExchangeable(joinGraph, begin, leftTarget)) { + if (begin.equals(leftTarget)) { +// if (isEqualsOrExchangeable(joinGraph, begin, leftTarget)) { List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); if (edgesFromLeftTarget != null) { for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { - if (isEqualsOrExchangeable(joinGraph, edgeFromLeftTarget.getRightVertex(), rightTarget)) { +// if (isEqualsOrExchangeable(joinGraph, edgeFromLeftTarget.getRightVertex(), rightTarget)) { + if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { return edgeFromLeftTarget; } } @@ -291,6 +295,7 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } else { // move to right if associative for (JoinVertex reacheableVertex : getAllReacheableVertexesByCommutativity(joinGraph, begin)) { + if (begin.equals(reacheableVertex)) continue; List edges = joinGraph.getOutgoingEdges(reacheableVertex); if (edges != null) { for (JoinEdge edge : edges) { @@ -318,7 +323,8 @@ private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge ed List candidateEdges = graph.getOutgoingEdges(start); if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { - if (JoinOrderingUtil.isAssociativeJoin(edge.getJoinType(), candidateEdge.getJoinType())) { + if (!isEqualsOrCommutative(edge, candidateEdge) && + JoinOrderingUtil.isAssociativeJoin(edge.getJoinType(), candidateEdge.getJoinType())) { associativeEdges.add(candidateEdge); } } @@ -369,9 +375,9 @@ private static void getAllReacheableVertexesByCommutativity(Set foun JoinVertex vertex) { founds.add(vertex); Set foundAtThis = TUtil.newHashSet(); - List candidatedEdges = graph.getOutgoingEdges(vertex); - if (candidatedEdges != null) { - for (JoinEdge candidateEdge : candidatedEdges) { + List candidateEdges = graph.getOutgoingEdges(vertex); + if (candidateEdges != null) { + for (JoinEdge candidateEdge : candidateEdges) { if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) && !founds.contains(candidateEdge.getRightVertex())) { foundAtThis.add(candidateEdge.getRightVertex()); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 800c6f533d..e28f508b4b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -25,6 +25,7 @@ import java.util.Set; public class JoinGraphContext { + private JoinVertex mostLeftVertex; private JoinGraph joinGraph = new JoinGraph(); private Set joinPredicateCandidates = TUtil.newHashSet(); @@ -47,4 +48,12 @@ public void removePredicateCandidates(Collection willBeRemoved) { public Set getJoinPredicateCandidates() { return joinPredicateCandidates; } + + public JoinVertex getMostLeftVertex() { + return mostLeftVertex; + } + + public void setMostLeftVertex(JoinVertex mostLeftVertex) { + this.mostLeftVertex = mostLeftVertex; + } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java index e418f4782b..a36631d056 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java @@ -51,11 +51,12 @@ public boolean hasPredicates() { } public void setPredicates(Set predicates) { + this.predicates.clear(); this.predicates.addAll(predicates); } public void setSingletonPredicate(EvalNode predicates) { - this.predicates.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(predicates))); + this.setPredicates(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(predicates))); } public EvalNode getSingletonPredicate() { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java index d7cd82e29a..a51478a1a7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java @@ -235,6 +235,7 @@ public LogicalNode visitJoin(FilterPushDownContext context, LogicalPlan plan, Lo List outerJoinPredicationEvals = new ArrayList(); List outerJoinFilterEvalsExcludePredication = new ArrayList(); + List innerJoinPredicates = TUtil.newList(); if (LogicalPlanner.isOuterJoin(joinNode.getJoinType())) { // TAJO-853 // In the case of top most JOIN, all filters except JOIN condition aren't pushed down. @@ -301,7 +302,13 @@ public LogicalNode visitJoin(FilterPushDownContext context, LogicalPlan plan, Lo } } } else { - context.pushingDownFilters.addAll(onConditions); + for (EvalNode eachOnEval: onConditions) { + if (EvalTreeUtil.isJoinQual(eachOnEval, false)) { + innerJoinPredicates.add(eachOnEval); + } else { + context.pushingDownFilters.add(eachOnEval); + } + } } LogicalNode left = joinNode.getLeftChild(); @@ -337,6 +344,7 @@ public LogicalNode visitJoin(FilterPushDownContext context, LogicalPlan plan, Lo matched.add(eval); } } + matched.addAll(innerJoinPredicates); } EvalNode qual = null; From f8638cf981954a51a5feefbf5de2982dc7c07078 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 15 Mar 2015 15:02:13 +0900 Subject: [PATCH 05/43] TAJO-1352_3 --- .../apache/tajo/plan/LogicalOptimizer.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index aaa6a66297..3c139d0e61 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -121,11 +121,21 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni LogicalNode newNode = newJoinNode; if (!joinGraphContext.getJoinPredicateCandidates().isEmpty()) { Set remainings = joinGraphContext.getJoinPredicateCandidates(); - SelectionNode newSelection = plan.createNode(SelectionNode.class); - newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( - remainings.toArray(new EvalNode[remainings.size()]))); - newSelection.setChild(newJoinNode); - newNode = newSelection; + LogicalNode topParent = PlannerUtil.findTopParentNode(block.getRoot(), NodeType.JOIN); + if (topParent.getType() == NodeType.SELECTION) { + SelectionNode topParentSelect = (SelectionNode) topParent; + Set filters = TUtil.newHashSet(); + filters.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(topParentSelect.getQual()))); + filters.addAll(remainings); + topParentSelect.setQual(AlgebraicUtil.createSingletonExprFromCNF( + filters.toArray(new EvalNode[filters.size()]))); + } else { + SelectionNode newSelection = plan.createNode(SelectionNode.class); + newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( + remainings.toArray(new EvalNode[remainings.size()]))); + newSelection.setChild(newJoinNode); + newNode = newSelection; + } } JoinNode old = PlannerUtil.findTopNode(block.getRoot(), NodeType.JOIN); @@ -140,8 +150,8 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } else { newJoinNode.setTargets(targets.toArray(new Target[targets.size()])); } -// PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); - PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); + PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); +// PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); // End of replacement logic String optimizedOrder = JoinOrderStringBuilder.buildJoinOrderString(plan, block); From 9ec987711d969be423d4dfb8de9bc07adf3b4082 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 15 Mar 2015 20:09:13 +0900 Subject: [PATCH 06/43] Finished join order improvement --- .../apache/tajo/plan/LogicalOptimizer.java | 21 +++- .../org/apache/tajo/plan/expr/InEval.java | 6 ++ .../tajo/plan/expr/RowConstantEval.java | 6 ++ .../GreedyHeuristicJoinOrderAlgorithm.java | 101 ++---------------- .../tajo/plan/joinorder/JoinVertex.java | 18 ++++ .../plan/joinorder/JoinedRelationsVertex.java | 18 ++++ .../apache/tajo/plan/util/PlannerUtil.java | 2 +- 7 files changed, 79 insertions(+), 93 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 3c139d0e61..459c5e82ce 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -31,6 +31,7 @@ import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.expr.EvalTreeUtil; import org.apache.tajo.plan.joinorder.*; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.rewrite.BaseLogicalPlanRewriteEngine; @@ -195,6 +196,16 @@ public static JoinGraphContext buildJoinGraph(LogicalPlan plan, LogicalPlan.Quer return joinGraphContext; } + @Override + public LogicalNode visit(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode node, Stack stack) throws PlanningException { + if (node.getType() != NodeType.TABLE_SUBQUERY) { + super.visit(context, plan, block, node, stack); + } + + return node; + } + @Override public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack stack) throws PlanningException { @@ -225,7 +236,15 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical Set joinConditions = TUtil.newHashSet(); if (joinNode.hasJoinQual()) { Set originPredicates = joinNode.getJoinSpec().getPredicates(); - joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(originPredicates, edge)); + for (EvalNode predicate : joinNode.getJoinSpec().getPredicates()) { + if (EvalTreeUtil.isJoinQual(block, leftVertex.getSchema(), rightVertex.getSchema(), predicate, false)) { + if (LogicalPlanner.checkIfBeEvaluatedAtJoin(block, predicate, newNode, false)) { + joinConditions.add(predicate); + } + } else { + joinConditions.add(predicate); + } + } // find impossible predicates originPredicates.removeAll(joinConditions); context.addPredicateCandidates(originPredicates); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java index 4dcc7bf4a3..b3c8a74dd7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java @@ -29,6 +29,7 @@ import org.apache.tajo.datum.NullDatum; import org.apache.tajo.storage.Tuple; +import java.util.Objects; import java.util.Set; public class InEval extends BinaryEval { @@ -80,6 +81,11 @@ public boolean equals(Object obj) { return false; } + @Override + public int hashCode() { + return Objects.hashCode(not); + } + public String toString() { return leftExpr + " IN (" + rightExpr + ")"; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java index 4a97e67b25..0c9d6e0ab3 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java @@ -18,6 +18,7 @@ package org.apache.tajo.plan.expr; +import com.google.common.base.Objects; import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; @@ -75,6 +76,11 @@ public boolean equals(Object obj) { return false; } + @Override + public int hashCode() { + return Objects.hashCode(values); + } + public String toString() { return TUtil.arrayToString(values); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index f26370cf03..06df33d57e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -50,7 +50,9 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); - if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex())) { + if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) + || (PlannerUtil.isCommutativeJoin(bestPair.getJoinType()) + && bestPair.getRightVertex().equals(graphContext.getMostLeftVertex()))) { graphContext.setMostLeftVertex(newVertex); } @@ -83,97 +85,9 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo } JoinNode joinTree = (JoinNode) vertexes.iterator().next().getCorrespondingNode(); -// // all generated nodes should be registered to corresponding blocks + // all generated nodes should be registered to corresponding blocks block.registerNode(joinTree); return new FoundJoinOrder(joinTree, getCost(joinTree)); - -// // Setup a remain relation set to be joined -// // Why we should use LinkedHashSet? - it should keep the deterministic for the order of joins. -// // Otherwise, join orders can be different even if join costs are the same to each other. -// Set remainRelations = new LinkedHashSet(); -// for (RelationNode relation : block.getRelations()) { -// remainRelations.add(relation); -// } -// -// LogicalNode latestJoin; -// JoinEdge bestPair; -// -// while (remainRelations.size() > 1) { -// Set checkingRelations = new LinkedHashSet(); -// -// for (LogicalNode relation : remainRelations) { -// Collection relationStrings = PlannerUtil.getRelationLineageWithinQueryBlock(plan, relation); -// List joinEdges = new ArrayList(); -// String relationCollection = TUtil.collectionToString(relationStrings, ","); -// List joinEdgesForGiven = joinGraph.getIncomingEdges(relationCollection); -// if (joinEdgesForGiven != null) { -// joinEdges.addAll(joinEdgesForGiven); -// } -// if (relationStrings.size() > 1) { -// for (String relationString: relationStrings) { -// joinEdgesForGiven = joinGraph.getIncomingEdges(relationString); -// if (joinEdgesForGiven != null) { -// joinEdges.addAll(joinEdgesForGiven); -// } -// } -// } -// -// // check if the relation is the last piece of outer join -// boolean endInnerRelation = false; -// for (JoinEdge joinEdge: joinEdges) { -// switch(joinEdge.getJoinType()) { -// case LEFT_ANTI: -// case RIGHT_ANTI: -// case LEFT_SEMI: -// case RIGHT_SEMI: -// case LEFT_OUTER: -// case RIGHT_OUTER: -// case FULL_OUTER: -// endInnerRelation = true; -// if (checkingRelations.size() <= 1) { -// checkingRelations.add(relation); -// } -// break; -// } -// } -// -// if (endInnerRelation) { -// break; -// } -// -// checkingRelations.add(relation); -// } -// -// remainRelations.removeAll(checkingRelations); -// -// // Find the best join pair among all joinable operators in candidate set. -// while (checkingRelations.size() > 1) { -// LinkedHashSet removingJoinEdges = new LinkedHashSet(); -// bestPair = getBestPair(plan, joinGraph, checkingRelations, removingJoinEdges); -// -// checkingRelations.remove(bestPair.getLeftRelation()); -// checkingRelations.remove(bestPair.getRightRelation()); -// for (String[] joinEdge: removingJoinEdges) { -// // remove the edge of the best pair from join graph -// joinGraph.removeEdge(joinEdge[0], joinEdge[1]); -// } -// -// latestJoin = createJoinNode(plan, bestPair); -// checkingRelations.add(latestJoin); -// -// // all logical nodes should be registered to corresponding blocks -// block.registerNode(latestJoin); -// } -// -// // new Logical block should be the first entry of new Set -// checkingRelations.addAll(remainRelations); -// remainRelations = checkingRelations; -// } -// -// JoinNode joinTree = (JoinNode) remainRelations.iterator().next(); -// // all generated nodes should be registered to corresponding blocks -// block.registerNode(joinTree); -// return new FoundJoinOrder(joinTree, getCost(joinTree)); } private void prepareGraphUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List edges, @@ -231,7 +145,6 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( graphContext.getJoinPredicateCandidates(), foundJoin); - graphContext.removePredicateCandidates(additionalPredicates); foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); double cost = getCost(foundJoin); @@ -253,8 +166,14 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } if (bestNonCrossJoin != null) { + if (bestNonCrossJoin.hasJoinQual()) { + graphContext.removePredicateCandidates(bestNonCrossJoin.getJoinQual()); + } return bestNonCrossJoin; } else { + if (bestJoin.hasJoinQual()) { + graphContext.removePredicateCandidates(bestJoin.getJoinQual()); + } return bestJoin; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java index 48f0d66ffd..188964c625 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.tajo.plan.joinorder; import org.apache.tajo.catalog.Schema; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index 17b026831e..dd7c2964ac 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.tajo.plan.joinorder; import org.apache.tajo.catalog.Schema; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 0fbd3593ad..a1a7b723bc 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -448,7 +448,7 @@ public static T findTopParentNode(LogicalNode node, Node Preconditions.checkNotNull(type); ParentNodeFinder finder = new ParentNodeFinder(type); - node.postOrder(finder); + node.preOrder(finder); if (finder.getFoundNodes().size() == 0) { return null; From d774b455b89cc2cbf38f1fd37c987e43bfc57072 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Mon, 16 Mar 2015 20:37:15 +0900 Subject: [PATCH 07/43] TAJO-1352_4 --- .../GreedyHeuristicJoinOrderAlgorithm.java | 56 ++++++++++++++----- .../apache/tajo/plan/util/PlannerUtil.java | 2 +- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 06df33d57e..6fe68f5d8a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -198,22 +198,36 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join context.visited.add(begin); // Find the matching edge from begin - if (begin.equals(leftTarget)) { -// if (isEqualsOrExchangeable(joinGraph, begin, leftTarget)) { - List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); - if (edgesFromLeftTarget != null) { - for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { -// if (isEqualsOrExchangeable(joinGraph, edgeFromLeftTarget.getRightVertex(), rightTarget)) { - if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { - return edgeFromLeftTarget; + Set reacheableVertexes = getAllReacheableVertexesByCommutativity(joinGraph, begin); + + for (JoinVertex reacheable : reacheableVertexes) { + if (reacheable.equals(leftTarget)) { + List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); + if (edgesFromLeftTarget != null) { + for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { + if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { + return edgeFromLeftTarget; + } } } } - // not found - return null; - } else { + } + +// if (begin.equals(leftTarget)) { +// List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); +// if (edgesFromLeftTarget != null) { +// for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { +// if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { +// return edgeFromLeftTarget; +// } +// } +// } +// // not found +// return null; +// } else { // move to right if associative - for (JoinVertex reacheableVertex : getAllReacheableVertexesByCommutativity(joinGraph, begin)) { +// for (JoinVertex reacheableVertex : getAllReacheableVertexesByCommutativity(joinGraph, begin)) { + for (JoinVertex reacheableVertex : reacheableVertexes) { if (begin.equals(reacheableVertex)) continue; List edges = joinGraph.getOutgoingEdges(reacheableVertex); if (edges != null) { @@ -232,7 +246,7 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } // not found return null; - } +// } } private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge edge) { @@ -299,11 +313,23 @@ private static void getAllReacheableVertexesByCommutativity(Set foun for (JoinEdge candidateEdge : candidateEdges) { if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) && !founds.contains(candidateEdge.getRightVertex())) { - foundAtThis.add(candidateEdge.getRightVertex()); + List rightEdgesOfCandidate = graph.getOutgoingEdges(candidateEdge.getRightVertex()); + boolean reacheable = true; + if (rightEdgesOfCandidate != null) { + for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { + if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { + reacheable = false; + break; + } + } + } + if (reacheable) { + foundAtThis.add(candidateEdge.getRightVertex()); + } } } if (foundAtThis.size() > 0) { - founds.addAll(foundAtThis); +// founds.addAll(foundAtThis); for (JoinVertex v : foundAtThis) { getAllReacheableVertexesByCommutativity(founds, graph, v); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index a1a7b723bc..97315be159 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -732,7 +732,7 @@ public static T clone(LogicalPlan plan, LogicalNode node } public static boolean isCommutativeJoin(JoinType joinType) { - return joinType == JoinType.INNER; + return joinType == JoinType.INNER || joinType == JoinType.CROSS; } public static boolean existsAggregationFunction(Expr expr) throws PlanningException { From 140bc3de2faf227dd5cbd84d81c5368efa1fd587 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 17 Mar 2015 00:10:22 +0900 Subject: [PATCH 08/43] TAJO-1352_4 --- .../tajo/engine/planner/global/TestBroadcastJoinPlan.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index eb92bcfe8f..49c6dcc698 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -175,9 +175,9 @@ public void tearDown() throws Exception { @Test public final void testBroadcastJoin() throws IOException, PlanningException { - String query = "select count(*) from large1 " + - "join small1 on large1_id = small1_id " + - "join small2 on small1_id = small2_id"; + String query = "select count(*) from small1 " + + "join small2 on small1_id = small2_id " + + "join large1 on large1_id = small1_id"; LogicalPlanner planner = new LogicalPlanner(catalog); LogicalOptimizer optimizer = new LogicalOptimizer(conf); From 7ac215a283094356909ce3220eb8cf9d9b6af629 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 17 Mar 2015 14:04:43 +0900 Subject: [PATCH 09/43] TAJO-1352_4 --- .../GreedyHeuristicJoinOrderAlgorithm.java | 4 +++- .../tajo/plan/joinorder/JoinOrderingUtil.java | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 6fe68f5d8a..cf576f71e5 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -317,7 +317,9 @@ private static void getAllReacheableVertexesByCommutativity(Set foun boolean reacheable = true; if (rightEdgesOfCandidate != null) { for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { - if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { +// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { + if (!JoinOrderingUtil.isAssociativeJoin(candidateEdge.getJoinType(), + rightEdgeOfCandidate.getJoinType())) { reacheable = false; break; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index ff25c12180..e40055e2c9 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -31,6 +31,7 @@ import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.logical.NodeType; import org.apache.tajo.plan.logical.RelationNode; +import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@ -70,7 +71,20 @@ public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinV LogicalNode rightChild = right.getCorrespondingNode(); JoinNode joinNode = plan.createNode(JoinNode.class); - joinNode.init(joinType, leftChild, rightChild); + + if (PlannerUtil.isCommutativeJoin(joinType)) { + // if only one operator is relation + if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { + // for left deep + joinNode.init(joinType, rightChild, leftChild); + } else { + // if both operators are relation or if both are relations + // we don't need to concern the left-right position. + joinNode.init(joinType, leftChild, rightChild); + } + } else { + joinNode.init(joinType, leftChild, rightChild); + } Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), joinNode.getRightChild().getOutSchema()); From 5e4de3d2b735fd907f64a27e02c74873c54eb95d Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 17 Mar 2015 17:10:22 +0900 Subject: [PATCH 10/43] TAJO-1352_4 --- .../engine/planner/QueryPlanTestCaseBase.java | 260 ++++++++++++++++++ .../planner/TajoPlanTestingUtility.java | 134 +++++++++ .../engine/planner/TestJoinOrderOptimize.java | 38 +++ .../tajo/engine/planner/TpchPlanTestBase.java | 112 ++++++++ .../planner/global/TestBroadcastJoinPlan.java | 10 +- .../TestJoinOrderOptimize/testJoin1.plan | 0 .../testTwoPartJoin.plan | 0 .../TestJoinOrderOptimize/testTwoPartJoin.sql | 15 + .../GreedyHeuristicJoinOrderAlgorithm.java | 17 +- .../tajo/plan/joinorder/JoinOrderingUtil.java | 7 +- 10 files changed, 578 insertions(+), 15 deletions(-) create mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java create mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java create mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java create mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoin1.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java new file mode 100644 index 0000000000..e575e35a08 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java @@ -0,0 +1,260 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.engine.planner; + +import com.google.protobuf.ServiceException; +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.tajo.TajoConstants; +import org.apache.tajo.catalog.CatalogService; +import org.apache.tajo.catalog.CatalogUtil; +import org.apache.tajo.cli.tsql.ParsedResult; +import org.apache.tajo.cli.tsql.SimpleParser; +import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.storage.StorageUtil; +import org.apache.tajo.util.FileUtil; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.rules.TestName; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +public class QueryPlanTestCaseBase { + private static final Log LOG = LogFactory.getLog(QueryPlanTestCaseBase.class); + protected static final TpchPlanTestBase testBase; + protected static final CatalogService catalog; + protected static TajoConf conf; + + /** the base path of dataset directories */ + protected static final Path datasetBasePath; + /** the base path of query directories */ + protected static final Path queryBasePath; + /** the base path of result directories */ + protected static final Path resultBasePath; + + static { + testBase = TpchPlanTestBase.getInstance(); + conf = testBase.getUtilility().getConf(); + catalog = testBase.getUtilility().getCatalog(); + + URL datasetBaseURL = ClassLoader.getSystemResource("dataset"); + datasetBasePath = new Path(datasetBaseURL.toString()); + URL queryBaseURL = ClassLoader.getSystemResource("queries"); + queryBasePath = new Path(queryBaseURL.toString()); + URL resultBaseURL = ClassLoader.getSystemResource("plans"); + resultBasePath = new Path(resultBaseURL.toString()); + } + + /** It transiently contains created tables for the running test class. */ + private static String currentDatabase; + private static Set createdTableGlobalSet = new HashSet(); + // queries and results directory corresponding to subclass class. + protected Path currentQueryPath; + protected Path currentResultPath; + protected Path currentDatasetPath; + + // for getting a method name + @Rule + public TestName name = new TestName(); + + @BeforeClass + public static void setUpClass() throws Exception { + conf = testBase.getUtilility().getConf(); + } + + @AfterClass + public static void tearDownClass() throws ServiceException { + for (String tableName : createdTableGlobalSet) { + String denormalizedName = CatalogUtil.denormalizeIdentifier(tableName); + if (catalog.existsTable(denormalizedName)) { + catalog.dropTable(denormalizedName); + } + } + createdTableGlobalSet.clear(); + + // if the current database is "default", shouldn't drop it. + if (!currentDatabase.equals(TajoConstants.DEFAULT_DATABASE_NAME)) { + for (String tableName : catalog.getAllTableNames(currentDatabase)) { + if (catalog.existsTable(tableName)) { + catalog.dropTable(tableName); + } + } + + catalog.dropDatabase(currentDatabase); + } + } + + @Before + public void printTestName() { + /* protect a travis stalled build */ + System.out.println("Run: " + name.getMethodName()); + } + + public QueryPlanTestCaseBase() { + this.currentDatabase = getClass().getSimpleName(); + init(); + } + + public QueryPlanTestCaseBase(String currentDatabase) { + this.currentDatabase = currentDatabase; + init(); + } + + private void init() { + String className = getClass().getSimpleName(); + currentQueryPath = new Path(queryBasePath, className); + currentResultPath = new Path(resultBasePath, className); + currentDatasetPath = new Path(datasetBasePath, className); + + // if the current database is "default", we don't need create it because it is already prepated at startup time. + if (!currentDatabase.equals(TajoConstants.DEFAULT_DATABASE_NAME)) { +// String denormalizedDatabaseName = CatalogUtil.denormalizeIdentifier(currentDatabase); + if (!catalog.existDatabase(currentDatabase)) { + catalog.createDatabase(currentDatabase, TajoConstants.DEFAULT_TABLESPACE_NAME); + } + } + + conf.set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); + } + + public String getCurrentDatabase() { + return currentDatabase; + } + + protected String executeString(String sql) throws Exception { + return testBase.execute(sql); + } + + /** + * Execute a query contained in the file located in src/test/resources/results/ClassName/MethodName. + * ClassName and MethodName will be replaced by actual executed class and methods. + * + * @return ResultSet of query execution. + */ + public String executeQuery() throws Exception { + return executeFile(getMethodName() + ".sql"); + } + + protected String getMethodName() { + String methodName = name.getMethodName(); + // In the case of parameter execution name's pattern is methodName[0] + if (methodName.endsWith("]")) { + methodName = methodName.substring(0, methodName.length() - 3); + } + return methodName; + } + + /** + * Execute a query contained in the given named file. This methods tries to find the given file within the directory + * src/test/resources/results/ClassName. + * + * @param queryFileName The file name to be used to execute a query. + * @return ResultSet of query execution. + */ + public String executeFile(String queryFileName) throws Exception { + Path queryFilePath = getQueryFilePath(queryFileName); + + List parsedResults = SimpleParser.parseScript(FileUtil.readTextFile(new File(queryFilePath.toUri()))); + if (parsedResults.size() > 1) { + assertNotNull("This script \"" + queryFileName + "\" includes two or more queries"); + } + + int idx = 0; + for (; idx < parsedResults.size() - 1; idx++) { + testBase.execute(parsedResults.get(idx).getHistoryStatement()); + } + + String result = testBase.execute(parsedResults.get(idx).getHistoryStatement()); + assertNotNull("Query succeeded test", result); + return result; + } + + private Path getQueryFilePath(String fileName) throws IOException { + Path queryFilePath = StorageUtil.concatPath(currentQueryPath, fileName); + FileSystem fs = currentQueryPath.getFileSystem(testBase.getUtilility().getConf()); + assertTrue(queryFilePath.toString() + " existence check", fs.exists(queryFilePath)); + return queryFilePath; + } + + private Path getResultFile(String fileName) throws IOException { + Path resultPath = StorageUtil.concatPath(currentResultPath, fileName); + FileSystem fs = currentResultPath.getFileSystem(testBase.getUtilility().getConf()); + assertTrue(resultPath.toString() + " existence check", fs.exists(resultPath)); + return resultPath; + } + + private Path getDataSetFile(String fileName) throws IOException { + Path dataFilePath = StorageUtil.concatPath(currentDatasetPath, fileName); + FileSystem fs = currentDatasetPath.getFileSystem(testBase.getUtilility().getConf()); + assertTrue(dataFilePath.toString() + " existence check", fs.exists(dataFilePath)); + return dataFilePath; + } + + /** + * Assert the equivalence between the expected result and an actual query result. + * If it isn't it throws an AssertionError. + * + * @param result Query result to be compared. + */ + public final void assertPlan(String result) throws IOException { + assertPlan("Result Verification", result, getMethodName() + ".plan"); + } + + /** + * Assert the equivalence between the expected result and an actual query result. + * If it isn't it throws an AssertionError. + * + * @param result Query result to be compared. + * @param resultFileName The file name containing the result to be compared + */ + public final void assertPlan(String result, String resultFileName) throws IOException { + assertPlan("Result Verification", result, resultFileName); + } + + public final void assertPlan(String message, String result, String resultFileName) throws IOException { + FileSystem fs = currentQueryPath.getFileSystem(testBase.getUtilility().getConf()); + Path resultFile = getResultFile(resultFileName); + try { + verifyPlan(message, result, resultFile); + } catch (SQLException e) { + throw new IOException(e); + } + } + + private void verifyPlan(String message, String res, Path resultFile) throws SQLException, IOException { + String actualResult = res; + String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); + assertEquals(message, expectedResult.trim(), actualResult.trim()); + } +} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java new file mode 100644 index 0000000000..d7171b016e --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -0,0 +1,134 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.engine.planner; + +import com.sun.org.apache.commons.logging.Log; +import com.sun.org.apache.commons.logging.LogFactory; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.tajo.*; +import org.apache.tajo.algebra.Expr; +import org.apache.tajo.benchmark.TPCH; +import org.apache.tajo.catalog.*; +import org.apache.tajo.catalog.proto.CatalogProtos; +import org.apache.tajo.catalog.statistics.TableStats; +import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.engine.function.FunctionLoader; +import org.apache.tajo.engine.parser.SQLAnalyzer; +import org.apache.tajo.engine.planner.global.GlobalPlanner; +import org.apache.tajo.engine.planner.global.MasterPlan; +import org.apache.tajo.engine.query.QueryContext; +import org.apache.tajo.plan.LogicalOptimizer; +import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.LogicalPlanner; +import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.util.KeyValueSet; + +import java.io.IOException; + +import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME; +import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME; + +public class TajoPlanTestingUtility { + private static final Log LOG = LogFactory.getLog(TajoPlanTestingUtility.class); + + private TajoConf conf; + private TajoTestingCluster util; + private CatalogService catalog; + private SQLAnalyzer analyzer; + private QueryContext defaultContext; + private LogicalPlanner planner; + private LogicalOptimizer optimizer; + private GlobalPlanner globalPlanner; + + public void setup(String[] names, + String[] tablepaths, + Schema[] schemas, + KeyValueSet option) throws Exception { + util = new TajoTestingCluster(); + conf = util.getConfiguration(); + conf.setLongVar(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD, 500 * 1024); + conf.setBoolVar(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED, true); + + catalog = util.startCatalogCluster().getCatalog(); + catalog.createTablespace(DEFAULT_TABLESPACE_NAME, conf.getVar(TajoConf.ConfVars.WAREHOUSE_DIR)); + catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); + util.getMiniCatalogCluster().getCatalogServer().reloadBuiltinFunctions(FunctionLoader.findLegacyFunctions()); + + FileSystem fs = FileSystem.getLocal(conf); + Path rootDir = TajoConf.getWarehouseDir(conf); + fs.mkdirs(rootDir); + for (int i = 0; i < tablepaths.length; i++) { + Path localPath = new Path(tablepaths[i]); + Path tablePath = new Path(rootDir, names[i]); + fs.mkdirs(tablePath); + Path dfsPath = new Path(tablePath, localPath.getName()); + fs.copyFromLocalFile(localPath, dfsPath); + TableMeta meta = CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option); + + // Add fake table statistic data to tables. + // It gives more various situations to unit tests. + TableStats stats = new TableStats(); + stats.setNumBytes(TPCH.tableVolumes.get(names[i])); + TableDesc tableDesc = new TableDesc( + CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), schemas[i], meta, + tablePath.toUri()); + tableDesc.setStats(stats); + catalog.createTable(tableDesc); + } + + defaultContext = LocalTajoTestingUtility.createDummyContext(conf); + analyzer = new SQLAnalyzer(); + planner = new LogicalPlanner(catalog); + optimizer = new LogicalOptimizer(conf); + globalPlanner = new GlobalPlanner(conf, catalog); + } + + public void shutdown() { + util.shutdownCatalogCluster(); + } + + public String execute(String query) throws PlanningException, IOException { + Expr expr = analyzer.parse(query); + LogicalPlan plan = planner.createPlan(defaultContext, expr); + optimizer.optimize(plan); + + QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0); + MasterPlan masterPlan = new MasterPlan(queryId, defaultContext, plan); + globalPlanner.build(masterPlan); + + StringBuilder sb = new StringBuilder("********** Logical plan **********").append("\n\n"); + sb.append(masterPlan.getLogicalPlan().getLogicalPlanAsString()).append("\n\n"); + sb.append("********** Master plan **********").append("\n\n").append(masterPlan.toString()); + + return sb.toString(); + } + + public TajoConf getConf() { + return conf; + } + + public CatalogService getCatalog() { + return catalog; + } + + public SQLAnalyzer getSQLAnalyzer() { + return analyzer; + } +} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java new file mode 100644 index 0000000000..ed93948037 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -0,0 +1,38 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.engine.planner; + +import org.junit.Test; + +public class TestJoinOrderOptimize extends QueryPlanTestCaseBase { + + @Test + public final void test() throws Exception { + String query = "select count(*) from nation, region where n_regionkey = r_regionkey "; + + System.out.println(executeString(query)); + } + + @Test + public final void testTwoPartJoin() throws Exception { + String plan = executeQuery(); + System.out.println(plan); + assertPlan(plan); + } +} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java new file mode 100644 index 0000000000..d0853603a2 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java @@ -0,0 +1,112 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.engine.planner; + +import com.google.common.collect.Maps; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.tajo.benchmark.TPCH; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.storage.StorageConstants; +import org.apache.tajo.util.FileUtil; +import org.apache.tajo.util.KeyValueSet; + +import java.io.File; +import java.io.IOException; +import java.util.Map; + +public class TpchPlanTestBase { + private static final Log LOG = LogFactory.getLog(TpchPlanTestBase.class); + + String [] names; + String [] paths; + String [][] tables; + Schema[] schemas; + Map nameMap = Maps.newHashMap(); + protected TPCH tpch; + protected TajoPlanTestingUtility util; + + private static TpchPlanTestBase testBase; + + static { + try { + testBase = new TpchPlanTestBase(); + testBase.setUp(); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + } + } + + private TpchPlanTestBase() throws IOException { + names = new String[] {"customer", "lineitem", "nation", "orders", "part", "partsupp", "region", "supplier", "empty_orders"}; + paths = new String[names.length]; + for (int i = 0; i < names.length; i++) { + nameMap.put(names[i], i); + } + + tpch = new TPCH(); + tpch.loadSchemas(); + tpch.loadQueries(); + + schemas = new Schema[names.length]; + for (int i = 0; i < names.length; i++) { + schemas[i] = tpch.getSchema(names[i]); + } + + tables = new String[names.length][]; + File file; + for (int i = 0; i < names.length; i++) { + file = TPCH.getDataFile(names[i]); + tables[i] = FileUtil.readTextFile(file).split("\n"); + paths[i] = file.getAbsolutePath(); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + private void setUp() throws Exception { + util = new TajoPlanTestingUtility(); + KeyValueSet opt = new KeyValueSet(); + opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); + util.setup(names, paths, schemas, opt); + } + + public static TpchPlanTestBase getInstance() { + return testBase; + } + + public String execute(String query) throws Exception { + return util.execute(query); + } + + public TajoPlanTestingUtility getUtilility() { + return util; + } + + public void tearDown() throws IOException { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + util.shutdown(); + } +} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index 49c6dcc698..990b96240d 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -109,7 +109,7 @@ public void setUp() throws Exception { Schema largeTable2Schema = new Schema(); largeTable2Schema.addColumn("large2_id", TajoDataTypes.Type.INT4); largeTable2Schema.addColumn("large2_contents", TajoDataTypes.Type.TEXT); - largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024); //1M + largeTable2 = makeTestData("default.large2", largeTable2Schema, 2048 * 1024); //2M Schema largeTable3Schema = new Schema(); largeTable3Schema.addColumn("large3_id", TajoDataTypes.Type.INT4); @@ -361,13 +361,13 @@ public final void testTwoBroadcastJoin() throws IOException, PlanningException { Collection broadcastTables = eb.getBroadcastTables(); assertEquals(1, broadcastTables.size()); - assertTrue(!broadcastTables.contains("default.large1")); - assertTrue(broadcastTables.contains("default.small1")); + assertTrue(!broadcastTables.contains("default.large2")); + assertTrue(broadcastTables.contains("default.small2")); } else if(index == 1) { Collection broadcastTables = eb.getBroadcastTables(); assertEquals(1, broadcastTables.size()); - assertTrue(!broadcastTables.contains("default.large2")); - assertTrue(broadcastTables.contains("default.small2")); + assertTrue(!broadcastTables.contains("default.large1")); + assertTrue(broadcastTables.contains("default.small1")); } index++; } diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoin1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoin1.plan new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql new file mode 100644 index 0000000000..d30c1ed642 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql @@ -0,0 +1,15 @@ +select + l_orderkey, + p_name, + n_name +from + lineitem, + orders, + part, + customer, + nation +where + l_orderkey = o_orderkey + and l_partkey = p_partkey + and o_custkey = c_custkey + and c_nationkey = n_nationkey \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index cf576f71e5..95a2d17dfa 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -200,14 +200,12 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join // Find the matching edge from begin Set reacheableVertexes = getAllReacheableVertexesByCommutativity(joinGraph, begin); - for (JoinVertex reacheable : reacheableVertexes) { - if (reacheable.equals(leftTarget)) { - List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); - if (edgesFromLeftTarget != null) { - for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { - if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { - return edgeFromLeftTarget; - } + if (reacheableVertexes.contains(leftTarget)) { + List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); + if (edgesFromLeftTarget != null) { + for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { + if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { + return edgeFromLeftTarget; } } } @@ -318,7 +316,8 @@ private static void getAllReacheableVertexesByCommutativity(Set foun if (rightEdgesOfCandidate != null) { for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { // if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { - if (!JoinOrderingUtil.isAssociativeJoin(candidateEdge.getJoinType(), + if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && + !JoinOrderingUtil.isAssociativeJoin(candidateEdge.getJoinType(), rightEdgeOfCandidate.getJoinType())) { reacheable = false; break; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index e40055e2c9..940202c74f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -135,6 +135,11 @@ public static boolean isAssociativeJoin(JoinType leftType, JoinType rightType) { return true; } + if (leftType == JoinType.INNER && rightType == JoinType.CROSS || + leftType == JoinType.CROSS && rightType == JoinType.INNER) { + return true; + } + if (leftType == JoinType.RIGHT_OUTER) { return true; } @@ -146,7 +151,7 @@ public static boolean isAssociativeJoin(JoinType leftType, JoinType rightType) { return false; } - if (leftType == JoinType.INNER) { + if ((leftType == JoinType.INNER) || leftType == JoinType.CROSS) { if (rightType == JoinType.LEFT_OUTER) { return true; } else { From 3dca1b763a4a3d4ac9bd9f4541754bef8628f5cf Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 18 Mar 2015 10:36:08 +0900 Subject: [PATCH 11/43] TAJO-1352_4 --- .../GreedyHeuristicJoinOrderAlgorithm.java | 56 ++++++++++++------- .../tajo/plan/joinorder/JoinOrderingUtil.java | 4 +- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 95a2d17dfa..9ebdb55f5a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -47,7 +47,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdgeFinderContext context = new JoinEdgeFinderContext(); JoinGraph joinGraph = graphContext.getJoinGraph(); while (vertexes.size() > 1) { - JoinEdge bestPair = getBestPair(context, graphContext, vertexes); + JoinEdge bestPair = getBestPair(plan, block, context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) @@ -123,7 +123,8 @@ private void prepareGraphUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) + private JoinEdge getBestPair(LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; JoinEdge bestJoin = null; @@ -138,8 +139,8 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } context.reset(); - JoinEdge foundJoin = findJoin(context, graphContext.getJoinGraph(), graphContext.getMostLeftVertex(), - outer, inner); + JoinEdge foundJoin = findJoin(plan, block, context, graphContext.getJoinGraph(), + graphContext.getMostLeftVertex(), outer, inner); if (foundJoin == null) { continue; } @@ -191,21 +192,26 @@ public void reset() { * * @return If there is no join condition between two relation, it returns NULL value. */ - private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraph joinGraph, JoinVertex begin, + private static JoinEdge findJoin(final LogicalPlan plan, final LogicalPlan.QueryBlock block, + final JoinEdgeFinderContext context, final JoinGraph joinGraph, JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { context.visited.add(begin); // Find the matching edge from begin - Set reacheableVertexes = getAllReacheableVertexesByCommutativity(joinGraph, begin); + Set interchangeableWithBegin = getAllInterchangeableVertexes(joinGraph, begin); - if (reacheableVertexes.contains(leftTarget)) { + if (interchangeableWithBegin.contains(leftTarget)) { List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); if (edgesFromLeftTarget != null) { for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { - if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { - return edgeFromLeftTarget; + Set interchangeableWithRightVertex = getAllInterchangeableVertexes(joinGraph, + edgeFromLeftTarget.getRightVertex()); + if (interchangeableWithRightVertex.contains(rightTarget)) { + JoinNode newNode = JoinOrderingUtil.createJoinNode(plan, edgeFromLeftTarget.getJoinType(), leftTarget, + rightTarget, null); + return new JoinEdge(newNode, leftTarget, rightTarget); } } } @@ -224,16 +230,18 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join // return null; // } else { // move to right if associative -// for (JoinVertex reacheableVertex : getAllReacheableVertexesByCommutativity(joinGraph, begin)) { - for (JoinVertex reacheableVertex : reacheableVertexes) { - if (begin.equals(reacheableVertex)) continue; - List edges = joinGraph.getOutgoingEdges(reacheableVertex); +// for (JoinVertex reacheableVertex : getAllInterchangeableVertexes(joinGraph, begin)) { + + + for (JoinVertex interchangeableVertex : interchangeableWithBegin) { + List edges = joinGraph.getOutgoingEdges(interchangeableVertex); if (edges != null) { for (JoinEdge edge : edges) { for (JoinEdge associativeEdge : getAllAssociativeEdges(joinGraph, edge)) { JoinVertex willBeVisited = associativeEdge.getLeftVertex(); if (!context.visited.contains(willBeVisited)) { - JoinEdge found = findJoin(context, joinGraph, associativeEdge.getLeftVertex(), leftTarget, rightTarget); + JoinEdge found = findJoin(plan, block, context, joinGraph, associativeEdge.getLeftVertex(), leftTarget, + rightTarget); if (found != null) { return found; } @@ -247,9 +255,15 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join // } } + /** + * Find all edges that are associative with the given edge. + * + * @param graph + * @param edge + * @return + */ private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge edge) { Set associativeEdges = TUtil.newHashSet(); - // find all associative edge pairs which begin at the start vertex JoinVertex start = edge.getRightVertex(); List candidateEdges = graph.getOutgoingEdges(start); if (candidateEdges != null) { @@ -271,7 +285,7 @@ private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge ed * @return */ private static boolean isEqualsOrExchangeable(JoinGraph graph, JoinVertex v1, JoinVertex v2) { - for (JoinVertex commutative : getAllReacheableVertexesByCommutativity(graph, v1)) { + for (JoinVertex commutative : getAllInterchangeableVertexes(graph, v1)) { if (v2.equals(commutative)) { return true; } @@ -296,14 +310,14 @@ private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { return false; } - private static Set getAllReacheableVertexesByCommutativity(JoinGraph graph, JoinVertex from) { + private static Set getAllInterchangeableVertexes(JoinGraph graph, JoinVertex from) { Set founds = TUtil.newHashSet(); - getAllReacheableVertexesByCommutativity(founds, graph, from); + getAllInterchangeableVertexes(founds, graph, from); return founds; } - private static void getAllReacheableVertexesByCommutativity(Set founds, JoinGraph graph, - JoinVertex vertex) { + private static void getAllInterchangeableVertexes(Set founds, JoinGraph graph, + JoinVertex vertex) { founds.add(vertex); Set foundAtThis = TUtil.newHashSet(); List candidateEdges = graph.getOutgoingEdges(vertex); @@ -332,7 +346,7 @@ private static void getAllReacheableVertexesByCommutativity(Set foun if (foundAtThis.size() > 0) { // founds.addAll(foundAtThis); for (JoinVertex v : foundAtThis) { - getAllReacheableVertexesByCommutativity(founds, graph, v); + getAllInterchangeableVertexes(founds, graph, v); } } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 940202c74f..a6b624a6cf 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -19,6 +19,7 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.annotation.Nullable; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.SchemaUtil; @@ -66,7 +67,7 @@ public static boolean checkIfEvaluatedAtVertex(EvalNode evalNode, JoinEdge edge) } public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, - EvalNode predicates) { + @Nullable EvalNode predicates) { LogicalNode leftChild = left.getCorrespondingNode(); LogicalNode rightChild = right.getCorrespondingNode(); @@ -102,6 +103,7 @@ public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { edge.getJoinSpec().setType(JoinType.INNER); } edge.addJoinPredicates(predicates); + edge.getCorrespondingJoinNode().setJoinQual(edge.getSingletonJoinQual()); } return edge; } From 8ebf859c3f142d673fbb2b03109ca1d7b894b167 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 18 Mar 2015 10:44:51 +0900 Subject: [PATCH 12/43] TAJO-1352_4 --- tajo-core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tajo-core/pom.xml b/tajo-core/pom.xml index 38bddecd17..9b24a4bd7b 100644 --- a/tajo-core/pom.xml +++ b/tajo-core/pom.xml @@ -77,7 +77,7 @@ src/test/tpch/** src/test/resources/dataset/** src/test/resources/queries/** - src/test/resources/results/** + src/test/resources/plans/** src/test/resources/results/** src/main/resources/META-INF/services/* src/main/resources/webapps/static/js/* From 393dd555e19c36a942b49e4f9ccf88fd1a3508ca Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 18 Mar 2015 18:46:38 +0900 Subject: [PATCH 13/43] TAJO-1352_4 --- .../main/java/org/apache/tajo/util/Pair.java | 9 + .../engine/planner/TestJoinOrderOptimize.java | 18 ++ .../testJoinWithMultipleJoinTypes.sql | 4 + .../testWhereClauseJoin5.sql | 15 ++ .../testWhereClauseJoin6.sql | 19 ++ .../apache/tajo/plan/LogicalOptimizer.java | 156 ++++++++++++--- .../GreedyHeuristicJoinOrderAlgorithm.java | 187 +++++++++++------- .../apache/tajo/plan/joinorder/JoinEdge.java | 16 +- .../apache/tajo/plan/joinorder/JoinGraph.java | 79 +++++++- .../tajo/plan/joinorder/JoinGraphContext.java | 50 +++-- .../tajo/plan/joinorder/JoinOrderingUtil.java | 121 ++++++------ .../tajo/plan/joinorder/JoinVertex.java | 4 +- .../plan/joinorder/JoinedRelationsVertex.java | 41 +++- .../tajo/plan/joinorder/RelationVertex.java | 21 +- .../apache/tajo/plan/logical/JoinSpec.java | 19 +- 15 files changed, 568 insertions(+), 191 deletions(-) create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql diff --git a/tajo-common/src/main/java/org/apache/tajo/util/Pair.java b/tajo-common/src/main/java/org/apache/tajo/util/Pair.java index e8852df438..968381380f 100644 --- a/tajo-common/src/main/java/org/apache/tajo/util/Pair.java +++ b/tajo-common/src/main/java/org/apache/tajo/util/Pair.java @@ -24,11 +24,20 @@ public class Pair { private T1 first; private T2 second; + public Pair() { + + } + public Pair(T1 first, T2 second) { this.first = first; this.second = second; } + public void set(T1 first, T2 second) { + this.first = first; + this.second = second; + } + public T1 getFirst() { return first; } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index ed93948037..68c5bd91fa 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -35,4 +35,22 @@ public final void testTwoPartJoin() throws Exception { System.out.println(plan); assertPlan(plan); } + + @Test + public final void testJoinWithMultipleJoinTypes() throws Exception { + String plan = executeQuery(); + System.out.println(plan); + } + + @Test + public final void testWhereClauseJoin5() throws Exception { + String plan = executeQuery(); + System.out.println(plan); + } + + @Test + public final void testWhereClauseJoin6() throws Exception { + String plan = executeQuery(); + System.out.println(plan); + } } diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql new file mode 100644 index 0000000000..ffb23cee7c --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql @@ -0,0 +1,4 @@ +select * FROM +customer c +right outer join (select n_nationkey from nation) n on n.n_nationkey = c.c_custkey +join region r on r.r_regionkey = c.c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql new file mode 100644 index 0000000000..3494007269 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql @@ -0,0 +1,15 @@ +select + s_acctbal, + s_name, + p_partkey +from + part, + supplier, + partsupp +where + p_partkey = ps_partkey and + s_suppkey = ps_suppkey +order by + s_acctbal, + s_name, + p_partkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql new file mode 100644 index 0000000000..62d3b79f29 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql @@ -0,0 +1,19 @@ +select + s_acctbal, + s_name, + p_partkey, + n_name +from + part, + supplier, + partsupp, + nation +where + p_partkey = ps_partkey and + s_suppkey = ps_suppkey and + s_nationkey = n_nationkey +order by + s_acctbal, + s_name, + p_partkey, + n_name; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 459c5e82ce..8246498ac1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -19,7 +19,6 @@ package org.apache.tajo.plan; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceStability; @@ -27,9 +26,12 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.SessionVars; import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.CatalogUtil; +import org.apache.tajo.catalog.Column; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.plan.expr.AlgebraicUtil; +import org.apache.tajo.plan.expr.BinaryEval; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.expr.EvalTreeUtil; import org.apache.tajo.plan.joinorder.*; @@ -43,9 +45,7 @@ import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.Stack; +import java.util.*; import static org.apache.tajo.plan.LogicalPlan.BlockEdge; import static org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm.getCost; @@ -113,6 +113,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding relations and filter expressions JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); + addJoinEdgesFromQuals(plan, block, joinGraphContext); // finding join order and restore remain filter order FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); @@ -120,8 +121,9 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // replace join node with FoundJoinOrder. JoinNode newJoinNode = order.getOrderedJoin(); LogicalNode newNode = newJoinNode; - if (!joinGraphContext.getJoinPredicateCandidates().isEmpty()) { - Set remainings = joinGraphContext.getJoinPredicateCandidates(); + + if (!joinGraphContext.getCandidateJoinFilters().isEmpty()) { + Set remainings = joinGraphContext.getCandidateJoinFilters(); LogicalNode topParent = PlannerUtil.findTopParentNode(block.getRoot(), NodeType.JOIN); if (topParent.getType() == NodeType.SELECTION) { SelectionNode topParentSelect = (SelectionNode) topParent; @@ -161,6 +163,109 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } } + private void addJoinEdgesFromQuals(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext context) + throws PlanningException { + Map relationNodeMap = TUtil.newHashMap(); + for (RelationNode relationNode : block.getRelations()) { + relationNodeMap.put(relationNode.getCanonicalName(), relationNode); + } + addJoinEdgesFromQuals(block, context, context.getJoinGraph(), + new HashSet(context.getCandidateJoinConditions()), relationNodeMap); + addJoinEdgesFromQuals(block, context, context.getJoinGraph(), + new HashSet(context.getCandidateJoinFilters()), relationNodeMap); + } + + private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context, JoinGraph graph, + Set quals, Map relationNodeMap) + throws PlanningException { + for (EvalNode condition : quals) { + if (EvalTreeUtil.isJoinQual(condition, false)) { + String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) condition); + String leftExprRelName = relations[0]; + String rightExprRelName = relations[1]; + RelationVertex left = null, right = null; + if (relationNodeMap.containsKey(leftExprRelName)) { + left = new RelationVertex(relationNodeMap.get(leftExprRelName)); + } + if (relationNodeMap.containsKey(rightExprRelName)) { + right = new RelationVertex(relationNodeMap.get(rightExprRelName)); + } + if (left != null && right != null) { + JoinEdge edge = graph.getEdge(left, right); + if (edge == null) { + // If a join is an implicit join, its type is assumed as the INNER join + edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); + edge.addJoinQual(condition); + } else { + if (edge.getJoinType() == JoinType.CROSS) { + edge.getJoinSpec().setType(JoinType.INNER); + } + } + edge.addJoinQual(condition); + + if (PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + graph.addJoin(context, edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); + } + } + } + } + } + + private String [] guessRelationsFromJoinQual(LogicalPlan.QueryBlock block, BinaryEval joinCondition) + throws PlanningException { + + // Note that we can guarantee that each join qual used here is a singleton. + // This is because we use dissect a join qual into conjunctive normal forms. + // In other words, each join qual has a form 'col1 = col2'. + Column leftExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getLeftExpr()).get(0); + Column rightExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getRightExpr()).get(0); + + // 0 - left table, 1 - right table + String [] relationNames = new String[2]; + NamedExprsManager namedExprsMgr = block.getNamedExprsManager(); + if (leftExpr.hasQualifier()) { + relationNames[0] = leftExpr.getQualifier(); + } else { + if (namedExprsMgr.isAliasedName(leftExpr.getSimpleName())) { + String columnName = namedExprsMgr.getOriginalName(leftExpr.getSimpleName()); + String qualifier = CatalogUtil.extractQualifier(columnName); + relationNames[0] = qualifier; + } else { + // search for a relation which evaluates a right term included in a join condition + for (RelationNode rel : block.getRelations()) { + if (rel.getOutSchema().contains(leftExpr)) { + String qualifier = rel.getCanonicalName(); + relationNames[0] = qualifier; + } + } + if (relationNames[0] == null) { // if not found + throw new PlanningException("Cannot expect a referenced relation: " + leftExpr); + } + } + } + if (rightExpr.hasQualifier()) { + relationNames[1] = rightExpr.getQualifier(); + } else { + if (namedExprsMgr.isAliasedName(rightExpr.getSimpleName())) { + String columnName = namedExprsMgr.getOriginalName(rightExpr.getSimpleName()); + String qualifier = CatalogUtil.extractQualifier(columnName); + relationNames[1] = qualifier; + } else { + // search for a relation which evaluates a right term included in a join condition + for (RelationNode rel : block.getRelations()) { + if (rel.getOutSchema().contains(rightExpr)) { + String qualifier = rel.getCanonicalName(); + relationNames[1] = qualifier; + } + } + if (relationNames[1] == null) { // if not found + throw new PlanningException("Cannot expect a referenced relation: " + rightExpr); + } + } + } + return relationNames; + } + private static class JoinTargetCollector extends BasicLogicalPlanVisitor, LogicalNode> { @Override public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode node, @@ -191,9 +296,10 @@ private static class JoinGraphBuilder extends BasicLogicalPlanVisitor stack) throws PlanningException { // all join predicate candidates must be collected before building the join tree - context.addPredicateCandidates( + context.addCandidateJoinFilters( TUtil.newList(AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual()))); super.visitFilter(context, plan, block, node, stack); return node; @@ -226,8 +332,8 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); RelationVertex leftVertex = new RelationVertex(leftChild); RelationVertex rightVertex = new RelationVertex(rightChild); - JoinNode newNode = JoinOrderingUtil.createJoinNode(plan, joinNode.getJoinType(), leftVertex, rightVertex, null); - JoinEdge edge = context.getJoinGraph().addJoin(newNode, leftVertex, rightVertex); + + JoinEdge edge = context.getJoinGraph().addJoin(context, joinNode.getJoinSpec(), leftVertex, rightVertex); if (context.getMostLeftVertex() == null) { context.setMostLeftVertex(leftVertex); } @@ -238,30 +344,34 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical Set originPredicates = joinNode.getJoinSpec().getPredicates(); for (EvalNode predicate : joinNode.getJoinSpec().getPredicates()) { if (EvalTreeUtil.isJoinQual(block, leftVertex.getSchema(), rightVertex.getSchema(), predicate, false)) { - if (LogicalPlanner.checkIfBeEvaluatedAtJoin(block, predicate, newNode, false)) { + if (JoinOrderingUtil.checkIfEvaluatedAtEdge(predicate, edge, true)) { joinConditions.add(predicate); } } else { joinConditions.add(predicate); } } - // find impossible predicates + // find predicates which cannot be evaluated at this join originPredicates.removeAll(joinConditions); - context.addPredicateCandidates(originPredicates); + context.addCandidateJoinConditions(originPredicates); originPredicates.clear(); originPredicates.addAll(joinConditions); } - joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getJoinPredicateCandidates(), edge)); - context.removePredicateCandidates(joinConditions); - edge = JoinOrderingUtil.addPredicates(edge, joinConditions); - if (edge.hasJoinQual()) { - newNode.setJoinQual(edge.getSingletonJoinQual()); + joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getCandidateJoinConditions(), edge, + true)); + joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getCandidateJoinFilters(), edge, + false)); + context.removeCandidateJoinConditions(joinConditions); + context.removeCandidateJoinFilters(joinConditions); + edge.addJoinPredicates(joinConditions); + if (edge.getJoinType() == JoinType.INNER && edge.getJoinQual().isEmpty()) { + edge.getJoinSpec().setType(JoinType.CROSS); } - if (PlannerUtil.isCommutativeJoin(joinNode.getJoinType())) { - JoinEdge commutativeEdge = new JoinEdge(newNode, - new RelationVertex(rightChild), new RelationVertex(leftChild)); + if (PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + JoinEdge commutativeEdge = context.getCachedOrNewJoinEdge(edge.getJoinSpec(), edge.getRightVertex(), + edge.getLeftVertex()); commutativeEdge.addJoinPredicates(joinConditions); context.getJoinGraph().addEdge(commutativeEdge.getLeftVertex(), commutativeEdge.getRightVertex(), commutativeEdge); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 9ebdb55f5a..ef0ae69c5f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -18,6 +18,7 @@ package org.apache.tajo.plan.joinorder; +import org.apache.tajo.algebra.JoinType; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.util.PlannerUtil; @@ -47,7 +48,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdgeFinderContext context = new JoinEdgeFinderContext(); JoinGraph joinGraph = graphContext.getJoinGraph(); while (vertexes.size() > 1) { - JoinEdge bestPair = getBestPair(plan, block, context, graphContext, vertexes); + JoinEdge bestPair = getBestPair(plan, context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) @@ -59,24 +60,16 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo Set willBeRemoved = TUtil.newHashSet(); Set willBeAdded = TUtil.newHashSet(); - prepareGraphUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getLeftVertex()), newVertex, true, - willBeAdded, willBeRemoved); - - prepareGraphUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getLeftVertex()), newVertex, false, - willBeAdded, willBeRemoved); - - prepareGraphUpdate(plan, block, joinGraph.getOutgoingEdges(bestPair.getRightVertex()), newVertex, true, - willBeAdded, willBeRemoved); - - prepareGraphUpdate(plan, block, joinGraph.getIncomingEdges(bestPair.getRightVertex()), newVertex, false, - willBeAdded, willBeRemoved); + prepareGraphUpdate(graphContext, joinGraph, bestPair, newVertex, willBeAdded, willBeRemoved); for (JoinEdge edge : willBeRemoved) { joinGraph.removeEdge(edge.getLeftVertex(), edge.getRightVertex()); + graphContext.addCandidateJoinConditions(edge.getJoinQual()); } for (JoinEdge edge : willBeAdded) { joinGraph.addEdge(edge.getLeftVertex(), edge.getRightVertex(), edge); + graphContext.removeCandidateJoinConditions(edge.getJoinQual()); } vertexes.remove(bestPair.getLeftVertex()); @@ -84,29 +77,38 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo vertexes.add(newVertex); } - JoinNode joinTree = (JoinNode) vertexes.iterator().next().getCorrespondingNode(); + JoinNode joinTree = (JoinNode) vertexes.iterator().next().buildPlan(plan, block); // all generated nodes should be registered to corresponding blocks block.registerNode(joinTree); return new FoundJoinOrder(joinTree, getCost(joinTree)); } - private void prepareGraphUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, List edges, + private void prepareGraphUpdate(JoinGraphContext context, JoinGraph graph, JoinEdge bestPair, + JoinedRelationsVertex vertex, Set willBeAdded, Set willBeRemoved) { + prepareGraphUpdate(context, graph.getOutgoingEdges(bestPair.getLeftVertex()), vertex, true, + willBeAdded, willBeRemoved); + + prepareGraphUpdate(context, graph.getIncomingEdges(bestPair.getLeftVertex()), vertex, false, + willBeAdded, willBeRemoved); + + prepareGraphUpdate(context, graph.getOutgoingEdges(bestPair.getRightVertex()), vertex, true, + willBeAdded, willBeRemoved); + + prepareGraphUpdate(context, graph.getIncomingEdges(bestPair.getRightVertex()), vertex, false, + willBeAdded, willBeRemoved); + } + + private void prepareGraphUpdate(JoinGraphContext context, List edges, JoinedRelationsVertex vertex, boolean isLeftVertex, Set willBeAdded, Set willBeRemoved) { if (edges != null) { for (JoinEdge edge : edges) { if (!isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { - JoinNode newNode; if (isLeftVertex) { - newNode = JoinOrderingUtil.createJoinNode(plan, edge.getJoinType(), vertex, edge.getRightVertex(), - edge.getSingletonJoinQual()); - willBeAdded.add(new JoinEdge(newNode, vertex, edge.getRightVertex())); + willBeAdded.add(context.getCachedOrNewJoinEdge(edge.getJoinSpec(), vertex, edge.getRightVertex())); } else { - newNode = JoinOrderingUtil.createJoinNode(plan, edge.getJoinType(), edge.getLeftVertex(), vertex, - edge.getSingletonJoinQual()); - willBeAdded.add(new JoinEdge(newNode, edge.getLeftVertex(), vertex)); + willBeAdded.add(context.getCachedOrNewJoinEdge(edge.getJoinSpec(), edge.getLeftVertex(), vertex)); } - block.registerNode(newNode); } willBeRemoved.add(edge); } @@ -123,8 +125,8 @@ private void prepareGraphUpdate(LogicalPlan plan, LogicalPlan.QueryBlock block, * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) + private JoinEdge getBestPair(LogicalPlan plan, JoinEdgeFinderContext context, JoinGraphContext graphContext, + Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; JoinEdge bestJoin = null; @@ -139,14 +141,15 @@ private JoinEdge getBestPair(LogicalPlan plan, LogicalPlan.QueryBlock block, } context.reset(); - JoinEdge foundJoin = findJoin(plan, block, context, graphContext.getJoinGraph(), - graphContext.getMostLeftVertex(), outer, inner); + JoinEdge foundJoin = findJoin(plan, context, graphContext, graphContext.getMostLeftVertex(), outer, inner); if (foundJoin == null) { continue; } - Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( - graphContext.getJoinPredicateCandidates(), foundJoin); - foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); +// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( +// graphContext.getCandidateJoinConditions(), foundJoin, true); +// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( +// graphContext.getCandidateJoinFilters(), foundJoin, false)); +// foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); double cost = getCost(foundJoin); if (cost < minCost) { @@ -168,12 +171,12 @@ private JoinEdge getBestPair(LogicalPlan plan, LogicalPlan.QueryBlock block, if (bestNonCrossJoin != null) { if (bestNonCrossJoin.hasJoinQual()) { - graphContext.removePredicateCandidates(bestNonCrossJoin.getJoinQual()); + graphContext.removeCandidateJoinFilters(bestNonCrossJoin.getJoinQual()); } return bestNonCrossJoin; } else { if (bestJoin.hasJoinQual()) { - graphContext.removePredicateCandidates(bestJoin.getJoinQual()); + graphContext.removeCandidateJoinFilters(bestJoin.getJoinQual()); } return bestJoin; } @@ -192,26 +195,42 @@ public void reset() { * * @return If there is no join condition between two relation, it returns NULL value. */ - private static JoinEdge findJoin(final LogicalPlan plan, final LogicalPlan.QueryBlock block, - final JoinEdgeFinderContext context, final JoinGraph joinGraph, JoinVertex begin, + private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderContext context, + final JoinGraphContext graphContext, JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { context.visited.add(begin); + JoinGraph joinGraph = graphContext.getJoinGraph(); + // Find the matching edge from begin - Set interchangeableWithBegin = getAllInterchangeableVertexes(joinGraph, begin); + Set interchangeableWithBegin = getAllInterchangeableVertexes(plan, graphContext, begin); if (interchangeableWithBegin.contains(leftTarget)) { List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); if (edgesFromLeftTarget != null) { for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { - Set interchangeableWithRightVertex = getAllInterchangeableVertexes(joinGraph, - edgeFromLeftTarget.getRightVertex()); + edgeFromLeftTarget = updateQualIfNecessary(graphContext, edgeFromLeftTarget); + Set interchangeableWithRightVertex; + if (edgeFromLeftTarget.getJoinType() == JoinType.INNER || edgeFromLeftTarget.getJoinType() == JoinType.CROSS) { + interchangeableWithRightVertex = getAllInterchangeableVertexes(plan, graphContext, + edgeFromLeftTarget.getRightVertex()); + } else { + interchangeableWithRightVertex = TUtil.newHashSet(edgeFromLeftTarget.getRightVertex()); + } + if (interchangeableWithRightVertex.contains(rightTarget)) { - JoinNode newNode = JoinOrderingUtil.createJoinNode(plan, edgeFromLeftTarget.getJoinType(), leftTarget, - rightTarget, null); - return new JoinEdge(newNode, leftTarget, rightTarget); + JoinEdge targetEdge = joinGraph.getEdge(leftTarget, rightTarget); + if (targetEdge == null) { + // Since the targets of the both sides are searched with symmetric characteristics, + // the join type is assumed as CROSS. + joinGraph.addJoin(graphContext, new JoinSpec(JoinType.CROSS), leftTarget, rightTarget); + return updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); + } else { + targetEdge = updateQualIfNecessary(graphContext, targetEdge); + return targetEdge; + } } } } @@ -237,10 +256,10 @@ private static JoinEdge findJoin(final LogicalPlan plan, final LogicalPlan.Query List edges = joinGraph.getOutgoingEdges(interchangeableVertex); if (edges != null) { for (JoinEdge edge : edges) { - for (JoinEdge associativeEdge : getAllAssociativeEdges(joinGraph, edge)) { + for (JoinEdge associativeEdge : getAllAssociativeEdges(plan, graphContext, edge)) { JoinVertex willBeVisited = associativeEdge.getLeftVertex(); if (!context.visited.contains(willBeVisited)) { - JoinEdge found = findJoin(plan, block, context, joinGraph, associativeEdge.getLeftVertex(), leftTarget, + JoinEdge found = findJoin(plan, context, graphContext, associativeEdge.getLeftVertex(), leftTarget, rightTarget); if (found != null) { return found; @@ -255,21 +274,34 @@ private static JoinEdge findJoin(final LogicalPlan plan, final LogicalPlan.Query // } } + private static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { + Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( + context.getCandidateJoinConditions(), edge, true); + additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( + context.getCandidateJoinFilters(), edge, false)); + context.getCandidateJoinConditions().removeAll(additionalPredicates); + context.getCandidateJoinFilters().removeAll(additionalPredicates); +// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); + edge.addJoinPredicates(additionalPredicates); + return edge; + } + /** * Find all edges that are associative with the given edge. * - * @param graph + * @param context * @param edge * @return */ - private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge edge) { + private static Set getAllAssociativeEdges(LogicalPlan plan, JoinGraphContext context, JoinEdge edge) { Set associativeEdges = TUtil.newHashSet(); JoinVertex start = edge.getRightVertex(); - List candidateEdges = graph.getOutgoingEdges(start); + List candidateEdges = context.getJoinGraph().getOutgoingEdges(start); if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { + candidateEdge = updateQualIfNecessary(context, candidateEdge); if (!isEqualsOrCommutative(edge, candidateEdge) && - JoinOrderingUtil.isAssociativeJoin(edge.getJoinType(), candidateEdge.getJoinType())) { + JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { associativeEdges.add(candidateEdge); } } @@ -277,21 +309,21 @@ private static Set getAllAssociativeEdges(JoinGraph graph, JoinEdge ed return associativeEdges; } - /** - * - * @param graph - * @param v1 - * @param v2 - * @return - */ - private static boolean isEqualsOrExchangeable(JoinGraph graph, JoinVertex v1, JoinVertex v2) { - for (JoinVertex commutative : getAllInterchangeableVertexes(graph, v1)) { - if (v2.equals(commutative)) { - return true; - } - } - return false; - } +// /** +// * +// * @param context +// * @param v1 +// * @param v2 +// * @return +// */ +// private static boolean isEqualsOrExchangeable(JoinGraphContext context, JoinVertex v1, JoinVertex v2) { +// for (JoinVertex commutative : getAllInterchangeableVertexes(context, v1)) { +// if (v2.equals(commutative)) { +// return true; +// } +// } +// return false; +// } private static boolean isEqualsOrCommutative(JoinEdge edge1, JoinEdge edge2) { if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { @@ -310,29 +342,30 @@ private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { return false; } - private static Set getAllInterchangeableVertexes(JoinGraph graph, JoinVertex from) { + private static Set getAllInterchangeableVertexes(LogicalPlan plan, JoinGraphContext context, JoinVertex from) { Set founds = TUtil.newHashSet(); - getAllInterchangeableVertexes(founds, graph, from); + getAllInterchangeableVertexes(founds, plan, context, from); return founds; } - private static void getAllInterchangeableVertexes(Set founds, JoinGraph graph, + private static void getAllInterchangeableVertexes(Set founds, LogicalPlan plan, JoinGraphContext context, JoinVertex vertex) { founds.add(vertex); Set foundAtThis = TUtil.newHashSet(); - List candidateEdges = graph.getOutgoingEdges(vertex); + List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { + candidateEdge = updateQualIfNecessary(context, candidateEdge); if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) && !founds.contains(candidateEdge.getRightVertex())) { - List rightEdgesOfCandidate = graph.getOutgoingEdges(candidateEdge.getRightVertex()); + List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); boolean reacheable = true; if (rightEdgesOfCandidate != null) { for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { + rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); // if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && - !JoinOrderingUtil.isAssociativeJoin(candidateEdge.getJoinType(), - rightEdgeOfCandidate.getJoinType())) { + !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { reacheable = false; break; } @@ -346,7 +379,7 @@ private static void getAllInterchangeableVertexes(Set founds, JoinGr if (foundAtThis.size() > 0) { // founds.addAll(foundAtThis); for (JoinVertex v : foundAtThis) { - getAllInterchangeableVertexes(founds, graph, v); + getAllInterchangeableVertexes(founds, plan, context, v); } } } @@ -359,16 +392,24 @@ private static void getAllInterchangeableVertexes(Set founds, JoinGr */ public static double getCost(JoinEdge joinEdge) { double filterFactor = 1; - if (joinEdge.hasJoinQual()) { + if (joinEdge.getJoinType() != JoinType.CROSS) { // TODO - should consider join type // TODO - should statistic information obtained from query history filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); - return getCost(joinEdge.getLeftVertex().getCorrespondingNode()) * - getCost(joinEdge.getRightVertex().getCorrespondingNode()) * filterFactor; + return getCost(joinEdge.getLeftVertex()) * + getCost(joinEdge.getRightVertex()) * filterFactor; } else { // make cost bigger if cross join - return Math.pow(getCost(joinEdge.getLeftVertex().getCorrespondingNode()) * - getCost(joinEdge.getRightVertex().getCorrespondingNode()), 2); + return Math.pow(getCost(joinEdge.getLeftVertex()) * + getCost(joinEdge.getRightVertex()), 2); + } + } + + public static double getCost(JoinVertex joinVertex) { + if (joinVertex instanceof RelationVertex) { + return getCost(((RelationVertex) joinVertex).getRelationNode()); + } else { + return getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java index aaf3f1d3cf..7f5d547917 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java @@ -33,14 +33,16 @@ public class JoinEdge { private final JoinVertex leftVertex; private final JoinVertex rightVertex; private final Schema schema; - private final JoinNode correspondingJoinNode; +// private final JoinNode correspondingJoinNode; - public JoinEdge(JoinNode joinNode, JoinVertex leftVertex, JoinVertex rightVertex) { - this.joinSpec = joinNode.getJoinSpec(); +// public JoinEdge(JoinNode joinNode, JoinVertex leftVertex, JoinVertex rightVertex) { + public JoinEdge(JoinSpec joinSpec, JoinVertex leftVertex, JoinVertex rightVertex) { +// this.joinSpec = joinNode.getJoinSpec(); + this.joinSpec = joinSpec; this.leftVertex = leftVertex; this.rightVertex = rightVertex; this.schema = SchemaUtil.merge(leftVertex.getSchema(), rightVertex.getSchema()); - this.correspondingJoinNode = joinNode; +// this.correspondingJoinNode = joinNode; } public JoinType getJoinType() { @@ -88,7 +90,7 @@ public Schema getSchema() { return schema; } - public JoinNode getCorrespondingJoinNode() { - return correspondingJoinNode; - } +// public JoinNode getCorrespondingJoinNode() { +// return correspondingJoinNode; +// } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index ad820e6254..1caacc9deb 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -19,23 +19,84 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.JoinSpec; -import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.SimpleUndirectedGraph; -import java.util.List; -import java.util.Set; - /** - * Left-deep graph + * A join graph must be the connected graph */ public class JoinGraph extends SimpleUndirectedGraph { +// +// private final JoinGraphContext context; +// +// public JoinGraph(JoinGraphContext context) { +// this.context = context; +// this.context.setJoinGraph(this); +// } - public JoinEdge addJoin(JoinNode joinNode, JoinVertex left, JoinVertex right) throws PlanningException { - JoinEdge edge = new JoinEdge(joinNode, left, right); + public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex left, JoinVertex right) throws PlanningException { + JoinEdge edge = context.getCachedOrNewJoinEdge(joinSpec, left, right); this.addEdge(left, right, edge); return edge; } + +// private JoinEdge updateJoinPredicates(JoinEdge edge) { +// if (edge != null) { +// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( +// context.getCandidateJoinConditions(), edge, true); +// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( +// context.getCandidateJoinFilters(), edge, false)); +// context.removeCandidateJoinConditions(additionalPredicates); +// context.removeCandidateJoinFilters(additionalPredicates); +// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); +// } +// return null; +// } +// +// @Override +// public JoinEdge getEdge(JoinVertex tail, JoinVertex head) { +// return updateJoinPredicates(super.getEdge(tail, head)); +// } +// +// @Override +// public List getIncomingEdges(JoinVertex vertex) { +// List edges = super.getIncomingEdges(vertex); +// if (edges != null) { +// for (JoinEdge edge : edges) { +// updateJoinPredicates(edge); +// } +// } +// return edges; +// } +// +// @Override +// public List getOutgoingEdges(JoinVertex vertex) { +// List edges = super.getOutgoingEdges(vertex); +// if (edges != null) { +// for (JoinEdge edge : edges) { +// updateJoinPredicates(edge); +// } +// } +// return edges; +// } +// +// @Override +// public Collection getEdgesAll() { +// Collection edges = super.getEdgesAll(); +// if (edges != null) { +// for (JoinEdge edge : edges) { +// updateJoinPredicates(edge); +// } +// } +// return edges; +// } +// +// @Override +// public JoinEdge getReverseEdge(JoinVertex head, JoinVertex tail) { +// return updateJoinPredicates(super.getReverseEdge(head, tail)); +// } +// +// public JoinGraphContext getContext() { +// return context; +// } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index e28f508b4b..c29eeecf42 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -19,34 +19,48 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.logical.JoinSpec; +import org.apache.tajo.util.Pair; import org.apache.tajo.util.TUtil; import java.util.Collection; +import java.util.Map; import java.util.Set; public class JoinGraphContext { private JoinVertex mostLeftVertex; private JoinGraph joinGraph = new JoinGraph(); - private Set joinPredicateCandidates = TUtil.newHashSet(); - - public void setJoinGraph(JoinGraph joinGraph) { - this.joinGraph = joinGraph; - } + private Map, JoinEdge> edgeCache = TUtil.newHashMap(); + private Pair cacheKey = new Pair(); + private Set candidateJoinConditions = TUtil.newHashSet(); // predicates from the on clause + private Set candidateJoinFilters = TUtil.newHashSet(); // predicates from the where clause public JoinGraph getJoinGraph() { return joinGraph; } - public void addPredicateCandidates(Collection candidates) { - joinPredicateCandidates.addAll(candidates); + public void addCandidateJoinConditions(Collection candidates) { + candidateJoinConditions.addAll(candidates); + } + + public void addCandidateJoinFilters(Collection candidates) { + candidateJoinFilters.addAll(candidates); + } + + public void removeCandidateJoinConditions(Collection willBeRemoved) { + candidateJoinConditions.removeAll(willBeRemoved); } - public void removePredicateCandidates(Collection willBeRemoved) { - joinPredicateCandidates.removeAll(willBeRemoved); + public void removeCandidateJoinFilters(Collection willBeRemoved) { + candidateJoinFilters.removeAll(willBeRemoved); } - public Set getJoinPredicateCandidates() { - return joinPredicateCandidates; + public Set getCandidateJoinConditions() { + return candidateJoinConditions; + } + + public Set getCandidateJoinFilters() { + return candidateJoinFilters; } public JoinVertex getMostLeftVertex() { @@ -56,4 +70,18 @@ public JoinVertex getMostLeftVertex() { public void setMostLeftVertex(JoinVertex mostLeftVertex) { this.mostLeftVertex = mostLeftVertex; } + + public JoinEdge cacheEdge(JoinEdge edge) { + edgeCache.put(new Pair(edge.getLeftVertex(), edge.getRightVertex()), edge); + return edge; + } + + public JoinEdge getCachedOrNewJoinEdge(JoinSpec joinSpec, JoinVertex left, JoinVertex right) { + cacheKey.set(left, right); + if (edgeCache.containsKey(cacheKey)) { + return edgeCache.get(edgeCache); + } else { + return cacheEdge(new JoinEdge(joinSpec, left, right)); + } + } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index a6b624a6cf..5d6120c4bb 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -24,14 +24,12 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.LogicalPlanner; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.expr.EvalTreeUtil; import org.apache.tajo.plan.expr.EvalType; -import org.apache.tajo.plan.logical.JoinNode; -import org.apache.tajo.plan.logical.LogicalNode; -import org.apache.tajo.plan.logical.NodeType; -import org.apache.tajo.plan.logical.RelationNode; +import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@ -41,18 +39,19 @@ public class JoinOrderingUtil { - public static Set findJoinConditionForJoinVertex(Set candidates, JoinEdge edge) { + public static Set findJoinConditionForJoinVertex(Set candidates, JoinEdge edge, + boolean isOnPredicates) { Set conditionsForThisJoin = TUtil.newHashSet(); for (EvalNode predicate : candidates) { if (EvalTreeUtil.isJoinQual(predicate, false) - && checkIfEvaluatedAtVertex(predicate, edge)) { + && checkIfEvaluatedAtEdge(predicate, edge, isOnPredicates)) { conditionsForThisJoin.add(predicate); } } return conditionsForThisJoin; } - public static boolean checkIfEvaluatedAtVertex(EvalNode evalNode, JoinEdge edge) { + public static boolean checkIfEvaluatedAtEdge(EvalNode evalNode, JoinEdge edge, boolean isOnPredicate) { Set columnRefs = EvalTreeUtil.findUniqueColumns(evalNode); if (EvalTreeUtil.findDistinctAggFunction(evalNode).size() > 0) { return false; @@ -63,49 +62,60 @@ public static boolean checkIfEvaluatedAtVertex(EvalNode evalNode, JoinEdge edge) if (columnRefs.size() > 0 && !edge.getSchema().containsAll(columnRefs)) { return false; } + // Currently, join filters cannot be evaluated at joins + if (LogicalPlanner.isOuterJoin(edge.getJoinType()) && !isOnPredicate) { + return false; + } return true; } - public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, - @Nullable EvalNode predicates) { - LogicalNode leftChild = left.getCorrespondingNode(); - LogicalNode rightChild = right.getCorrespondingNode(); +// public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, +// @Nullable EvalNode predicates) { +// LogicalNode leftChild = left.getCorrespondingNode(); +// LogicalNode rightChild = right.getCorrespondingNode(); +// +// JoinNode joinNode = plan.createNode(JoinNode.class); +// +// if (PlannerUtil.isCommutativeJoin(joinType)) { +// // if only one operator is relation +// if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { +// // for left deep +// joinNode.init(joinType, rightChild, leftChild); +// } else { +// // if both operators are relation or if both are relations +// // we don't need to concern the left-right position. +// joinNode.init(joinType, leftChild, rightChild); +// } +// } else { +// joinNode.init(joinType, leftChild, rightChild); +// } +// +// Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), +// joinNode.getRightChild().getOutSchema()); +// joinNode.setInSchema(mergedSchema); +// joinNode.setOutSchema(mergedSchema); +// if (predicates != null) { +// joinNode.setJoinQual(predicates); +// } +// return joinNode; +// } - JoinNode joinNode = plan.createNode(JoinNode.class); - - if (PlannerUtil.isCommutativeJoin(joinType)) { - // if only one operator is relation - if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { - // for left deep - joinNode.init(joinType, rightChild, leftChild); - } else { - // if both operators are relation or if both are relations - // we don't need to concern the left-right position. - joinNode.init(joinType, leftChild, rightChild); + public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftEdge, JoinEdge rightEdge) { + if (isAssociativeJoinType(leftEdge.getJoinType(), rightEdge.getJoinType())) { + // TODO: consider when a join qual involves columns from two or more tables + // create a temporal left-deep join node + JoinedRelationsVertex tempLeftChild = new JoinedRelationsVertex(leftEdge); + JoinEdge tempEdge = context.getCachedOrNewJoinEdge(rightEdge.getJoinSpec(), tempLeftChild, + rightEdge.getRightVertex()); + if (!findJoinConditionForJoinVertex(context.getCandidateJoinConditions(), tempEdge, true).isEmpty()) { + return false; } - } else { - joinNode.init(joinType, leftChild, rightChild); - } - - Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), - joinNode.getRightChild().getOutSchema()); - joinNode.setInSchema(mergedSchema); - joinNode.setOutSchema(mergedSchema); - if (predicates != null) { - joinNode.setJoinQual(predicates); - } - return joinNode; - } - - public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { - if (!predicates.isEmpty()) { - if (edge.getJoinType() == JoinType.CROSS) { - edge.getJoinSpec().setType(JoinType.INNER); + if (!findJoinConditionForJoinVertex(context.getCandidateJoinFilters(), tempEdge, true).isEmpty()) { + return false; } - edge.addJoinPredicates(predicates); - edge.getCorrespondingJoinNode().setJoinQual(edge.getSingletonJoinQual()); + return true; } - return edge; + return false; } /** @@ -132,7 +142,7 @@ public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { * (A full B) full C | A full (B full C) | Equivalent * ============================================================== */ - public static boolean isAssociativeJoin(JoinType leftType, JoinType rightType) { + public static boolean isAssociativeJoinType(JoinType leftType, JoinType rightType) { if (leftType == rightType) { return true; } @@ -169,7 +179,6 @@ public static boolean isAssociativeJoin(JoinType leftType, JoinType rightType) { } } - // TODO: consider when a join qual involves columns from two or more tables return false; } @@ -239,15 +248,15 @@ public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan } } - public static JoinNode createJoinNodeFromEdge(LogicalPlan plan, JoinEdge edge) { - JoinNode node = plan.createNode(JoinNode.class); - - node.init(edge.getJoinType(), - edge.getLeftVertex().getCorrespondingNode(), - edge.getRightVertex().getCorrespondingNode()); - if (edge.hasJoinQual()) { - node.setJoinQual(edge.getSingletonJoinQual()); - } - return node; - } +// public static JoinNode createJoinNodeFromEdge(LogicalPlan plan, JoinEdge edge) { +// JoinNode node = plan.createNode(JoinNode.class); +// +// node.init(edge.getJoinType(), +// edge.getLeftVertex().getCorrespondingNode(), +// edge.getRightVertex().getCorrespondingNode()); +// if (edge.hasJoinQual()) { +// node.setJoinQual(edge.getSingletonJoinQual()); +// } +// return node; +// } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java index 188964c625..81040bb2b5 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java @@ -19,6 +19,7 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.logical.LogicalNode; import java.util.Set; @@ -26,6 +27,7 @@ public interface JoinVertex { Schema getSchema(); - LogicalNode getCorrespondingNode(); +// LogicalNode getCorrespondingNode(); Set getRelations(); + LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index dd7c2964ac..988d09747d 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -19,7 +19,12 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaUtil; +import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.RelationNode; +import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.util.TUtil; import java.util.Set; @@ -66,15 +71,43 @@ public String toString() { return joinEdge.toString(); } - public LogicalNode getCorrespondingNode() { - return joinEdge.getCorrespondingJoinNode(); - } - @Override public Set getRelations() { return relations; } + @Override + public LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block) { + // TODO + LogicalNode leftChild = joinEdge.getLeftVertex().buildPlan(plan, block); + LogicalNode rightChild = joinEdge.getRightVertex().buildPlan(plan, block); + + JoinNode joinNode = plan.createNode(JoinNode.class); + + if (PlannerUtil.isCommutativeJoin(joinEdge.getJoinType())) { + // if only one operator is relation + if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { + // for left deep + joinNode.init(joinEdge.getJoinType(), rightChild, leftChild); + } else { + // if both operators are relation or if both are relations + // we don't need to concern the left-right position. + joinNode.init(joinEdge.getJoinType(), leftChild, rightChild); + } + } else { + joinNode.init(joinEdge.getJoinType(), leftChild, rightChild); + } + + Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), + joinNode.getRightChild().getOutSchema()); + joinNode.setInSchema(mergedSchema); + joinNode.setOutSchema(mergedSchema); + if (joinEdge.hasJoinQual()) { + joinNode.setJoinQual(joinEdge.getSingletonJoinQual()); + } + return joinNode; + } + @Override public boolean equals(Object o) { if (o instanceof JoinedRelationsVertex) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java index 4e1ba81278..d75bc507dd 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java @@ -19,6 +19,7 @@ package org.apache.tajo.plan.joinorder; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.logical.RelationNode; import org.apache.tajo.util.TUtil; @@ -28,9 +29,13 @@ public class RelationVertex implements JoinVertex{ private RelationNode relationNode; + private LogicalNode topLogicalNode; - public RelationVertex(RelationNode relationNode) { +// public RelationVertex(LogicalNode topLogicalNode, RelationNode relationNode) { +public RelationVertex(RelationNode relationNode) { this.relationNode = relationNode; +// this.topLogicalNode = topLogicalNode; + this.topLogicalNode = relationNode; } @Override @@ -42,7 +47,7 @@ public String toString() { public boolean equals(Object o) { if (o instanceof RelationVertex) { RelationVertex other = (RelationVertex) o; - return this.relationNode.equals(other.relationNode); + return this.relationNode.equals(other.relationNode) && this.topLogicalNode.equals(other.topLogicalNode); } return false; } @@ -58,12 +63,16 @@ public Schema getSchema() { } @Override - public LogicalNode getCorrespondingNode() { - return relationNode; + public Set getRelations() { + return TUtil.newHashSet(this); } @Override - public Set getRelations() { - return TUtil.newHashSet(this); + public LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block) { + return topLogicalNode; + } + + public LogicalNode getRelationNode() { + return relationNode; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java index a36631d056..900dd06cd6 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java @@ -39,10 +39,21 @@ public JoinSpec(JoinType type) { } public void addPredicate(EvalNode predicate) { + + if (!predicates.isEmpty()) { + if (type == JoinType.CROSS) { + type = JoinType.INNER; + } + } this.predicates.add(predicate); } public void addPredicates(Set predicates) { + if (!predicates.isEmpty()) { + if (type == JoinType.CROSS) { + type = JoinType.INNER; + } + } this.predicates.addAll(predicates); } @@ -52,7 +63,13 @@ public boolean hasPredicates() { public void setPredicates(Set predicates) { this.predicates.clear(); - this.predicates.addAll(predicates); + if (predicates == null || predicates.isEmpty()) { + if (type == JoinType.INNER) { + type = JoinType.CROSS; + } + } else { + this.predicates.addAll(predicates); + } } public void setSingletonPredicate(EvalNode predicates) { From 8bd027bec0cfe30379a71c914ba292d2766a7afc Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 18 Mar 2015 21:21:13 +0900 Subject: [PATCH 14/43] TAJO-1352_4 --- .../java/org/apache/tajo/plan/joinorder/JoinGraphContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index c29eeecf42..2656d717d4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -79,7 +79,7 @@ public JoinEdge cacheEdge(JoinEdge edge) { public JoinEdge getCachedOrNewJoinEdge(JoinSpec joinSpec, JoinVertex left, JoinVertex right) { cacheKey.set(left, right); if (edgeCache.containsKey(cacheKey)) { - return edgeCache.get(edgeCache); + return edgeCache.get(cacheKey); } else { return cacheEdge(new JoinEdge(joinSpec, left, right)); } From 8dce54401006d70b9207cc5fd5823f92fc004b36 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 19 Mar 2015 00:24:57 +0900 Subject: [PATCH 15/43] Must resolve broadcast join bugs --- .../apache/tajo/master/exec/DDLExecutor.java | 12 +- .../engine/planner/QueryPlanTestCaseBase.java | 233 +++++++++++++++++- .../planner/TajoPlanTestingUtility.java | 70 ++++-- .../engine/planner/TestJoinOrderOptimize.java | 136 ++++++++++ .../testJoinWithMultipleJoinQual4.sql | 10 + ...CrossJoinWithThetaJoinConditionInWhere.sql | 3 +- .../apache/tajo/plan/LogicalOptimizer.java | 23 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 214 ++++++++-------- .../tajo/plan/joinorder/JoinOrderingUtil.java | 105 +++++++- 9 files changed, 643 insertions(+), 163 deletions(-) create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java index 2030b55829..9e1aab8ad4 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java @@ -18,6 +18,7 @@ package org.apache.tajo.master.exec; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -54,12 +55,16 @@ public class DDLExecutor { private final TajoMaster.MasterContext context; private final CatalogService catalog; - private final StorageManager storageManager; public DDLExecutor(TajoMaster.MasterContext context) { this.context = context; this.catalog = context.getCatalog(); - this.storageManager = context.getStorageManager(); + } + + @VisibleForTesting + public DDLExecutor(CatalogService catalog) { + this.catalog = catalog; + this.context = null; } public boolean execute(QueryContext queryContext, LogicalPlan plan) throws IOException { @@ -212,7 +217,7 @@ private TableDesc createTable(QueryContext queryContext, CreateTableNode createT public TableDesc createTable(QueryContext queryContext, String tableName, CatalogProtos.StoreType storeType, Schema schema, TableMeta meta, Path path, boolean isExternal, - PartitionMethodDesc partitionDesc, boolean ifNotExists) throws IOException { + @Nullable PartitionMethodDesc partitionDesc, boolean ifNotExists) throws IOException { String databaseName; String simpleTableName; if (CatalogUtil.isFQTableName(tableName)) { @@ -261,7 +266,6 @@ public TableDesc createTable(QueryContext queryContext, String tableName, Catalo * @param purge Remove all data if purge is true. */ public boolean dropTable(QueryContext queryContext, String tableName, boolean ifExists, boolean purge) { - CatalogService catalog = context.getCatalog(); String databaseName; String simpleTableName; diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java index e575e35a08..1985272557 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java @@ -21,14 +21,20 @@ import com.google.protobuf.ServiceException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.TajoConstants; +import org.apache.tajo.algebra.*; +import org.apache.tajo.annotation.Nullable; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.CatalogUtil; +import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.cli.tsql.ParsedResult; import org.apache.tajo.cli.tsql.SimpleParser; import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.plan.PlanningException; import org.apache.tajo.storage.StorageUtil; import org.apache.tajo.util.FileUtil; import org.junit.AfterClass; @@ -39,16 +45,16 @@ import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class QueryPlanTestCaseBase { private static final Log LOG = LogFactory.getLog(QueryPlanTestCaseBase.class); @@ -257,4 +263,225 @@ private void verifyPlan(String message, String res, Path resultFile) throws SQLE String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); assertEquals(message, expectedResult.trim(), actualResult.trim()); } + + public void executeDDLString(String ddl) throws IOException, PlanningException { + testBase.util.executeDDL(ddl); + } + + public List executeDDL(String ddlFileName, @Nullable String [] args) throws Exception { + return executeDDL(ddlFileName, null, true, args); + } + + /** + * + * Execute a data definition language (DDL) template. A general SQL DDL statement can be included in this file. But, + * for user-specified table name or exact external table path, you must use some format string to indicate them. + * The format string will be replaced by the corresponding arguments. + * + * The below is predefined format strings: + *
    + *
  • ${table.path} - It is replaced by the absolute file path that dataFileName points.
  • + *
  • ${i} - It is replaced by the corresponding element of args. For example, ${0} and ${1} are + * replaced by the first and second elements of args respectively
  • . It uses zero-based index. + *
+ * + * Example ddl + *
+   *   CREATE EXTERNAL TABLE ${0} (
+   *     t_timestamp  TIMESTAMP,
+   *     t_date    DATE
+   *   ) USING CSV LOCATION ${table.path}
+   * 
+ * + * @param ddlFileName A file name, containing a data definition statement. + * @param dataFileName A file name, containing data rows, which columns have to be separated by vertical bar '|'. + * This file name is used for replacing some format string indicating an external table location. + * @param args A list of arguments, each of which is used to replace corresponding variable which has a form of ${i}. + * @return The table names created + */ + public List executeDDL(String ddlFileName, @Nullable String dataFileName, @Nullable String ... args) + throws Exception { + + return executeDDL(ddlFileName, dataFileName, true, args); + } + + private List executeDDL(String ddlFileName, @Nullable String dataFileName, boolean isLocalTable, + @Nullable String[] args) throws Exception { + + Path ddlFilePath = new Path(currentQueryPath, ddlFileName); + FileSystem fs = ddlFilePath.getFileSystem(conf); + assertTrue(ddlFilePath + " existence check", fs.exists(ddlFilePath)); + + String template = FileUtil.readTextFile(new File(ddlFilePath.toUri())); + String dataFilePath = null; + if (dataFileName != null) { + dataFilePath = getDataSetFile(dataFileName).toString(); + } + String compiled = compileTemplate(template, dataFilePath, args); + + List parsedResults = SimpleParser.parseScript(compiled); + List createdTableNames = new ArrayList(); + + for (ParsedResult parsedResult : parsedResults) { + // parse a statement + Expr expr = testBase.util.getSQLAnalyzer().parse(parsedResult.getHistoryStatement()); + assertNotNull(ddlFilePath + " cannot be parsed", expr); + + if (expr.getType() == OpType.CreateTable) { + CreateTable createTable = (CreateTable) expr; + String tableName = createTable.getTableName(); + assertTrue("Table [" + tableName + "] creation is failed.", + testBase.util.executeDDL(parsedResult.getHistoryStatement())); + + TableDesc createdTable = catalog.getTableDesc(tableName); + String createdTableName = createdTable.getName(); + + assertTrue("table '" + createdTableName + "' creation check", catalog.existsTable(createdTableName)); + if (isLocalTable) { + createdTableGlobalSet.add(createdTableName); + createdTableNames.add(tableName); + } + } else if (expr.getType() == OpType.DropTable) { + DropTable dropTable = (DropTable) expr; + String tableName = dropTable.getTableName(); + assertTrue("table '" + tableName + "' existence check", + catalog.existsTable(CatalogUtil.buildFQName(currentDatabase, tableName))); + assertTrue("table drop is failed.", testBase.util.executeDDL(parsedResult.getHistoryStatement())); + assertFalse("table '" + tableName + "' dropped check", + catalog.existsTable(CatalogUtil.buildFQName(currentDatabase, tableName))); + if (isLocalTable) { + createdTableGlobalSet.remove(tableName); + } + } else if (expr.getType() == OpType.AlterTable) { + assertTrue(ddlFilePath + ": ALTER TABLE is not supported yet.", false); + } else { + assertTrue(ddlFilePath + " is not a Create or Drop Table statement", false); + } + } + + return createdTableNames; + } + + /** + * Replace format strings by a given parameters. + * + * @param template + * @param dataFileName The data file name to replace ${table.path} + * @param args The list argument to replace each corresponding format string ${i}. ${i} uses zero-based index. + * @return A string compiled + */ + private String compileTemplate(String template, @Nullable String dataFileName, @Nullable String ... args) { + String result; + if (dataFileName != null) { + result = template.replace("${table.path}", "\'" + dataFileName + "'"); + } else { + result = template; + } + + if (args != null) { + for (int i = 0; i < args.length; i++) { + result = result.replace("${" + i + "}", args[i]); + } + } + return result; + } + + public void createTable(String ddl, String location, String[] dataRows) throws IOException, PlanningException { + Path tablePath = new Path(location); + FileSystem fs = tablePath.getFileSystem(testBase.util.getConf()); + FSDataOutputStream out = fs.create(tablePath); + for (String row : dataRows) { + out.writeUTF(row); + } + out.close(); + + executeDDLString(ddl); + } + + /** + * Reads data file from Test Cluster's HDFS + * @param path data parent path + * @return data file's contents + * @throws Exception + */ + public String getTableFileContents(Path path) throws Exception { + FileSystem fs = path.getFileSystem(conf); + + FileStatus[] files = fs.listStatus(path); + + if (files == null || files.length == 0) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + byte[] buf = new byte[1024]; + + for (FileStatus file: files) { + if (file.isDirectory()) { + sb.append(getTableFileContents(file.getPath())); + continue; + } + + InputStream in = fs.open(file.getPath()); + try { + while (true) { + int readBytes = in.read(buf); + if (readBytes <= 0) { + break; + } + + sb.append(new String(buf, 0, readBytes)); + } + } finally { + in.close(); + } + } + + return sb.toString(); + } + +// /** +// * Reads data file from Test Cluster's HDFS +// * @param tableName +// * @return data file's contents +// * @throws Exception +// */ +// public String getTableFileContents(String tableName) throws Exception { +// TableDesc tableDesc = testingCluster.getMaster().getCatalog().getTableDesc(getCurrentDatabase(), tableName); +// if (tableDesc == null) { +// return null; +// } +// +// Path path = new Path(tableDesc.getPath()); +// return getTableFileContents(path); +// } +// +// public List listTableFiles(String tableName) throws Exception { +// TableDesc tableDesc = testingCluster.getMaster().getCatalog().getTableDesc(getCurrentDatabase(), tableName); +// if (tableDesc == null) { +// return null; +// } +// +// Path path = new Path(tableDesc.getPath()); +// FileSystem fs = path.getFileSystem(conf); +// +// return listFiles(fs, path); +// } + + private List listFiles(FileSystem fs, Path path) throws Exception { + List result = new ArrayList(); + FileStatus[] files = fs.listStatus(path); + if (files == null || files.length == 0) { + return result; + } + + for (FileStatus eachFile: files) { + if (eachFile.isDirectory()) { + result.addAll(listFiles(fs, eachFile.getPath())); + } else { + result.add(eachFile.getPath()); + } + } + return result; + } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java index d7171b016e..a2dba6829e 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -34,6 +34,8 @@ import org.apache.tajo.engine.planner.global.GlobalPlanner; import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.engine.query.QueryContext; +import org.apache.tajo.master.TajoMaster; +import org.apache.tajo.master.exec.DDLExecutor; import org.apache.tajo.plan.LogicalOptimizer; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlanner; @@ -48,6 +50,12 @@ public class TajoPlanTestingUtility { private static final Log LOG = LogFactory.getLog(TajoPlanTestingUtility.class); + /** + * Default parent directory for test output. + */ + public static final String DEFAULT_TEST_DIRECTORY = "target/" + + System.getProperty("tajo.test.data.dir", "test-data"); + private TajoConf conf; private TajoTestingCluster util; private CatalogService catalog; @@ -56,6 +64,7 @@ public class TajoPlanTestingUtility { private LogicalPlanner planner; private LogicalOptimizer optimizer; private GlobalPlanner globalPlanner; + private DDLExecutor ddlExecutor; public void setup(String[] names, String[] tablepaths, @@ -71,33 +80,40 @@ public void setup(String[] names, catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); util.getMiniCatalogCluster().getCatalogServer().reloadBuiltinFunctions(FunctionLoader.findLegacyFunctions()); - FileSystem fs = FileSystem.getLocal(conf); - Path rootDir = TajoConf.getWarehouseDir(conf); - fs.mkdirs(rootDir); - for (int i = 0; i < tablepaths.length; i++) { - Path localPath = new Path(tablepaths[i]); - Path tablePath = new Path(rootDir, names[i]); - fs.mkdirs(tablePath); - Path dfsPath = new Path(tablePath, localPath.getName()); - fs.copyFromLocalFile(localPath, dfsPath); - TableMeta meta = CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option); - - // Add fake table statistic data to tables. - // It gives more various situations to unit tests. - TableStats stats = new TableStats(); - stats.setNumBytes(TPCH.tableVolumes.get(names[i])); - TableDesc tableDesc = new TableDesc( - CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), schemas[i], meta, - tablePath.toUri()); - tableDesc.setStats(stats); - catalog.createTable(tableDesc); - } - defaultContext = LocalTajoTestingUtility.createDummyContext(conf); analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog); optimizer = new LogicalOptimizer(conf); globalPlanner = new GlobalPlanner(conf, catalog); + ddlExecutor = new DDLExecutor(catalog); + +// FileSystem fs = FileSystem.getLocal(conf); +// Path rootDir = TajoConf.getWarehouseDir(conf); +// fs.mkdirs(rootDir); +// for (int i = 0; i < tablepaths.length; i++) { +// Path localPath = new Path(tablepaths[i]); +// Path tablePath = new Path(rootDir, names[i]); +// fs.mkdirs(tablePath); +// Path dfsPath = new Path(tablePath, localPath.getName()); +// fs.copyFromLocalFile(localPath, dfsPath); +// TableMeta meta = CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option); +// +// // Add fake table statistic data to tables. +// // It gives more various situations to unit tests. +// TableStats stats = new TableStats(); +// stats.setNumBytes(TPCH.tableVolumes.get(names[i])); +// TableDesc tableDesc = new TableDesc( +// CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), schemas[i], meta, +// tablePath.toUri()); +// tableDesc.setStats(stats); +// catalog.createTable(tableDesc); +// } + + for (int i = 0; i < tablepaths.length; i++) { + ddlExecutor.createTable(defaultContext, CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), + CatalogProtos.StoreType.CSV, schemas[i], CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option), + new Path(tablepaths[i]), true, null, true); + } } public void shutdown() { @@ -107,7 +123,7 @@ public void shutdown() { public String execute(String query) throws PlanningException, IOException { Expr expr = analyzer.parse(query); LogicalPlan plan = planner.createPlan(defaultContext, expr); - optimizer.optimize(plan); + optimizer.optimize(defaultContext, plan); QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0); MasterPlan masterPlan = new MasterPlan(queryId, defaultContext, plan); @@ -131,4 +147,12 @@ public CatalogService getCatalog() { public SQLAnalyzer getSQLAnalyzer() { return analyzer; } + + public boolean executeDDL(String query) throws PlanningException, IOException { + Expr expr = analyzer.parse(query); + LogicalPlan plan = planner.createPlan(defaultContext, expr); + optimizer.optimize(defaultContext, plan); + + return ddlExecutor.execute(defaultContext, plan); + } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index 68c5bd91fa..0579504ca8 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -18,10 +18,52 @@ package org.apache.tajo.engine.planner; +import org.apache.tajo.IntegrationTest; +import org.apache.tajo.TajoConstants; +import org.apache.tajo.conf.TajoConf; import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import java.util.Arrays; +import java.util.Collection; + +@Category(IntegrationTest.class) +@RunWith(Parameterized.class) public class TestJoinOrderOptimize extends QueryPlanTestCaseBase { + public TestJoinOrderOptimize(String joinOption) { + super(TajoConstants.DEFAULT_DATABASE_NAME); + + testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, + TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.defaultVal); + testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, + TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.defaultVal); + + testBase.util.getConf().set( + TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, + TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.defaultVal); + + testBase.util.getConf().set(TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, + TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.defaultVal); + testBase.util.getConf().set(TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.varname, + TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.defaultVal); + + if (joinOption.indexOf("NoBroadcast") >= 0) { + testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); + testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, "-1"); + } + } + + @Parameterized.Parameters + public static Collection generateParameters() { + return Arrays.asList(new Object[][]{ + {"NoBroadcast"}, + {"Broadcast"}, + }); + } + @Test public final void test() throws Exception { String query = "select count(*) from nation, region where n_regionkey = r_regionkey "; @@ -53,4 +95,98 @@ public final void testWhereClauseJoin6() throws Exception { String plan = executeQuery(); System.out.println(plan); } + + @Test + public final void testJoinWithMultipleJoinQual4() throws Exception { + String plan = executeQuery(); + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { + createOuterJoinTestTable(); + try { + String plan = executeString( + "select t1.id, t1.name, t2.id, t3.id\n" + + "from default.table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "left outer join table13 t3\n" + + "on t1.id = t3.id and t2.id = t3.id"); + +// System.out.println(plan); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { + createOuterJoinTestTable(); + try { + String res = executeString( + "select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "right outer join table12 t2 \n" + + "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + + "right outer join table13 t3\n" + + "on t1.id = t3.id " + ); + } finally { + dropOuterJoinTestTable(); + } + } + + private void createOuterJoinTestTable() throws Exception { + String table = "table11"; + String location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + String ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table11-1", "2|table11-2", "3|table11-3" }); + + table = "table12"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table12-1" }); + + table = "table13"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "2|table13-2", "3|table13-3" }); + + table = "table14"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4" }); + + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { + // outer -> outer -> inner + createOuterJoinTestTable(); + try { + String res = executeString( + "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + + "from table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "left outer join table13 t3\n" + + "on t2.id = t3.id\n" + + "inner join table14 t4\n" + + "on t2.id = t4.id" + ); + } finally { + dropOuterJoinTestTable(); + } + } + + private void dropOuterJoinTestTable() throws Exception { + executeDDLString("DROP TABLE table11 PURGE;"); + executeDDLString("DROP TABLE table12 PURGE;"); + executeDDLString("DROP TABLE table13 PURGE;"); + executeDDLString("DROP TABLE table14 PURGE;"); + } } diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql new file mode 100644 index 0000000000..4519de710d --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql @@ -0,0 +1,10 @@ +select t.n_nationkey, t.n_name, t.n_regionkey, t.n_comment, ps.ps_availqty, s.s_suppkey +from ( + select n_nationkey, n_name, n_regionkey, n_comment + from nation n + join region r on (n.n_regionkey = r.r_regionkey) +) t +join supplier s on (s.s_nationkey = t.n_nationkey) +join partsupp ps on (s.s_suppkey = ps.ps_suppkey) +where t.n_name in ('ARGENTINA','ETHIOPIA', 'MOROCCO') +and t.n_nationkey > s.s_suppkey ; diff --git a/tajo-core/src/test/resources/queries/TestJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.sql b/tajo-core/src/test/resources/queries/TestJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.sql index 4e20e16baa..45666a6e84 100644 --- a/tajo-core/src/test/resources/queries/TestJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.sql +++ b/tajo-core/src/test/resources/queries/TestJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.sql @@ -1,2 +1,3 @@ select a.r_name as a_name, b.r_name as b_name from region a, region b -where a_name < b_name; \ No newline at end of file +where a_name < b_name +order by a_name; \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 8246498ac1..b11b55e4d3 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -113,7 +113,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding relations and filter expressions JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); - addJoinEdgesFromQuals(plan, block, joinGraphContext); + addJoinEdgesFromQuals(block, joinGraphContext); // finding join order and restore remain filter order FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); @@ -163,7 +163,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } } - private void addJoinEdgesFromQuals(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext context) + private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context) throws PlanningException { Map relationNodeMap = TUtil.newHashMap(); for (RelationNode relationNode : block.getRelations()) { @@ -193,17 +193,26 @@ private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContex if (left != null && right != null) { JoinEdge edge = graph.getEdge(left, right); if (edge == null) { - // If a join is an implicit join, its type is assumed as the INNER join - edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); - edge.addJoinQual(condition); + // check if they are connectable + Set leftInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, left); + Set rightInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, right); + for (JoinVertex leftInterchangeable : leftInterchangeables) { + for (JoinVertex rightInterchangeable : rightInterchangeables) { + if (graph.getEdge(leftInterchangeable, rightInterchangeable) != null) { + // If a join is an implicit join, its type is assumed as the INNER join + edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); + edge.addJoinQual(condition); + } + } + } } else { if (edge.getJoinType() == JoinType.CROSS) { edge.getJoinSpec().setType(JoinType.INNER); } + edge.addJoinQual(condition); } - edge.addJoinQual(condition); - if (PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { graph.addJoin(context, edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index ef0ae69c5f..b04e150dc4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -20,7 +20,6 @@ import org.apache.tajo.algebra.JoinType; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.AlgebraicUtil; @@ -70,8 +69,12 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo for (JoinEdge edge : willBeAdded) { joinGraph.addEdge(edge.getLeftVertex(), edge.getRightVertex(), edge); graphContext.removeCandidateJoinConditions(edge.getJoinQual()); + graphContext.removeCandidateJoinFilters(edge.getJoinQual()); } + graphContext.removeCandidateJoinConditions(bestPair.getJoinQual()); + graphContext.removeCandidateJoinFilters(bestPair.getJoinQual()); + vertexes.remove(bestPair.getLeftVertex()); vertexes.remove(bestPair.getRightVertex()); vertexes.add(newVertex); @@ -103,7 +106,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, Set willBeAdded, Set willBeRemoved) { if (edges != null) { for (JoinEdge edge : edges) { - if (!isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { + if (!JoinOrderingUtil.isEqualsOrSymmetric(vertex.getJoinEdge(), edge)) { if (isLeftVertex) { willBeAdded.add(context.getCachedOrNewJoinEdge(edge.getJoinSpec(), vertex, edge.getRightVertex())); } else { @@ -141,7 +144,7 @@ private JoinEdge getBestPair(LogicalPlan plan, JoinEdgeFinderContext context, Jo } context.reset(); - JoinEdge foundJoin = findJoin(plan, context, graphContext, graphContext.getMostLeftVertex(), outer, inner); + JoinEdge foundJoin = findJoin(context, graphContext, graphContext.getMostLeftVertex(), outer, inner); if (foundJoin == null) { continue; } @@ -195,9 +198,8 @@ public void reset() { * * @return If there is no join condition between two relation, it returns NULL value. */ - private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderContext context, - final JoinGraphContext graphContext, JoinVertex begin, - final JoinVertex leftTarget, final JoinVertex rightTarget) + private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraphContext graphContext, + JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { context.visited.add(begin); @@ -205,16 +207,16 @@ private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderCon JoinGraph joinGraph = graphContext.getJoinGraph(); // Find the matching edge from begin - Set interchangeableWithBegin = getAllInterchangeableVertexes(plan, graphContext, begin); + Set interchangeableWithBegin = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, begin); if (interchangeableWithBegin.contains(leftTarget)) { List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); if (edgesFromLeftTarget != null) { for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { - edgeFromLeftTarget = updateQualIfNecessary(graphContext, edgeFromLeftTarget); + edgeFromLeftTarget = JoinOrderingUtil.updateQualIfNecessary(graphContext, edgeFromLeftTarget); Set interchangeableWithRightVertex; if (edgeFromLeftTarget.getJoinType() == JoinType.INNER || edgeFromLeftTarget.getJoinType() == JoinType.CROSS) { - interchangeableWithRightVertex = getAllInterchangeableVertexes(plan, graphContext, + interchangeableWithRightVertex = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, edgeFromLeftTarget.getRightVertex()); } else { interchangeableWithRightVertex = TUtil.newHashSet(edgeFromLeftTarget.getRightVertex()); @@ -226,9 +228,9 @@ private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderCon // Since the targets of the both sides are searched with symmetric characteristics, // the join type is assumed as CROSS. joinGraph.addJoin(graphContext, new JoinSpec(JoinType.CROSS), leftTarget, rightTarget); - return updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); + return JoinOrderingUtil.updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); } else { - targetEdge = updateQualIfNecessary(graphContext, targetEdge); + targetEdge = JoinOrderingUtil.updateQualIfNecessary(graphContext, targetEdge); return targetEdge; } } @@ -256,10 +258,10 @@ private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderCon List edges = joinGraph.getOutgoingEdges(interchangeableVertex); if (edges != null) { for (JoinEdge edge : edges) { - for (JoinEdge associativeEdge : getAllAssociativeEdges(plan, graphContext, edge)) { + for (JoinEdge associativeEdge : JoinOrderingUtil.getAllAssociativeEdges(graphContext, edge)) { JoinVertex willBeVisited = associativeEdge.getLeftVertex(); if (!context.visited.contains(willBeVisited)) { - JoinEdge found = findJoin(plan, context, graphContext, associativeEdge.getLeftVertex(), leftTarget, + JoinEdge found = findJoin(context, graphContext, associativeEdge.getLeftVertex(), leftTarget, rightTarget); if (found != null) { return found; @@ -274,116 +276,100 @@ private static JoinEdge findJoin(final LogicalPlan plan, final JoinEdgeFinderCon // } } - private static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { - Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( - context.getCandidateJoinConditions(), edge, true); - additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( - context.getCandidateJoinFilters(), edge, false)); - context.getCandidateJoinConditions().removeAll(additionalPredicates); - context.getCandidateJoinFilters().removeAll(additionalPredicates); -// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); - edge.addJoinPredicates(additionalPredicates); - return edge; - } - - /** - * Find all edges that are associative with the given edge. - * - * @param context - * @param edge - * @return - */ - private static Set getAllAssociativeEdges(LogicalPlan plan, JoinGraphContext context, JoinEdge edge) { - Set associativeEdges = TUtil.newHashSet(); - JoinVertex start = edge.getRightVertex(); - List candidateEdges = context.getJoinGraph().getOutgoingEdges(start); - if (candidateEdges != null) { - for (JoinEdge candidateEdge : candidateEdges) { - candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (!isEqualsOrCommutative(edge, candidateEdge) && - JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { - associativeEdges.add(candidateEdge); - } - } - } - return associativeEdges; - } - +// private static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { +// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( +// context.getCandidateJoinConditions(), edge, true); +// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( +// context.getCandidateJoinFilters(), edge, false)); +//// context.getCandidateJoinConditions().removeAll(additionalPredicates); +//// context.getCandidateJoinFilters().removeAll(additionalPredicates); +//// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); +// edge.addJoinPredicates(additionalPredicates); +// return edge; +// } +// // /** +// * Find all edges that are associative with the given edge. // * // * @param context -// * @param v1 -// * @param v2 +// * @param edge // * @return // */ -// private static boolean isEqualsOrExchangeable(JoinGraphContext context, JoinVertex v1, JoinVertex v2) { -// for (JoinVertex commutative : getAllInterchangeableVertexes(context, v1)) { -// if (v2.equals(commutative)) { -// return true; +// private static Set getAllAssociativeEdges(LogicalPlan plan, JoinGraphContext context, JoinEdge edge) { +// Set associativeEdges = TUtil.newHashSet(); +// JoinVertex start = edge.getRightVertex(); +// List candidateEdges = context.getJoinGraph().getOutgoingEdges(start); +// if (candidateEdges != null) { +// for (JoinEdge candidateEdge : candidateEdges) { +// candidateEdge = updateQualIfNecessary(context, candidateEdge); +// if (!isEqualsOrSymmetric(edge, candidateEdge) && +// JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { +// associativeEdges.add(candidateEdge); +// } // } // } +// return associativeEdges; +// } +// +// private static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { +// if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { +// return true; +// } // return false; // } - - private static boolean isEqualsOrCommutative(JoinEdge edge1, JoinEdge edge2) { - if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { - return true; - } - return false; - } - - private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { - if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && - edge1.getRightVertex().equals(edge2.getLeftVertex()) && - edge1.getJoinSpec().equals(edge2.getJoinSpec()) && - PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { - return true; - } - return false; - } - - private static Set getAllInterchangeableVertexes(LogicalPlan plan, JoinGraphContext context, JoinVertex from) { - Set founds = TUtil.newHashSet(); - getAllInterchangeableVertexes(founds, plan, context, from); - return founds; - } - - private static void getAllInterchangeableVertexes(Set founds, LogicalPlan plan, JoinGraphContext context, - JoinVertex vertex) { - founds.add(vertex); - Set foundAtThis = TUtil.newHashSet(); - List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); - if (candidateEdges != null) { - for (JoinEdge candidateEdge : candidateEdges) { - candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) - && !founds.contains(candidateEdge.getRightVertex())) { - List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); - boolean reacheable = true; - if (rightEdgesOfCandidate != null) { - for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { - rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); -// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { - if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && - !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { - reacheable = false; - break; - } - } - } - if (reacheable) { - foundAtThis.add(candidateEdge.getRightVertex()); - } - } - } - if (foundAtThis.size() > 0) { -// founds.addAll(foundAtThis); - for (JoinVertex v : foundAtThis) { - getAllInterchangeableVertexes(founds, plan, context, v); - } - } - } - } +// +// private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { +// if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && +// edge1.getRightVertex().equals(edge2.getLeftVertex()) && +// edge1.getJoinSpec().equals(edge2.getJoinSpec()) && +// PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { +// return true; +// } +// return false; +// } +// +// private static Set getAllInterchangeableVertexes(LogicalPlan plan, JoinGraphContext context, JoinVertex from) { +// Set founds = TUtil.newHashSet(); +// getAllInterchangeableVertexes(founds, plan, context, from); +// return founds; +// } +// +// private static void getAllInterchangeableVertexes(Set founds, LogicalPlan plan, JoinGraphContext context, +// JoinVertex vertex) { +// founds.add(vertex); +// Set foundAtThis = TUtil.newHashSet(); +// List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); +// if (candidateEdges != null) { +// for (JoinEdge candidateEdge : candidateEdges) { +// candidateEdge = updateQualIfNecessary(context, candidateEdge); +// if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) +// && !founds.contains(candidateEdge.getRightVertex())) { +// List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); +// boolean reacheable = true; +// if (rightEdgesOfCandidate != null) { +// for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { +// rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); +//// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { +// if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && +// !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { +// reacheable = false; +// break; +// } +// } +// } +// if (reacheable) { +// foundAtThis.add(candidateEdge.getRightVertex()); +// } +// } +// } +// if (foundAtThis.size() > 0) { +//// founds.addAll(foundAtThis); +// for (JoinVertex v : foundAtThis) { +// getAllInterchangeableVertexes(founds, plan, context, v); +// } +// } +// } +// } /** * Getting a cost of one join diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 5d6120c4bb..cd394153b7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -34,6 +34,7 @@ import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; +import java.util.List; import java.util.Set; import java.util.Stack; @@ -248,15 +249,97 @@ public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan } } -// public static JoinNode createJoinNodeFromEdge(LogicalPlan plan, JoinEdge edge) { -// JoinNode node = plan.createNode(JoinNode.class); -// -// node.init(edge.getJoinType(), -// edge.getLeftVertex().getCorrespondingNode(), -// edge.getRightVertex().getCorrespondingNode()); -// if (edge.hasJoinQual()) { -// node.setJoinQual(edge.getSingletonJoinQual()); -// } -// return node; -// } + public static Set getAllInterchangeableVertexes(JoinGraphContext context, JoinVertex from) { + Set founds = TUtil.newHashSet(); + getAllInterchangeableVertexes(founds, context, from); + return founds; + } + + public static void getAllInterchangeableVertexes(Set founds, JoinGraphContext context, + JoinVertex vertex) { + founds.add(vertex); + Set foundAtThis = TUtil.newHashSet(); + List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); + if (candidateEdges != null) { + for (JoinEdge candidateEdge : candidateEdges) { + candidateEdge = updateQualIfNecessary(context, candidateEdge); + if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) + && !founds.contains(candidateEdge.getRightVertex())) { + List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); + boolean reacheable = true; + if (rightEdgesOfCandidate != null) { + for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { + rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); +// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { + if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && + !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { + reacheable = false; + break; + } + } + } + if (reacheable) { + foundAtThis.add(candidateEdge.getRightVertex()); + } + } + } + if (foundAtThis.size() > 0) { +// founds.addAll(foundAtThis); + for (JoinVertex v : foundAtThis) { + getAllInterchangeableVertexes(founds, context, v); + } + } + } + } + + public static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { + if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { + return true; + } + return false; + } + + public static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { + if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && + edge1.getRightVertex().equals(edge2.getLeftVertex()) && + edge1.getJoinSpec().equals(edge2.getJoinSpec()) && + PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { + return true; + } + return false; + } + + public static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { + Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( + context.getCandidateJoinConditions(), edge, true); + additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( + context.getCandidateJoinFilters(), edge, false)); +// context.getCandidateJoinConditions().removeAll(additionalPredicates); +// context.getCandidateJoinFilters().removeAll(additionalPredicates); + edge.addJoinPredicates(additionalPredicates); + return edge; + } + + /** + * Find all edges that are associative with the given edge. + * + * @param context + * @param edge + * @return + */ + public static Set getAllAssociativeEdges(JoinGraphContext context, JoinEdge edge) { + Set associativeEdges = TUtil.newHashSet(); + JoinVertex start = edge.getRightVertex(); + List candidateEdges = context.getJoinGraph().getOutgoingEdges(start); + if (candidateEdges != null) { + for (JoinEdge candidateEdge : candidateEdges) { + candidateEdge = updateQualIfNecessary(context, candidateEdge); + if (!isEqualsOrSymmetric(edge, candidateEdge) && + JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { + associativeEdges.add(candidateEdge); + } + } + } + return associativeEdges; + } } From dcc6e8ac7adae598062386c30a387cf87954fa1e Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 19 Mar 2015 01:21:20 +0900 Subject: [PATCH 16/43] TAJO-1352_4 --- .../planner/global/TestBroadcastJoinPlan.java | 8 +++---- .../tajo/engine/query/TestJoinQuery.java | 8 +++---- .../GreedyHeuristicJoinOrderAlgorithm.java | 24 +++++-------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index 990b96240d..d7fe2395b2 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -94,12 +94,12 @@ public void setUp() throws Exception { Schema smallTable2Schema = new Schema(); smallTable2Schema.addColumn("small2_id", TajoDataTypes.Type.INT4); smallTable2Schema.addColumn("small2_contents", TajoDataTypes.Type.TEXT); - smallTable2 = makeTestData("default.small2", smallTable2Schema, 10 * 1024); + smallTable2 = makeTestData("default.small2", smallTable2Schema, 10 * 1024 + 128); Schema smallTable3Schema = new Schema(); smallTable3Schema.addColumn("small3_id", TajoDataTypes.Type.INT4); smallTable3Schema.addColumn("small3_contents", TajoDataTypes.Type.TEXT); - smallTable3 = makeTestData("default.small3", smallTable3Schema, 10 * 1024); + smallTable3 = makeTestData("default.small3", smallTable3Schema, 10 * 1024 + 256); Schema largeTable1Schema = new Schema(); largeTable1Schema.addColumn("large1_id", TajoDataTypes.Type.INT4); @@ -109,12 +109,12 @@ public void setUp() throws Exception { Schema largeTable2Schema = new Schema(); largeTable2Schema.addColumn("large2_id", TajoDataTypes.Type.INT4); largeTable2Schema.addColumn("large2_contents", TajoDataTypes.Type.TEXT); - largeTable2 = makeTestData("default.large2", largeTable2Schema, 2048 * 1024); //2M + largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024 + 1024); //1M + 1K Schema largeTable3Schema = new Schema(); largeTable3Schema.addColumn("large3_id", TajoDataTypes.Type.INT4); largeTable3Schema.addColumn("large3_contents", TajoDataTypes.Type.TEXT); - largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024); //1M + largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024 + 2048); //1M + 2K catalog.createTable(smallTable1); catalog.createTable(smallTable2); diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index af6b2eb2b4..4e831b4320 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -667,11 +667,11 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { try { ResultSet res = executeString( "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + - "from table11 t1\n" + - "left outer join table12 t2\n" + - "on t1.id = t2.id\n" + + "from table12 t2\n" + "left outer join table13 t3\n" + "on t2.id = t3.id\n" + + "left outer join table11 t1\n" + + "on t3.id = t1.id\n" + "inner join table14 t4\n" + "on t2.id = t4.id" ); @@ -679,7 +679,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { String expected = "id,name,id,id,id\n" + "-------------------------------\n" + - "1,table11-1,1,null,1\n"; + "null,null,1,null,1\n"; String result = resultSetToString(res); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index b04e150dc4..405ae5a5a5 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -18,6 +18,8 @@ package org.apache.tajo.plan.joinorder; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.util.PlannerUtil; @@ -35,6 +37,7 @@ */ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { public static double DEFAULT_SELECTION_FACTOR = 0.1; + private static final Log LOG = LogFactory.getLog(GreedyHeuristicJoinOrderAlgorithm.class); @Override public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext graphContext) @@ -47,7 +50,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdgeFinderContext context = new JoinEdgeFinderContext(); JoinGraph joinGraph = graphContext.getJoinGraph(); while (vertexes.size() > 1) { - JoinEdge bestPair = getBestPair(plan, context, graphContext, vertexes); + JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) @@ -128,7 +131,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(LogicalPlan plan, JoinEdgeFinderContext context, JoinGraphContext graphContext, + private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; @@ -146,6 +149,7 @@ private JoinEdge getBestPair(LogicalPlan plan, JoinEdgeFinderContext context, Jo context.reset(); JoinEdge foundJoin = findJoin(context, graphContext, graphContext.getMostLeftVertex(), outer, inner); if (foundJoin == null) { + LOG.error("Join between (" + outer + ", " + inner + ") is not found."); continue; } // Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( @@ -238,22 +242,6 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } } -// if (begin.equals(leftTarget)) { -// List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); -// if (edgesFromLeftTarget != null) { -// for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { -// if (edgeFromLeftTarget.getRightVertex().equals(rightTarget)) { -// return edgeFromLeftTarget; -// } -// } -// } -// // not found -// return null; -// } else { - // move to right if associative -// for (JoinVertex reacheableVertex : getAllInterchangeableVertexes(joinGraph, begin)) { - - for (JoinVertex interchangeableVertex : interchangeableWithBegin) { List edges = joinGraph.getOutgoingEdges(interchangeableVertex); if (edges != null) { From 91b6551ee538dbd5f8de3f68434e5fbfa73bb5c4 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 19 Mar 2015 11:32:05 +0900 Subject: [PATCH 17/43] TAJO-1352_4 --- .../engine/planner/TestJoinOrderOptimize.java | 5 +++ .../planner/global/TestBroadcastJoinPlan.java | 39 ++++++++++++------- .../testJoinWithMultipleJoinQual1.sql | 20 ++++++++++ .../tajo/plan/joinorder/JoinOrderingUtil.java | 13 ++++--- 4 files changed, 59 insertions(+), 18 deletions(-) create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index 0579504ca8..3c523137f3 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -96,6 +96,11 @@ public final void testWhereClauseJoin6() throws Exception { System.out.println(plan); } + @Test + public final void testJoinWithMultipleJoinQual1() throws Exception { + String plan = executeQuery(); + } + @Test public final void testJoinWithMultipleJoinQual4() throws Exception { String plan = executeQuery(); diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index d7fe2395b2..6a7480010f 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -36,11 +36,11 @@ import org.apache.tajo.datum.TextDatum; import org.apache.tajo.engine.function.FunctionLoader; import org.apache.tajo.engine.parser.SQLAnalyzer; +import org.apache.tajo.engine.query.QueryContext; import org.apache.tajo.plan.LogicalOptimizer; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlanner; import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.engine.query.QueryContext; import org.apache.tajo.plan.logical.*; import org.apache.tajo.storage.*; import org.apache.tajo.util.CommonTestingUtil; @@ -51,6 +51,7 @@ import java.io.IOException; import java.util.Collection; +import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME; import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME; @@ -355,23 +356,35 @@ public final void testTwoBroadcastJoin() throws IOException, PlanningException { ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan); int index = 0; + boolean broadcastLarge1 = false, broadcastLarge2 = false, broadcastSmall1 = false, broadcastSmall2 = false; while (ebCursor.hasNext()) { ExecutionBlock eb = ebCursor.nextBlock(); - if(index == 0) { - Collection broadcastTables = eb.getBroadcastTables(); + Collection broadcastTables = eb.getBroadcastTables(); + if (index < 2) { assertEquals(1, broadcastTables.size()); + } - assertTrue(!broadcastTables.contains("default.large2")); - assertTrue(broadcastTables.contains("default.small2")); - } else if(index == 1) { - Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(1, broadcastTables.size()); - assertTrue(!broadcastTables.contains("default.large1")); - assertTrue(broadcastTables.contains("default.small1")); + broadcastLarge1 |= broadcastTables.contains("default.large1"); + broadcastLarge2 |= broadcastTables.contains("default.large2"); + + if (!broadcastSmall1) { + broadcastSmall1 = broadcastTables.contains("default.small1"); + } else { + assertFalse("'default.small1' must be broadcasted only one time.", broadcastTables.contains("default.small1")); + } + if (!broadcastSmall2) { + broadcastSmall2 = broadcastTables.contains("default.small2"); + } else { + assertFalse("'default.small2' must be broadcasted only one time.", broadcastTables.contains("default.small2")); } index++; } + assertFalse("'default.large1' must not be broadcasted", broadcastLarge1); + assertFalse("'default.large2' must not be broadcasted", broadcastLarge2); + assertTrue("'default.small1' must be broadcasted", true); + assertTrue("'default.small2' must be broadcasted", true); + assertEquals(5, index); } @@ -609,9 +622,9 @@ public final void testLeftOuterJoinCase2() throws IOException, PlanningException @Test public final void testLeftOuterJoinCase3() throws IOException, PlanningException { // large1, large2, small1, large3, small2, small3 - String query = "select count(*) from large1 " + - "left outer join large2 on large1_id = large2_id " + - "left outer join small1 on large2_id = small1_id " + + String query = "select count(*) from small1 " + + "left outer join large2 on large2_id = small1_id " + + "left outer join large1 on large1_id = large2_id " + "left outer join large3 on large1_id = large3_id " + "left outer join small2 on large3_id = small2_id " + "left outer join small3 on large3_id = small3_id "; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql new file mode 100644 index 0000000000..9a04dc5d4d --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql @@ -0,0 +1,20 @@ +select + s.s_acctbal, + s.s_name, + n.n_name, + p.p_partkey, + p.p_mfgr, + s.s_address, + s.s_phone, + s.s_comment +from nation n +join region r on (n.n_regionkey = r.r_regionkey) +join supplier s on (s.s_nationkey = n.n_nationkey) +join partsupp ps on (s.s_suppkey = ps.ps_suppkey) +join part p on (p.p_partkey = ps.ps_partkey) +where n.n_regionkey = ps.ps_suppkey +order by + s.s_acctbal, + s.s_name, + n.n_name, + p.p_partkey; \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index cd394153b7..d0c61a0b54 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -108,11 +108,14 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE JoinedRelationsVertex tempLeftChild = new JoinedRelationsVertex(leftEdge); JoinEdge tempEdge = context.getCachedOrNewJoinEdge(rightEdge.getJoinSpec(), tempLeftChild, rightEdge.getRightVertex()); - if (!findJoinConditionForJoinVertex(context.getCandidateJoinConditions(), tempEdge, true).isEmpty()) { - return false; - } - if (!findJoinConditionForJoinVertex(context.getCandidateJoinFilters(), tempEdge, true).isEmpty()) { - return false; + if ((rightEdge.getJoinType() != JoinType.INNER && rightEdge.getJoinType() != JoinType.CROSS) + || (leftEdge.getJoinType() != JoinType.INNER && leftEdge.getJoinType() != JoinType.CROSS)) { + if (!findJoinConditionForJoinVertex(context.getCandidateJoinConditions(), tempEdge, true).isEmpty()) { + return false; + } + if (!findJoinConditionForJoinVertex(context.getCandidateJoinFilters(), tempEdge, true).isEmpty()) { + return false; + } } return true; } From 3cb707187136c28da2c2406ccbb3ad9f76735043 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 19 Mar 2015 21:16:37 +0900 Subject: [PATCH 18/43] TAJO-1352_4 --- .../planner/global/TestBroadcastJoinPlan.java | 32 ++++++---- .../GreedyHeuristicJoinOrderAlgorithm.java | 61 ++++++++++++++----- 2 files changed, 67 insertions(+), 26 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index 6a7480010f..2de3542010 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -19,6 +19,7 @@ package org.apache.tajo.engine.planner.global; import junit.framework.TestCase; +import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.LocalTajoTestingUtility; @@ -95,12 +96,12 @@ public void setUp() throws Exception { Schema smallTable2Schema = new Schema(); smallTable2Schema.addColumn("small2_id", TajoDataTypes.Type.INT4); smallTable2Schema.addColumn("small2_contents", TajoDataTypes.Type.TEXT); - smallTable2 = makeTestData("default.small2", smallTable2Schema, 10 * 1024 + 128); + smallTable2 = makeTestData("default.small2", smallTable2Schema, 20 * 1024); Schema smallTable3Schema = new Schema(); smallTable3Schema.addColumn("small3_id", TajoDataTypes.Type.INT4); smallTable3Schema.addColumn("small3_contents", TajoDataTypes.Type.TEXT); - smallTable3 = makeTestData("default.small3", smallTable3Schema, 10 * 1024 + 256); + smallTable3 = makeTestData("default.small3", smallTable3Schema, 30 * 1024); Schema largeTable1Schema = new Schema(); largeTable1Schema.addColumn("large1_id", TajoDataTypes.Type.INT4); @@ -110,12 +111,12 @@ public void setUp() throws Exception { Schema largeTable2Schema = new Schema(); largeTable2Schema.addColumn("large2_id", TajoDataTypes.Type.INT4); largeTable2Schema.addColumn("large2_contents", TajoDataTypes.Type.TEXT); - largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024 + 1024); //1M + 1K + largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024 + 20* 1024); //1M + 1K Schema largeTable3Schema = new Schema(); largeTable3Schema.addColumn("large3_id", TajoDataTypes.Type.INT4); largeTable3Schema.addColumn("large3_contents", TajoDataTypes.Type.TEXT); - largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024 + 2048); //1M + 2K + largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024 + 30 * 1024); //1M + 2K catalog.createTable(smallTable1); catalog.createTable(smallTable2); @@ -162,6 +163,7 @@ private TableDesc makeTestData(String tableName, Schema schema, int dataSize) th TableDesc tableDesc = CatalogUtil.newTableDesc(tableName, schema, tableMeta, dataPath); TableStats tableStats = new TableStats(); FileSystem fs = dataPath.getFileSystem(conf); + FileStatus fileStatus = fs.getFileStatus(dataPath); tableStats.setNumBytes(fs.getFileStatus(dataPath).getLen()); tableDesc.setStats(tableStats); @@ -295,8 +297,14 @@ public final void testBroadcastJoinAllSmallTables() throws IOException, Planning assertEquals(NodeType.SCAN, lastLeftNode.getType()); assertEquals(NodeType.SCAN, lastRightNode.getType()); - assertEquals("default.small1", ((ScanNode)lastLeftNode).getCanonicalName()); - assertEquals("default.small2", ((ScanNode)lastRightNode).getCanonicalName()); + + if (((ScanNode)lastLeftNode).getCanonicalName().equals("default.small1")) { + assertEquals("default.small2", ((ScanNode)lastRightNode).getCanonicalName()); + } else if (((ScanNode)lastRightNode).getCanonicalName().equals("default.small1")) { + assertEquals("default.small2", ((ScanNode)lastLeftNode).getCanonicalName()); + } else { + assertTrue("'default.small1' must be processed at the first execution block", false); + } } @Test @@ -432,9 +440,9 @@ public final void testNotBroadcastJoinSubquery() throws IOException, PlanningExc @Test public final void testBroadcastJoinSubquery() throws IOException, PlanningException { - String query = "select count(*) from large1 " + - "join small2 on large1_id = small2_id " + - "join (select * from small1) a on large1_id = a.small1_id"; + String query = "select count(*) from (select * from small2) a " + + "join large1 on large1_id = a.small2_id " + + "join small1 on large1_id = small1_id"; LogicalPlanner planner = new LogicalPlanner(catalog); LogicalOptimizer optimizer = new LogicalOptimizer(conf); @@ -467,7 +475,7 @@ public final void testBroadcastJoinSubquery() throws IOException, PlanningExcept assertEquals(1, broadcastTables.size()); assertTrue(!broadcastTables.contains("default.large1")); - assertTrue(broadcastTables.contains("default.small2")); + assertTrue(broadcastTables.contains("default.small1")); } else if(index == 1) { //LEAF, SUBQUERY Collection broadcastTables = eb.getBroadcastTables(); @@ -624,9 +632,9 @@ public final void testLeftOuterJoinCase3() throws IOException, PlanningException // large1, large2, small1, large3, small2, small3 String query = "select count(*) from small1 " + "left outer join large2 on large2_id = small1_id " + - "left outer join large1 on large1_id = large2_id " + + "right outer join large1 on large1_id = large2_id " + "left outer join large3 on large1_id = large3_id " + - "left outer join small2 on large3_id = small2_id " + + "right outer join small2 on large3_id = small2_id " + "left outer join small3 on large3_id = small3_id "; LogicalPlanner planner = new LogicalPlanner(catalog); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 405ae5a5a5..ed1debe844 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -366,34 +366,50 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join */ public static double getCost(JoinEdge joinEdge) { double filterFactor = 1; + double cost; if (joinEdge.getJoinType() != JoinType.CROSS) { // TODO - should consider join type // TODO - should statistic information obtained from query history filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); - return getCost(joinEdge.getLeftVertex()) * +// return getCost(joinEdge.getLeftVertex()) * +// getCost(joinEdge.getRightVertex()) * filterFactor; + cost = getCost(joinEdge.getLeftVertex()) * getCost(joinEdge.getRightVertex()) * filterFactor; } else { // make cost bigger if cross join - return Math.pow(getCost(joinEdge.getLeftVertex()) * +// return Math.pow(getCost(joinEdge.getLeftVertex()) * +// getCost(joinEdge.getRightVertex()), 2); + cost = Math.pow(getCost(joinEdge.getLeftVertex()) * getCost(joinEdge.getRightVertex()), 2); } + + LOG.info("cost of " + joinEdge + " : " + cost); + return cost; } public static double getCost(JoinVertex joinVertex) { + double cost; if (joinVertex instanceof RelationVertex) { - return getCost(((RelationVertex) joinVertex).getRelationNode()); +// return getCost(((RelationVertex) joinVertex).getRelationNode()); + cost = getCost(((RelationVertex) joinVertex).getRelationNode()); } else { - return getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); +// return getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); + cost = getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); } + LOG.info("cost of " + joinVertex + " : " + cost); + return cost; } // TODO - costs of other operator operators (e.g., group-by and sort) should be computed in proper manners. public static double getCost(LogicalNode node) { + double cost; switch (node.getType()) { case PROJECTION: ProjectionNode projectionNode = (ProjectionNode) node; - return getCost(projectionNode.getChild()); +// return getCost(projectionNode.getChild()); + cost = getCost(projectionNode.getChild()); + break; case JOIN: JoinNode joinNode = (JoinNode) node; @@ -401,32 +417,44 @@ public static double getCost(LogicalNode node) { if (joinNode.hasJoinQual()) { filterFactor = Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual()).length); - return getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()) * filterFactor; +// return getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()) * filterFactor; + cost = getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()) * filterFactor; } else { - return Math.pow(getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()), 2); +// return Math.pow(getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()), 2); + cost = Math.pow(getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()), 2); } + break; case SELECTION: SelectionNode selectionNode = (SelectionNode) node; - return getCost(selectionNode.getChild()) * +// return getCost(selectionNode.getChild()) * +// Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(selectionNode.getQual()).length); + cost = getCost(selectionNode.getChild()) * Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(selectionNode.getQual()).length); + break; case TABLE_SUBQUERY: TableSubQueryNode subQueryNode = (TableSubQueryNode) node; - return getCost(subQueryNode.getSubQuery()); +// return getCost(subQueryNode.getSubQuery()); + cost = getCost(subQueryNode.getSubQuery()); + break; case SCAN: ScanNode scanNode = (ScanNode) node; if (scanNode.getTableDesc().getStats() != null) { - double cost = ((ScanNode)node).getTableDesc().getStats().getNumBytes(); - return cost; + cost = ((ScanNode)node).getTableDesc().getStats().getNumBytes(); +// return cost; } else { - return Long.MAX_VALUE; +// return Long.MAX_VALUE; + cost = Long.MAX_VALUE; } + break; case UNION: UnionNode unionNode = (UnionNode) node; - return getCost(unionNode.getLeftChild()) + getCost(unionNode.getRightChild()); +// return getCost(unionNode.getLeftChild()) + getCost(unionNode.getRightChild()); + cost = getCost(unionNode.getLeftChild()) + getCost(unionNode.getRightChild()); + break; case EXCEPT: case INTERSECT: @@ -435,7 +463,12 @@ public static double getCost(LogicalNode node) { default: // all binary operators (join, union, except, and intersect) are handled in the above cases. // So, we need to handle only unary nodes in default. - return getCost(((UnaryNode) node).getChild()); +// return getCost(((UnaryNode) node).getChild()); + cost = getCost(((UnaryNode) node).getChild()); + break; } + + LOG.info("cost of " + node + " : " + cost); + return cost; } } \ No newline at end of file From 1cef1668e2915f67b2fab919e38c20b96e3b63ac Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Fri, 20 Mar 2015 14:43:40 +0900 Subject: [PATCH 19/43] Fix JoinBroadcast test --- .../planner/global/TestBroadcastJoinPlan.java | 88 +++++++++---------- .../TestJoinBroadcast/testLeftOuterJoin2.sql | 4 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index 2de3542010..4590325574 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -18,6 +18,7 @@ package org.apache.tajo.engine.planner.global; +import junit.framework.Assert; import junit.framework.TestCase; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; @@ -111,12 +112,12 @@ public void setUp() throws Exception { Schema largeTable2Schema = new Schema(); largeTable2Schema.addColumn("large2_id", TajoDataTypes.Type.INT4); largeTable2Schema.addColumn("large2_contents", TajoDataTypes.Type.TEXT); - largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024 + 20* 1024); //1M + 1K + largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024 + 20* 1024); //1M + 20K Schema largeTable3Schema = new Schema(); largeTable3Schema.addColumn("large3_id", TajoDataTypes.Type.INT4); largeTable3Schema.addColumn("large3_contents", TajoDataTypes.Type.TEXT); - largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024 + 30 * 1024); //1M + 2K + largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024 + 40 * 1024); //1M + 40K catalog.createTable(smallTable1); catalog.createTable(smallTable2); @@ -631,11 +632,11 @@ public final void testLeftOuterJoinCase2() throws IOException, PlanningException public final void testLeftOuterJoinCase3() throws IOException, PlanningException { // large1, large2, small1, large3, small2, small3 String query = "select count(*) from small1 " + - "left outer join large2 on large2_id = small1_id " + - "right outer join large1 on large1_id = large2_id " + - "left outer join large3 on large1_id = large3_id " + - "right outer join small2 on large3_id = small2_id " + - "left outer join small3 on large3_id = small3_id "; + "left outer join small2 on small1_id = small2_id " + + "left outer join small3 on small1_id = small3_id " + + "left outer join large1 on large1_id = small2_id " + + "left outer join large2 on large2_id = large1_id " + + "left outer join large3 on large1_id = large3_id "; LogicalPlanner planner = new LogicalPlanner(catalog); LogicalOptimizer optimizer = new LogicalOptimizer(conf); @@ -650,15 +651,17 @@ public final void testLeftOuterJoinCase3() throws IOException, PlanningException GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog); globalPlanner.build(masterPlan); - //(((((default.large1 ⟕ default.large2) ⟕ default.small1) ⟕ default.large3) ⟕ default.small2) ⟕ default.small3) + // (((((default.small1 ⟕ default.small2) ⟕ default.small3) ⟕ default.large1) ⟕ default.large2) ⟕ default.large3) /* - |-eb_1402634570910_0000_000007 - |-eb_1402634570910_0000_000006 (GROUP BY) - |-eb_1402634570910_0000_000005 (JOIN, broadcast small2, small3) - |-eb_1402634570910_0000_000004 (LEAF, scan large3) - |-eb_1402634570910_0000_000003 (JOIN, broadcast small1) - |-eb_1402634570910_0000_000002 (LEAF, scan large2) - |-eb_1402634570910_0000_000001 (LEAF, scan large1) + |-eb_1426822874997_0000_000011 + |-eb_1426822874997_0000_000010 (GRUOP BY) + |-eb_1426822874997_0000_000009 (GROUP BY - JOIN) + |-eb_1426822874997_0000_000008 (SCAN, large3) + |-eb_1426822874997_0000_000007 (JOIN, eb5, eb6) + |-eb_1426822874997_0000_000006 (SCAN, large2) + |-eb_1426822874997_0000_000005 (JOIN, eb3, eb4) + |-eb_1426822874997_0000_000004 (SCAN, large1) + |-eb_1426822874997_0000_000003 (JOIN, broadcast small1, small2, small3) */ ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan); int index = 0; @@ -666,51 +669,48 @@ public final void testLeftOuterJoinCase3() throws IOException, PlanningException ExecutionBlock eb = ebCursor.nextBlock(); if(index == 0) { LogicalNode node = eb.getPlan(); - assertEquals(NodeType.SCAN, node.getType()); - ScanNode scanNode = (ScanNode)node; - assertEquals("default.large1", scanNode.getCanonicalName()); - + assertEquals(NodeType.JOIN, node.getType()); Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(0, broadcastTables.size()); + assertEquals(2, broadcastTables.size()); + assertTrue(broadcastTables.contains("default.small2")); + assertTrue(broadcastTables.contains("default.small3")); } else if (index == 1) { LogicalNode node = eb.getPlan(); assertEquals(NodeType.SCAN, node.getType()); - ScanNode scanNode = (ScanNode)node; - assertEquals("default.large2", scanNode.getCanonicalName()); - - Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(0, broadcastTables.size()); } else if(index == 2) { LogicalNode node = eb.getPlan(); assertEquals(NodeType.JOIN, node.getType()); JoinNode joinNode = (JoinNode)node; - - ScanNode leftNode = ((JoinNode)joinNode.getLeftChild()).getLeftChild(); - ScanNode rightNode = ((JoinNode)joinNode.getLeftChild()).getRightChild(); - assertTrue(leftNode.getCanonicalName().indexOf("0000_000001") > 0); - assertTrue(rightNode.getCanonicalName().indexOf("0000_000002") > 0); - - Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(1, broadcastTables.size()); - assertTrue(broadcastTables.contains("default.small1")); + LogicalNode leftNode = joinNode.getLeftChild(); + LogicalNode rightNode = joinNode.getLeftChild(); + assertEquals(NodeType.SCAN, leftNode.getType()); + assertEquals(NodeType.SCAN, rightNode.getType()); } else if(index == 3) { LogicalNode node = eb.getPlan(); assertEquals(NodeType.SCAN, node.getType()); - ScanNode scanNode = (ScanNode)node; - assertEquals("default.large3", scanNode.getCanonicalName()); - - Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(0, broadcastTables.size()); } else if(index == 4) { - Collection broadcastTables = eb.getBroadcastTables(); - assertEquals(2, broadcastTables.size()); - assertTrue(broadcastTables.contains("default.small2")); - assertTrue(broadcastTables.contains("default.small3")); + LogicalNode node = eb.getPlan(); + assertEquals(NodeType.JOIN, node.getType()); + JoinNode joinNode = (JoinNode)node; + LogicalNode leftNode = joinNode.getLeftChild(); + LogicalNode rightNode = joinNode.getLeftChild(); + assertEquals(NodeType.SCAN, leftNode.getType()); + assertEquals(NodeType.SCAN, rightNode.getType()); + } else if (index == 5) { + LogicalNode node = eb.getPlan(); + assertEquals(NodeType.SCAN, node.getType()); + } else if (index == 6) { + LogicalNode node = eb.getPlan(); + assertEquals(NodeType.GROUP_BY, node.getType()); + assertEquals(NodeType.JOIN, ((GroupbyNode)node).getChild().getType()); + } else if (index == 7) { + LogicalNode node = eb.getPlan(); + assertEquals(NodeType.GROUP_BY, node.getType()); } index++; } - assertEquals(7, index); + assertEquals(9, index); } @Test diff --git a/tajo-core/src/test/resources/queries/TestJoinBroadcast/testLeftOuterJoin2.sql b/tajo-core/src/test/resources/queries/TestJoinBroadcast/testLeftOuterJoin2.sql index 40612001d1..1aa2870bc2 100644 --- a/tajo-core/src/test/resources/queries/TestJoinBroadcast/testLeftOuterJoin2.sql +++ b/tajo-core/src/test/resources/queries/TestJoinBroadcast/testLeftOuterJoin2.sql @@ -1,5 +1,5 @@ select a.l_orderkey, b.c_custkey, b.c_name, b.c_nationkey, d.n_name from lineitem_large a left outer join customer_large b on a.l_orderkey = b.c_custkey -left outer join orders c on b.c_custkey = c.o_custkey -left outer join nation d on a.l_orderkey = d.n_nationkey +left outer join orders c on a.l_partkey = c.o_custkey +left outer join nation d on a.l_orderkey = d.n_nationkey \ No newline at end of file From 38fb013fb530720dda03182f009f9cf3a0d53ea0 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Fri, 20 Mar 2015 19:07:28 +0900 Subject: [PATCH 20/43] TAJO-1352_4 --- .../engine/planner/QueryPlanTestCaseBase.java | 6 +- .../planner/TajoPlanTestingUtility.java | 8 +- .../engine/planner/TestJoinOrderOptimize.java | 60 ++---- .../testJoinWithMultipleJoinQual1.plan | 203 ++++++++++++++++++ .../testJoinWithMultipleJoinQual4.plan | 152 +++++++++++++ .../testJoinWithMultipleJoinTypes.plan | 110 ++++++++++ ...stLeftOuterJoinPredicationCaseByCase1.plan | 110 ++++++++++ ...stLeftOuterJoinPredicationCaseByCase2.plan | 141 ++++++++++++ ...tRightOuterJoinPredicationCaseByCase3.plan | 102 +++++++++ .../testTwoPartJoin.plan | 0 .../testWhereClauseJoin5.plan | 125 +++++++++++ .../testWhereClauseJoin6.plan | 164 ++++++++++++++ .../org/apache/tajo/plan/expr/InEval.java | 6 - .../apache/tajo/plan/logical/JoinNode.java | 5 +- 14 files changed, 1129 insertions(+), 63 deletions(-) create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java index 1985272557..accebc240b 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java @@ -26,7 +26,10 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.TajoConstants; -import org.apache.tajo.algebra.*; +import org.apache.tajo.algebra.CreateTable; +import org.apache.tajo.algebra.DropTable; +import org.apache.tajo.algebra.Expr; +import org.apache.tajo.algebra.OpType; import org.apache.tajo.annotation.Nullable; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.CatalogUtil; @@ -47,7 +50,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashSet; diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java index a2dba6829e..20fcc3f202 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -125,15 +125,11 @@ public String execute(String query) throws PlanningException, IOException { LogicalPlan plan = planner.createPlan(defaultContext, expr); optimizer.optimize(defaultContext, plan); - QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0); + QueryId queryId = QueryIdFactory.newQueryId(0, 0); MasterPlan masterPlan = new MasterPlan(queryId, defaultContext, plan); globalPlanner.build(masterPlan); - StringBuilder sb = new StringBuilder("********** Logical plan **********").append("\n\n"); - sb.append(masterPlan.getLogicalPlan().getLogicalPlanAsString()).append("\n\n"); - sb.append("********** Master plan **********").append("\n\n").append(masterPlan.toString()); - - return sb.toString(); + return masterPlan.toString(); } public TajoConf getConf() { diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index 3c523137f3..ecae2603e2 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -18,29 +18,15 @@ package org.apache.tajo.engine.planner; -import org.apache.tajo.IntegrationTest; import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf; import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - -@Category(IntegrationTest.class) -@RunWith(Parameterized.class) public class TestJoinOrderOptimize extends QueryPlanTestCaseBase { - public TestJoinOrderOptimize(String joinOption) { + public TestJoinOrderOptimize() { super(TajoConstants.DEFAULT_DATABASE_NAME); - testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, - TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.defaultVal); - testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, - TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.defaultVal); - testBase.util.getConf().set( TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.defaultVal); @@ -50,60 +36,38 @@ public TestJoinOrderOptimize(String joinOption) { testBase.util.getConf().set(TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.varname, TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.defaultVal); - if (joinOption.indexOf("NoBroadcast") >= 0) { - testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); - testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, "-1"); - } - } - - @Parameterized.Parameters - public static Collection generateParameters() { - return Arrays.asList(new Object[][]{ - {"NoBroadcast"}, - {"Broadcast"}, - }); - } - - @Test - public final void test() throws Exception { - String query = "select count(*) from nation, region where n_regionkey = r_regionkey "; - - System.out.println(executeString(query)); - } - - @Test - public final void testTwoPartJoin() throws Exception { - String plan = executeQuery(); - System.out.println(plan); - assertPlan(plan); + testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); + testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, "-1"); } @Test public final void testJoinWithMultipleJoinTypes() throws Exception { String plan = executeQuery(); - System.out.println(plan); + assertPlan(plan); } @Test public final void testWhereClauseJoin5() throws Exception { String plan = executeQuery(); - System.out.println(plan); + assertPlan(plan); } @Test public final void testWhereClauseJoin6() throws Exception { String plan = executeQuery(); - System.out.println(plan); + assertPlan(plan); } @Test public final void testJoinWithMultipleJoinQual1() throws Exception { String plan = executeQuery(); + assertPlan(plan); } @Test public final void testJoinWithMultipleJoinQual4() throws Exception { String plan = executeQuery(); + assertPlan(plan); } @Test @@ -118,7 +82,7 @@ public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { "left outer join table13 t3\n" + "on t1.id = t3.id and t2.id = t3.id"); -// System.out.println(plan); + assertPlan(plan); } finally { dropOuterJoinTestTable(); } @@ -128,7 +92,7 @@ public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { createOuterJoinTestTable(); try { - String res = executeString( + String plan = executeString( "select t1.id, t1.name, t2.id, t3.id\n" + "from table11 t1\n" + "right outer join table12 t2 \n" + @@ -136,6 +100,7 @@ public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { "right outer join table13 t3\n" + "on t1.id = t3.id " ); + assertPlan(plan); } finally { dropOuterJoinTestTable(); } @@ -173,7 +138,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { // outer -> outer -> inner createOuterJoinTestTable(); try { - String res = executeString( + String plan = executeString( "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + "from table11 t1\n" + "left outer join table12 t2\n" + @@ -183,6 +148,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { "inner join table14 t4\n" + "on t2.id = t4.id" ); + assertPlan(plan); } finally { dropOuterJoinTestTable(); } diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan new file mode 100644 index 0000000000..0b4ce0e3aa --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan @@ -0,0 +1,203 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000011) +------------------------------------------------------------------------------- +|-eb_0_0000_000011 + |-eb_0_0000_000010 + |-eb_0_0000_000009 + |-eb_0_0000_000008 + |-eb_0_0000_000007 + |-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000006 +6: eb_0_0000_000007 +7: eb_0_0000_000005 +8: eb_0_0000_000008 +9: eb_0_0000_000009 +10: eb_0_0000_000010 +11: eb_0_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4) + => out schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + => in schema: {(5) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_supplycost (FLOAT8), default.ps.ps_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +SCAN(3) on default.supplier as s + => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_suppkey (INT4), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_acctbal (FLOAT8), default.s.s_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4) + => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + => in schema: {(9) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(19) on eb_0_0000_000002 + => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0_0000_000001 + => out schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + => in schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +SCAN(7) on default.part as p + => target list: default.p.p_partkey (INT4), default.p.p_mfgr (TEXT) + => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} + => in schema: {(9) default.p.p_partkey (INT4), default.p.p_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_brand (TEXT), default.p.p_type (TEXT), default.p.p_size (INT4), default.p.p_container (TEXT), default.p.p_retailprice (FLOAT8), default.p.p_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) + => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(10) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} + SCAN(21) on eb_0_0000_000004 + => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} + => in schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} + SCAN(20) on eb_0_0000_000003 + => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + => in schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(23) on eb_0_0000_000007 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(22) on eb_0_0000_000006 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), num=32) + +SORT(26) + => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) AND default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT) + => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} + => in schema: {(12) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(25) on eb_0_0000_000008 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(24) on eb_0_0000_000005 + => out schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0_0000_000009 + +SORT(10) + => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) + SCAN(27) on eb_0_0000_000009 + => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} + => in schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000011 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan new file mode 100644 index 0000000000..3c92db357f --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan @@ -0,0 +1,152 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000008) +------------------------------------------------------------------------------- +|-eb_0_0000_000008 + |-eb_0_0000_000007 + |-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000004 +4: eb_0_0000_000005 +5: eb_0_0000_000003 +6: eb_0_0000_000006 +7: eb_0_0000_000007 +8: eb_0_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +SCAN(5) on default.supplier as s + => target list: default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) + => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_suppkey (INT4), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_acctbal (FLOAT8), default.s.s_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_supplycost (FLOAT8), default.ps.ps_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => in schema: {(4) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(17) on eb_0_0000_000002 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(16) on eb_0_0000_000001 + => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => in schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(4) as default.t + => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + PROJECTION(3) + => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + JOIN(12)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(5) default.r.r_regionkey (INT4), default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + SCAN(19) on eb_0_0000_000005 + => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + SCAN(18) on eb_0_0000_000004 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) + +SELECTION(9) + => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) + JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT), default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4) + => out schema: {(6) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT), default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4), default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(21) on eb_0_0000_000006 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(20) on eb_0_0000_000003 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000008 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan new file mode 100644 index 0000000000..6594bc8a2d --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan @@ -0,0 +1,110 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000006) +------------------------------------------------------------------------------- +|-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(5) on default.region as r + => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as c + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +JOIN(9)(INNER) + => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + SCAN(13) on eb_0_0000_000002 + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + SCAN(12) on eb_0_0000_000001 + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(3) as default.n + => Targets: default.n.n_nationkey (INT4) + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + PROJECTION(2) + => Targets: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(1) default.nation.n_nationkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +JOIN(10)(INNER) + => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} + SCAN(15) on eb_0_0000_000004 + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + SCAN(14) on eb_0_0000_000003 + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan new file mode 100644 index 0000000000..6594bc8a2d --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan @@ -0,0 +1,110 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000006) +------------------------------------------------------------------------------- +|-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(5) on default.region as r + => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as c + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +JOIN(9)(INNER) + => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + SCAN(13) on eb_0_0000_000002 + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + SCAN(12) on eb_0_0000_000001 + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(3) as default.n + => Targets: default.n.n_nationkey (INT4) + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + PROJECTION(2) + => Targets: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(1) default.nation.n_nationkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +JOIN(10)(INNER) + => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} + SCAN(15) on eb_0_0000_000004 + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + SCAN(14) on eb_0_0000_000003 + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan new file mode 100644 index 0000000000..433b7e6754 --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan @@ -0,0 +1,141 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000008) +------------------------------------------------------------------------------- +|-eb_0_0000_000008 + |-eb_0_0000_000007 + |-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000002 +2: eb_0_0000_000003 +3: eb_0_0000_000004 +4: eb_0_0000_000001 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +7: eb_0_0000_000007 +8: eb_0_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0_0000_000003 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(10)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(16) on eb_0_0000_000004 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +SCAN(5) on default.table14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.t2.id (INT4) = default.t4.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(18) on eb_0_0000_000006 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(17) on eb_0_0000_000005 + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + +======================================================= +Block Id: eb_0_0000_000008 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan new file mode 100644 index 0000000000..97b1fc2a20 --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan @@ -0,0 +1,102 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000006) +------------------------------------------------------------------------------- +|-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(7)(RIGHT_OUTER) + => Join Cond: concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 AND default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(8)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testTwoPartJoin.plan deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan new file mode 100644 index 0000000000..bc0673b36a --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan @@ -0,0 +1,125 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000007) +------------------------------------------------------------------------------- +|-eb_0_0000_000007 + |-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +7: eb_0_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_suppkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_address (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_availqty (INT4), default.partsupp.ps_supplycost (FLOAT8), default.partsupp.ps_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(9)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} + => in schema: {(5) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(13) on eb_0_0000_000002 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(12) on eb_0_0000_000001 + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(0) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) + +SORT(16) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + JOIN(10)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4), default.part.p_partkey (INT4)} + SCAN(15) on eb_0_0000_000004 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(14) on eb_0_0000_000003 + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} + => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0_0000_000005 + +SORT(4) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + SCAN(17) on eb_0_0000_000005 + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000007 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan new file mode 100644 index 0000000000..e4c998ff6a --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan @@ -0,0 +1,164 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000009) +------------------------------------------------------------------------------- +|-eb_0_0000_000009 + |-eb_0_0000_000008 + |-eb_0_0000_000007 + |-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000004 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 +5: eb_0_0000_000005 +6: eb_0_0000_000006 +7: eb_0_0000_000007 +8: eb_0_0000_000008 +9: eb_0_0000_000009 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_availqty (INT4), default.partsupp.ps_supplycost (FLOAT8), default.partsupp.ps_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_suppkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_address (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} + => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(16) on eb_0_0000_000002 + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(15) on eb_0_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(0) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +JOIN(12)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} + => in schema: {(5) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4), default.part.p_partkey (INT4)} + SCAN(18) on eb_0_0000_000004 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(17) on eb_0_0000_000003 + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} + +======================================================= +Block Id: eb_0_0000_000007 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT), num=32) + +SORT(21) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) + JOIN(13)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(6) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(20) on eb_0_0000_000006 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(19) on eb_0_0000_000005 + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000008 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0_0000_000007 + +SORT(5) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) + SCAN(22) on eb_0_0000_000007 + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000009 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java index 0ed65fc50e..e60b68a2f6 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java @@ -30,7 +30,6 @@ import org.apache.tajo.datum.NullDatum; import org.apache.tajo.storage.Tuple; -import java.util.Objects; import java.util.Set; public class InEval extends BinaryEval { @@ -91,11 +90,6 @@ public boolean equals(Object obj) { return false; } - @Override - public int hashCode() { - return Objects.hashCode(not); - } - public String toString() { return leftExpr + " IN (" + rightExpr + ")"; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java index ee1bd3c466..6750905c6e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java @@ -136,8 +136,9 @@ public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (candidateBroadcast ? 1231 : 1237); - result = prime * result + ((joinQual == null) ? 0 : joinQual.hashCode()); - result = prime * result + ((joinType == null) ? 0 : joinType.hashCode()); +// result = prime * result + ((joinQual == null) ? 0 : joinQual.hashCode()); +// result = prime * result + ((joinType == null) ? 0 : joinType.hashCode()); + result = prime * result + joinSpec.hashCode(); result = prime * result + Arrays.hashCode(targets); return result; } From 321450872ad25bd2b3352e411dc03e21e3bd3f67 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sat, 21 Mar 2015 10:24:14 +0900 Subject: [PATCH 21/43] TAJO-1352_4 --- .../engine/planner/QueryPlanTestCaseBase.java | 40 ++-- .../planner/TajoPlanTestingUtility.java | 170 ++++++++++++++- .../engine/planner/TestJoinOrderOptimize.java | 86 ++++---- .../tajo/engine/planner/TpchPlanTestBase.java | 11 +- .../testJoinWithMultipleJoinQual1.plan | 82 +++---- .../testJoinWithMultipleJoinQual4.plan | 58 ++--- .../testJoinWithMultipleJoinTypes.plan | 22 +- ...stLeftOuterJoinPredicationCaseByCase1.plan | 98 ++++----- ...stLeftOuterJoinPredicationCaseByCase2.plan | 66 +++--- ...tRightOuterJoinPredicationCaseByCase3.plan | 119 +++-------- .../testWhereClauseJoin5.plan | 156 +++----------- .../testWhereClauseJoin6.plan | 200 ++++-------------- 12 files changed, 487 insertions(+), 621 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java index accebc240b..e7a10095a8 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java @@ -37,6 +37,8 @@ import org.apache.tajo.cli.tsql.ParsedResult; import org.apache.tajo.cli.tsql.SimpleParser; import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.engine.planner.global.MasterPlan; +import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.storage.StorageUtil; import org.apache.tajo.util.FileUtil; @@ -160,8 +162,8 @@ public String getCurrentDatabase() { return currentDatabase; } - protected String executeString(String sql) throws Exception { - return testBase.execute(sql); + protected LogicalPlan buildLogicalPlanFromString(String sql) throws Exception { + return testBase.buildLogicalPlan(sql); } /** @@ -170,8 +172,8 @@ protected String executeString(String sql) throws Exception { * * @return ResultSet of query execution. */ - public String executeQuery() throws Exception { - return executeFile(getMethodName() + ".sql"); + public LogicalPlan buildLogicalPlan() throws Exception { + return buildLogicalPlan(getMethodName() + ".sql"); } protected String getMethodName() { @@ -187,10 +189,10 @@ protected String getMethodName() { * Execute a query contained in the given named file. This methods tries to find the given file within the directory * src/test/resources/results/ClassName. * - * @param queryFileName The file name to be used to execute a query. + * @param queryFileName The file name to be used to buildLogicalPlan a query. * @return ResultSet of query execution. */ - public String executeFile(String queryFileName) throws Exception { + public LogicalPlan buildLogicalPlan(String queryFileName) throws Exception { Path queryFilePath = getQueryFilePath(queryFileName); List parsedResults = SimpleParser.parseScript(FileUtil.readTextFile(new File(queryFilePath.toUri()))); @@ -200,10 +202,10 @@ public String executeFile(String queryFileName) throws Exception { int idx = 0; for (; idx < parsedResults.size() - 1; idx++) { - testBase.execute(parsedResults.get(idx).getHistoryStatement()); + testBase.buildLogicalPlan(parsedResults.get(idx).getHistoryStatement()); } - String result = testBase.execute(parsedResults.get(idx).getHistoryStatement()); + LogicalPlan result = testBase.buildLogicalPlan(parsedResults.get(idx).getHistoryStatement()); assertNotNull("Query succeeded test", result); return result; } @@ -235,23 +237,11 @@ private Path getDataSetFile(String fileName) throws IOException { * * @param result Query result to be compared. */ - public final void assertPlan(String result) throws IOException { + public final void assertPlan(LogicalPlan result) throws IOException { assertPlan("Result Verification", result, getMethodName() + ".plan"); } - /** - * Assert the equivalence between the expected result and an actual query result. - * If it isn't it throws an AssertionError. - * - * @param result Query result to be compared. - * @param resultFileName The file name containing the result to be compared - */ - public final void assertPlan(String result, String resultFileName) throws IOException { - assertPlan("Result Verification", result, resultFileName); - } - - public final void assertPlan(String message, String result, String resultFileName) throws IOException { - FileSystem fs = currentQueryPath.getFileSystem(testBase.getUtilility().getConf()); + public final void assertPlan(String message, LogicalPlan result, String resultFileName) throws IOException { Path resultFile = getResultFile(resultFileName); try { verifyPlan(message, result, resultFile); @@ -260,10 +250,10 @@ public final void assertPlan(String message, String result, String resultFileNam } } - private void verifyPlan(String message, String res, Path resultFile) throws SQLException, IOException { - String actualResult = res; + private void verifyPlan(String message, LogicalPlan res, Path resultFile) throws SQLException, IOException { + LogicalPlan actualResult = res; String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); - assertEquals(message, expectedResult.trim(), actualResult.trim()); + assertEquals(message, expectedResult.trim(), actualResult.toString().trim()); } public void executeDDLString(String ddl) throws IOException, PlanningException { diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java index 20fcc3f202..a1a31d8eda 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -20,29 +20,32 @@ import com.sun.org.apache.commons.logging.Log; import com.sun.org.apache.commons.logging.LogFactory; -import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.*; import org.apache.tajo.algebra.Expr; -import org.apache.tajo.benchmark.TPCH; import org.apache.tajo.catalog.*; import org.apache.tajo.catalog.proto.CatalogProtos; -import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.engine.function.FunctionLoader; import org.apache.tajo.engine.parser.SQLAnalyzer; import org.apache.tajo.engine.planner.global.GlobalPlanner; import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.engine.query.QueryContext; -import org.apache.tajo.master.TajoMaster; import org.apache.tajo.master.exec.DDLExecutor; -import org.apache.tajo.plan.LogicalOptimizer; -import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.LogicalPlanner; -import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.plan.*; +import org.apache.tajo.plan.expr.AlgebraicUtil; +import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.logical.JoinNode; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.ScanNode; +import org.apache.tajo.plan.util.PlannerUtil; +import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.KeyValueSet; import java.io.IOException; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Stack; import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME; import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME; @@ -65,6 +68,10 @@ public class TajoPlanTestingUtility { private LogicalOptimizer optimizer; private GlobalPlanner globalPlanner; private DDLExecutor ddlExecutor; + private final PlanShapeFixerContext planShapeFixerContext = new PlanShapeFixerContext(); + private final PlanShapeFixer verifyPreprocessor = new PlanShapeFixer(); + private final PidResetContext resetContext = new PidResetContext(); + private final PidReseter pidReseter = new PidReseter(); public void setup(String[] names, String[] tablepaths, @@ -87,6 +94,7 @@ public void setup(String[] names, globalPlanner = new GlobalPlanner(conf, catalog); ddlExecutor = new DDLExecutor(catalog); + // FileSystem fs = FileSystem.getLocal(conf); // Path rootDir = TajoConf.getWarehouseDir(conf); // fs.mkdirs(rootDir); @@ -120,16 +128,23 @@ public void shutdown() { util.shutdownCatalogCluster(); } - public String execute(String query) throws PlanningException, IOException { + public LogicalPlan buildLogicalPlan(String query) throws PlanningException { Expr expr = analyzer.parse(query); LogicalPlan plan = planner.createPlan(defaultContext, expr); optimizer.optimize(defaultContext, plan); + planShapeFixerContext.reset(); + resetContext.reset(); + pidReseter.visit(resetContext, plan, plan.getRootBlock()); + verifyPreprocessor.visit(planShapeFixerContext, plan, plan.getRootBlock()); + + return plan; + } + public MasterPlan buildMasterPlan(LogicalPlan plan) throws IOException, PlanningException { QueryId queryId = QueryIdFactory.newQueryId(0, 0); MasterPlan masterPlan = new MasterPlan(queryId, defaultContext, plan); globalPlanner.build(masterPlan); - - return masterPlan.toString(); + return masterPlan; } public TajoConf getConf() { @@ -151,4 +166,137 @@ public boolean executeDDL(String query) throws PlanningException, IOException { return ddlExecutor.execute(defaultContext, plan); } + + private static class PidResetContext { + int seqId = 0; + public void reset() { + seqId = 0; + } + } + + private static class PidReseter extends BasicLogicalPlanVisitor { + + @Override + public void preHook(LogicalPlan plan, LogicalNode node, Stack stack, PidResetContext context) + throws PlanningException { + node.setPID(context.seqId++); + } + } + + private static class PlanShapeFixerContext { + + Stack childNumbers = new Stack(); + public void reset() { + childNumbers.clear(); + } + } + + private static final ColumnComparator columnComparator = new ColumnComparator(); + private static final EvalNodeComparator evalNodeComparator = new EvalNodeComparator(); + private static final TargetComparator targetComparator = new TargetComparator(); + + private static class PlanShapeFixer extends BasicLogicalPlanVisitor { + + @Override + public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + ScanNode node, Stack stack) throws PlanningException { + super.visitScan(context, plan, block, node, stack); + context.childNumbers.push(1); + node.setInSchema(sortSchema(node.getInSchema())); + if (node.hasQual()) { + node.setQual(sortQual(node.getQual())); + } + return null; + } + + @Override + public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinNode node, Stack stack) throws PlanningException { + super.visitJoin(context, plan, block, node, stack); + int rightChildNum = context.childNumbers.pop(); + int leftChildNum = context.childNumbers.pop(); + + if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { + + if (leftChildNum < rightChildNum) { + swapChildren(node); + } else if (leftChildNum == rightChildNum) { + if (node.getLeftChild().toJson().compareTo(node.getRightChild().toJson()) < + 0) { + swapChildren(node); + } + } + } + + node.setInSchema(sortSchema(node.getInSchema())); + node.setOutSchema(sortSchema(node.getOutSchema())); + + if (node.hasJoinQual()) { + node.setJoinQual(sortQual(node.getJoinQual())); + } + + if (node.hasTargets()) { + node.setTargets(sortTargets(node.getTargets())); + } + + context.childNumbers.push(rightChildNum + leftChildNum); + + return null; + } + + private Schema sortSchema(Schema schema) { + Column[] columns = schema.toArray(); + Arrays.sort(columns, columnComparator); + + Schema sorted = new Schema(); + for (Column col : columns) { + sorted.addColumn(col); + } + return sorted; + } + + private EvalNode sortQual(EvalNode qual) { + EvalNode[] cnf = AlgebraicUtil.toConjunctiveNormalFormArray(qual); + Arrays.sort(cnf, evalNodeComparator); + return AlgebraicUtil.createSingletonExprFromCNF(cnf); + } + + private Target[] sortTargets(Target[] targets) { + Arrays.sort(targets, targetComparator); + return targets; + } + + private static void swapChildren(JoinNode node) { + LogicalNode tmpChild = node.getLeftChild(); + int tmpId = tmpChild.getPID(); + tmpChild.setPID(node.getRightChild().getPID()); + node.getRightChild().setPID(tmpId); + node.setLeftChild(node.getRightChild()); + node.setRightChild(tmpChild); + } + } + + private static class ColumnComparator implements Comparator { + + @Override + public int compare(Column o1, Column o2) { + return o1.getQualifiedName().compareTo(o2.getQualifiedName()); + } + } + + private static class EvalNodeComparator implements Comparator { + + @Override + public int compare(EvalNode o1, EvalNode o2) { + return o1.toJson().compareTo(o2.toJson()); + } + } + + private static class TargetComparator implements Comparator { + + @Override + public int compare(Target o1, Target o2) { + return o1.toJson().compareTo(o2.toJson()); + } + } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index ecae2603e2..c9b87eb41e 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -20,6 +20,7 @@ import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.plan.LogicalPlan; import org.junit.Test; public class TestJoinOrderOptimize extends QueryPlanTestCaseBase { @@ -40,33 +41,68 @@ public TestJoinOrderOptimize() { testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, "-1"); } + private void createOuterJoinTestTable() throws Exception { + String table = "table11"; + String location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + String ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table11-1", "2|table11-2", "3|table11-3" }); + + table = "table12"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table12-1" }); + + table = "table13"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "2|table13-2", "3|table13-3" }); + + table = "table14"; + location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; + ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", + table, location); + createTable(ddl, location, new String[]{ "1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4" }); + + } + + + private void dropOuterJoinTestTable() throws Exception { + executeDDLString("DROP TABLE table11 PURGE;"); + executeDDLString("DROP TABLE table12 PURGE;"); + executeDDLString("DROP TABLE table13 PURGE;"); + executeDDLString("DROP TABLE table14 PURGE;"); + } + @Test public final void testJoinWithMultipleJoinTypes() throws Exception { - String plan = executeQuery(); + LogicalPlan plan = buildLogicalPlan(); assertPlan(plan); } @Test public final void testWhereClauseJoin5() throws Exception { - String plan = executeQuery(); + LogicalPlan plan = buildLogicalPlan(); assertPlan(plan); } @Test public final void testWhereClauseJoin6() throws Exception { - String plan = executeQuery(); + LogicalPlan plan = buildLogicalPlan(); assertPlan(plan); } @Test public final void testJoinWithMultipleJoinQual1() throws Exception { - String plan = executeQuery(); + LogicalPlan plan = buildLogicalPlan(); assertPlan(plan); } @Test public final void testJoinWithMultipleJoinQual4() throws Exception { - String plan = executeQuery(); + LogicalPlan plan = buildLogicalPlan(); assertPlan(plan); } @@ -74,7 +110,7 @@ public final void testJoinWithMultipleJoinQual4() throws Exception { public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { createOuterJoinTestTable(); try { - String plan = executeString( + LogicalPlan plan = buildLogicalPlanFromString( "select t1.id, t1.name, t2.id, t3.id\n" + "from default.table11 t1\n" + "left outer join table12 t2\n" + @@ -92,7 +128,7 @@ public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { createOuterJoinTestTable(); try { - String plan = executeString( + LogicalPlan plan = buildLogicalPlanFromString( "select t1.id, t1.name, t2.id, t3.id\n" + "from table11 t1\n" + "right outer join table12 t2 \n" + @@ -106,39 +142,12 @@ public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { } } - private void createOuterJoinTestTable() throws Exception { - String table = "table11"; - String location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - String ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table11-1", "2|table11-2", "3|table11-3" }); - - table = "table12"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table12-1" }); - - table = "table13"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "2|table13-2", "3|table13-3" }); - - table = "table14"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4" }); - - } - @Test public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { // outer -> outer -> inner createOuterJoinTestTable(); try { - String plan = executeString( + LogicalPlan plan = buildLogicalPlanFromString( "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + "from table11 t1\n" + "left outer join table12 t2\n" + @@ -153,11 +162,4 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { dropOuterJoinTestTable(); } } - - private void dropOuterJoinTestTable() throws Exception { - executeDDLString("DROP TABLE table11 PURGE;"); - executeDDLString("DROP TABLE table12 PURGE;"); - executeDDLString("DROP TABLE table13 PURGE;"); - executeDDLString("DROP TABLE table14 PURGE;"); - } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java index d0853603a2..e5960b46a3 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java @@ -23,6 +23,9 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.benchmark.TPCH; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.engine.planner.global.MasterPlan; +import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.PlanningException; import org.apache.tajo.storage.StorageConstants; import org.apache.tajo.util.FileUtil; import org.apache.tajo.util.KeyValueSet; @@ -94,8 +97,12 @@ public static TpchPlanTestBase getInstance() { return testBase; } - public String execute(String query) throws Exception { - return util.execute(query); + public LogicalPlan buildLogicalPlan(String query) throws PlanningException { + return util.buildLogicalPlan(query); + } + + public MasterPlan buildMasterPlan(LogicalPlan plan) throws IOException, PlanningException { + return util.buildMasterPlan(plan); } public TajoPlanTestingUtility getUtilility() { diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan index 0b4ce0e3aa..b32eb3aa5a 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan @@ -38,7 +38,7 @@ Block Id: eb_0_0000_000001 [LEAF] SCAN(5) on default.partsupp as ps => target list: default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4) => out schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - => in schema: {(5) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_supplycost (FLOAT8), default.ps.ps_comment (TEXT)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0_0000_000002 [LEAF] @@ -50,7 +50,7 @@ Block Id: eb_0_0000_000002 [LEAF] SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_suppkey (INT4), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_acctbal (FLOAT8), default.s.s_comment (TEXT)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0_0000_000003 [INTERMEDIATE] @@ -63,11 +63,11 @@ Block Id: eb_0_0000_000003 [INTERMEDIATE] [Outgoing] [q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -JOIN(13)(INNER) +JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4) - => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - => in schema: {(9) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} SCAN(19) on eb_0_0000_000002 => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} @@ -85,7 +85,7 @@ Block Id: eb_0_0000_000004 [LEAF] SCAN(7) on default.part as p => target list: default.p.p_partkey (INT4), default.p.p_mfgr (TEXT) => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} - => in schema: {(9) default.p.p_partkey (INT4), default.p.p_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_brand (TEXT), default.p.p_type (TEXT), default.p.p_size (INT4), default.p.p_container (TEXT), default.p.p_retailprice (FLOAT8), default.p.p_comment (TEXT)} + => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} ======================================================= Block Id: eb_0_0000_000005 [INTERMEDIATE] @@ -96,74 +96,74 @@ Block Id: eb_0_0000_000005 [INTERMEDIATE] [q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) [Outgoing] -[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) - => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(10) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(21) on eb_0_0000_000004 => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} => in schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} SCAN(20) on eb_0_0000_000003 - => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - => in schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} ======================================================= Block Id: eb_0_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.n.n_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(23) on eb_0_0000_000007 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} + SCAN(22) on eb_0_0000_000006 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(22) on eb_0_0000_000006 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), num=32) -[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.n.n_nationkey (INT4), num=32) [Outgoing] [q_0_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), num=32) @@ -171,16 +171,16 @@ Block Id: eb_0_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) JOIN(16)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) AND default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT) - => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} - => in schema: {(12) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => Join Cond: default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT) + => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} + => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(25) on eb_0_0000_000008 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(24) on eb_0_0000_000005 - => out schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(9) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.ps.ps_suppkey (INT4)} + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} ======================================================= Block Id: eb_0_0000_000010 [ROOT] @@ -195,8 +195,8 @@ Block Id: eb_0_0000_000010 [ROOT] SORT(10) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) SCAN(27) on eb_0_0000_000009 - => out schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} - => in schema: {(8) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), default.p.p_mfgr (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT)} + => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} + => in schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} ======================================================= Block Id: eb_0_0000_000011 [TERMINAL] diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan index 3c92db357f..83fdde4811 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan @@ -27,47 +27,47 @@ Block Id: eb_0_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) -SCAN(5) on default.supplier as s - => target list: default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) - => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_suppkey (INT4), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_acctbal (FLOAT8), default.s.s_comment (TEXT)} +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_supplycost (FLOAT8), default.ps.ps_comment (TEXT)} +SCAN(5) on default.supplier as s + => target list: default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) + => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] [q_0_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - => in schema: {(4) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4), default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} SCAN(17) on eb_0_0000_000002 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(16) on eb_0_0000_000001 => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} => in schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + SCAN(16) on eb_0_0000_000001 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0_0000_000004 [LEAF] @@ -79,7 +79,7 @@ Block Id: eb_0_0000_000004 [LEAF] SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000005 [LEAF] @@ -92,7 +92,7 @@ SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000006 [INTERMEDIATE] @@ -112,12 +112,12 @@ TABLE_SUBQUERY(4) as default.t PROJECTION(3) => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} JOIN(12)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) - => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(5) default.r.r_regionkey (INT4), default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0_0000_000005 => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} @@ -137,15 +137,15 @@ SELECTION(9) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(14)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) - => target list: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT), default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4) - => out schema: {(6) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT), default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4), default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) + => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} SCAN(21) on eb_0_0000_000006 => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} SCAN(20) on eb_0_0000_000003 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan index 6594bc8a2d..9f83116b0f 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan @@ -28,7 +28,7 @@ Block Id: eb_0_0000_000001 [LEAF] SCAN(5) on default.region as r => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000002 [LEAF] @@ -40,7 +40,7 @@ Block Id: eb_0_0000_000002 [LEAF] SCAN(0) on default.customer as c => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} ======================================================= Block Id: eb_0_0000_000003 [INTERMEDIATE] @@ -55,9 +55,9 @@ Block Id: eb_0_0000_000003 [INTERMEDIATE] JOIN(9)(INNER) => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) + => out schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(13) on eb_0_0000_000002 => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} @@ -83,7 +83,7 @@ TABLE_SUBQUERY(3) as default.n SCAN(1) on default.nation => target list: default.nation.n_nationkey (INT4) => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000005 [ROOT] @@ -95,15 +95,15 @@ Block Id: eb_0_0000_000005 [ROOT] JOIN(10)(INNER) => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} + => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) + => out schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(15) on eb_0_0000_000004 => out schema: {(1) default.n.n_nationkey (INT4)} => in schema: {(1) default.n.n_nationkey (INT4)} SCAN(14) on eb_0_0000_000003 - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => out schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan index 6594bc8a2d..7a99e2d74e 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan @@ -23,87 +23,79 @@ Block Id: eb_0_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -SCAN(5) on default.region as r - => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} ======================================================= Block Id: eb_0_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(0) on default.customer as c - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) - -JOIN(9)(INNER) - => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - SCAN(13) on eb_0_0000_000002 - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - SCAN(12) on eb_0_0000_000001 - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) + +JOIN(7)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0_0000_000002 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(10) on eb_0_0000_000001 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} ======================================================= Block Id: eb_0_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) - -TABLE_SUBQUERY(3) as default.n - => Targets: default.n.n_nationkey (INT4) - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} - PROJECTION(2) - => Targets: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(1) default.nation.n_nationkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= Block Id: eb_0_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) - -JOIN(10)(INNER) - => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} - SCAN(15) on eb_0_0000_000004 - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} - SCAN(14) on eb_0_0000_000003 - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) AND default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} ======================================================= Block Id: eb_0_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan index 433b7e6754..8939b3966e 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan @@ -6,16 +6,16 @@ Execution Block Graph (TERMINAL - eb_0_0000_000008) |-eb_0_0000_000006 |-eb_0_0000_000005 |-eb_0_0000_000004 - |-eb_0_0000_000003 + |-eb_0_0000_000003 |-eb_0_0000_000002 - |-eb_0_0000_000001 + |-eb_0_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0_0000_000002 -2: eb_0_0000_000003 -3: eb_0_0000_000004 -4: eb_0_0000_000001 +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000004 5: eb_0_0000_000005 6: eb_0_0000_000006 7: eb_0_0000_000007 @@ -23,58 +23,58 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0_0000_000002 [LEAF] +Block Id: eb_0_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(1) on default.table12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0_0000_000003 [LEAF] +Block Id: eb_0_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -SCAN(3) on default.table13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} ======================================================= -Block Id: eb_0_0000_000004 [INTERMEDIATE] +Block Id: eb_0_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) [Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(9)(LEFT_OUTER) => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) => target list: default.t2.id (INT4), default.t3.id (INT4) => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - SCAN(14) on eb_0_0000_000003 - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - SCAN(13) on eb_0_0000_000002 + SCAN(14) on eb_0_0000_000002 => out schema: {(1) default.t2.id (INT4)} => in schema: {(1) default.t2.id (INT4)} + SCAN(13) on eb_0_0000_000001 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} ======================================================= -Block Id: eb_0_0000_000001 [LEAF] +Block Id: eb_0_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) SCAN(0) on default.table11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) @@ -86,8 +86,8 @@ Block Id: eb_0_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) @@ -98,11 +98,11 @@ JOIN(10)(LEFT_OUTER) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} SCAN(16) on eb_0_0000_000004 - => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - SCAN(15) on eb_0_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(15) on eb_0_0000_000003 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} ======================================================= Block Id: eb_0_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan index 97b1fc2a20..7d501e26c1 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan @@ -1,102 +1,35 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000006) -------------------------------------------------------------------------------- -|-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -SCAN(0) on default.table11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -SCAN(1) on default.table12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -JOIN(7)(RIGHT_OUTER) - => Join Cond: concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 AND default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(11) on eb_0_0000_000002 - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(1) default.t2.id (INT4)} - SCAN(10) on eb_0_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) - -SCAN(3) on default.table13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +----------------------------- +Query Block Graph +----------------------------- +|-#ROOT +----------------------------- +Optimization Log: +[LogicalPlan] + > ProjectionNode is eliminated. +[#ROOT] + > Non-optimized join order: ((default.table11 ⟖ default.table12) ⟖ default.table13) (cost: 18.252000000000002) + > Optimized join order : ((default.table11 ⟖ default.table12) ⟖ default.table13) (cost: 13.182000000000002) +----------------------------- JOIN(8)(RIGHT_OUTER) => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(13) on eb_0_0000_000004 + SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - SCAN(12) on eb_0_0000_000003 + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + JOIN(7)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) AND concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [TERMINAL] -======================================================= \ No newline at end of file + SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan index bc0673b36a..3a346e1d05 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan @@ -1,125 +1,37 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000007) -------------------------------------------------------------------------------- -|-eb_0_0000_000007 - |-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -7: eb_0_0000_000007 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) - -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_suppkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_address (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_availqty (INT4), default.partsupp.ps_supplycost (FLOAT8), default.partsupp.ps_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(9)(INNER) - => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} - => in schema: {(5) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(13) on eb_0_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(12) on eb_0_0000_000001 - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(0) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) - -SORT(16) +----------------------------- +Query Block Graph +----------------------------- +|-#ROOT +----------------------------- +Optimization Log: +[LogicalPlan] + > ProjectionNode is eliminated. +[#ROOT] + > Non-optimized join order: ((default.part ⋈ default.supplier) ⋈θ default.partsupp) (cost: 766374.7200000001) + > Optimized join order : ((default.partsupp ⋈θ default.supplier) ⋈θ default.part) (cost: 631686.7200000001) +----------------------------- + +SORT(1) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) - JOIN(10)(INNER) + JOIN(2)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4), default.part.p_partkey (INT4)} - SCAN(15) on eb_0_0000_000004 + => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(3) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(4) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + SCAN(6) on default.part + => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(14) on eb_0_0000_000003 - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} - => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.partsupp.ps_partkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) - -[Enforcers] - 0: sorted input=eb_0_0000_000005 - -SORT(4) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) - SCAN(17) on eb_0_0000_000005 - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000007 [TERMINAL] -======================================================= \ No newline at end of file + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(3)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(4) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan index e4c998ff6a..b8cb54bb22 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan @@ -1,164 +1,46 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000009) -------------------------------------------------------------------------------- -|-eb_0_0000_000009 - |-eb_0_0000_000008 - |-eb_0_0000_000007 - |-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -7: eb_0_0000_000007 -8: eb_0_0000_000008 -9: eb_0_0000_000009 -------------------------------------------------------------------------------- +----------------------------- +Query Block Graph +----------------------------- +|-#ROOT +----------------------------- +Optimization Log: +[LogicalPlan] + > ProjectionNode is eliminated. +[#ROOT] + > Non-optimized join order: (((default.part ⋈ default.supplier) ⋈ default.partsupp) ⋈θ default.nation) (cost: 2.0409003264000005E8) + > Optimized join order : (((default.partsupp ⋈θ default.supplier) ⋈θ default.part) ⋈θ default.nation) (cost: 1.4048712652800003E8) +----------------------------- -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_availqty (INT4), default.partsupp.ps_supplycost (FLOAT8), default.partsupp.ps_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) - -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_suppkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_address (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(11)(INNER) - => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} - => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(16) on eb_0_0000_000002 - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(15) on eb_0_0000_000001 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(0) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) - -JOIN(12)(INNER) - => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} - => in schema: {(5) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4), default.part.p_partkey (INT4)} - SCAN(18) on eb_0_0000_000004 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(17) on eb_0_0000_000003 - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} - => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.partsupp.ps_partkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000007 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT), num=32) - -SORT(21) +SORT(5) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) JOIN(13)(INNER) => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(6) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(20) on eb_0_0000_000006 + => target list: default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(4) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(19) on eb_0_0000_000005 - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} - => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_nationkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000008 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT), num=32) - -[Enforcers] - 0: sorted input=eb_0_0000_000007 - -SORT(5) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) - SCAN(22) on eb_0_0000_000007 - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), default.nation.n_name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000009 [TERMINAL] -======================================================= \ No newline at end of file + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(12)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(4) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(5) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(0) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(11)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} \ No newline at end of file From 4439a6fbc9def860494d4130e7024d15452df7c8 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sat, 21 Mar 2015 13:27:23 +0900 Subject: [PATCH 22/43] TAJO-1352_4 --- .../engine/planner/QueryPlanTestCaseBase.java | 37 ++++++-- .../planner/TajoPlanTestingUtility.java | 2 +- .../engine/planner/TestJoinOrderOptimize.java | 18 ++-- ...estJoinWithMultipleJoinTypes.logical.plan} | 0 ...testJoinWithMultipleJoinTypes.master.plan} | 0 ...plan => testWhereClauseJoin5.logical.plan} | 17 +--- .../testWhereClauseJoin5.master.plan | 86 +++++++++++++++++++ .../org/apache/tajo/plan/LogicalPlan.java | 1 + 8 files changed, 132 insertions(+), 29 deletions(-) rename tajo-core/src/test/resources/plans/TestJoinOrderOptimize/{testJoinWithMultipleJoinTypes.plan => testJoinWithMultipleJoinTypes.logical.plan} (100%) rename tajo-core/src/test/resources/plans/TestJoinOrderOptimize/{testJoin1.plan => testJoinWithMultipleJoinTypes.master.plan} (100%) rename tajo-core/src/test/resources/plans/TestJoinOrderOptimize/{testWhereClauseJoin5.plan => testWhereClauseJoin5.logical.plan} (83%) create mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java index e7a10095a8..546a79598c 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java @@ -176,6 +176,14 @@ public LogicalPlan buildLogicalPlan() throws Exception { return buildLogicalPlan(getMethodName() + ".sql"); } + public MasterPlan buildMasterPlan(LogicalPlan logicalPlan) throws IOException, PlanningException { + return testBase.buildMasterPlan(logicalPlan); + } + + public MasterPlan buildPlan() throws Exception { + return buildMasterPlan(buildLogicalPlan()); + } + protected String getMethodName() { String methodName = name.getMethodName(); // In the case of parameter execution name's pattern is methodName[0] @@ -237,22 +245,41 @@ private Path getDataSetFile(String fileName) throws IOException { * * @param result Query result to be compared. */ - public final void assertPlan(LogicalPlan result) throws IOException { - assertPlan("Result Verification", result, getMethodName() + ".plan"); + public final void assertLogicalPlan(LogicalPlan result) throws IOException { + assertLogicalPlan("Result Verification", result, getMethodName() + ".logical.plan"); + } + + public final void assertLogicalPlan(String message, LogicalPlan result, String resultFileName) throws IOException { + Path resultFile = getResultFile(resultFileName); + try { + verifyLogicalPlan(message, result, resultFile); + } catch (SQLException e) { + throw new IOException(e); + } + } + + public final void assertMasterPlan(MasterPlan result) throws IOException { + assertMasterPlan("Result Verification", result, getMethodName() + ".master.plan"); } - public final void assertPlan(String message, LogicalPlan result, String resultFileName) throws IOException { + public final void assertMasterPlan(String message, MasterPlan result, String resultFileName) throws IOException { Path resultFile = getResultFile(resultFileName); try { - verifyPlan(message, result, resultFile); + verifyMasterPlan(message, result, resultFile); } catch (SQLException e) { throw new IOException(e); } } - private void verifyPlan(String message, LogicalPlan res, Path resultFile) throws SQLException, IOException { + private void verifyLogicalPlan(String message, LogicalPlan res, Path resultFile) throws SQLException, IOException { LogicalPlan actualResult = res; String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); + assertEquals(message, expectedResult.trim(), actualResult.getLogicalPlanAsString().trim()); + } + + private void verifyMasterPlan(String message, MasterPlan res, Path resultFile) throws SQLException, IOException { + MasterPlan actualResult = res; + String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); assertEquals(message, expectedResult.trim(), actualResult.toString().trim()); } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java index a1a31d8eda..53dabe47f4 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -221,7 +221,7 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo if (leftChildNum < rightChildNum) { swapChildren(node); } else if (leftChildNum == rightChildNum) { - if (node.getLeftChild().toJson().compareTo(node.getRightChild().toJson()) < + if (node.getLeftChild().toString().compareTo(node.getRightChild().toString()) < 0) { swapChildren(node); } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index c9b87eb41e..219ddaaa83 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -79,31 +79,33 @@ private void dropOuterJoinTestTable() throws Exception { @Test public final void testJoinWithMultipleJoinTypes() throws Exception { LogicalPlan plan = buildLogicalPlan(); - assertPlan(plan); + assertLogicalPlan(plan); + assertMasterPlan(buildMasterPlan(plan)); } @Test public final void testWhereClauseJoin5() throws Exception { LogicalPlan plan = buildLogicalPlan(); - assertPlan(plan); + assertLogicalPlan(plan); + assertMasterPlan(buildMasterPlan(plan)); } @Test public final void testWhereClauseJoin6() throws Exception { LogicalPlan plan = buildLogicalPlan(); - assertPlan(plan); + assertLogicalPlan(plan); } @Test public final void testJoinWithMultipleJoinQual1() throws Exception { LogicalPlan plan = buildLogicalPlan(); - assertPlan(plan); + assertLogicalPlan(plan); } @Test public final void testJoinWithMultipleJoinQual4() throws Exception { LogicalPlan plan = buildLogicalPlan(); - assertPlan(plan); + assertLogicalPlan(plan); } @Test @@ -118,7 +120,7 @@ public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { "left outer join table13 t3\n" + "on t1.id = t3.id and t2.id = t3.id"); - assertPlan(plan); + assertLogicalPlan(plan); } finally { dropOuterJoinTestTable(); } @@ -136,7 +138,7 @@ public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { "right outer join table13 t3\n" + "on t1.id = t3.id " ); - assertPlan(plan); + assertLogicalPlan(plan); } finally { dropOuterJoinTestTable(); } @@ -157,7 +159,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { "inner join table14 t4\n" + "on t2.id = t4.id" ); - assertPlan(plan); + assertLogicalPlan(plan); } finally { dropOuterJoinTestTable(); } diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan similarity index 100% rename from tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.plan rename to tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoin1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.master.plan similarity index 100% rename from tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoin1.plan rename to tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.master.plan diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan similarity index 83% rename from tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan rename to tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan index 3a346e1d05..f9b0c04c52 100644 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.plan +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan @@ -1,16 +1,3 @@ ------------------------------ -Query Block Graph ------------------------------ -|-#ROOT ------------------------------ -Optimization Log: -[LogicalPlan] - > ProjectionNode is eliminated. -[#ROOT] - > Non-optimized join order: ((default.part ⋈ default.supplier) ⋈θ default.partsupp) (cost: 766374.7200000001) - > Optimized join order : ((default.partsupp ⋈θ default.supplier) ⋈θ default.part) (cost: 631686.7200000001) ------------------------------ - SORT(1) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) JOIN(2)(INNER) @@ -27,11 +14,11 @@ SORT(1) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(4) on default.partsupp + SCAN(5) on default.partsupp => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier + SCAN(4) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan new file mode 100644 index 0000000000..8414dfcc1d --- /dev/null +++ b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan @@ -0,0 +1,86 @@ +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0_0000_000006) +------------------------------------------------------------------------------- +|-eb_0_0000_000006 + |-eb_0_0000_000005 + |-eb_0_0000_000003 + |-eb_0_0000_000002 + |-eb_0_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0_0000_000001 +2: eb_0_0000_000002 +3: eb_0_0000_000003 +4: eb_0_0000_000005 +5: eb_0_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(4) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(5) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) + +SORT(14) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + JOIN(3)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(13) on eb_0_0000_000002 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(12) on eb_0_0000_000001 + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0_0000_000003 + +SORT(1) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + SCAN(15) on eb_0_0000_000003 + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + +======================================================= +Block Id: eb_0_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java index 0425f2e1a0..d71c41163c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java @@ -18,6 +18,7 @@ package org.apache.tajo.plan; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang.ObjectUtils; From 562d71f57a34d009c202a1409c15f93b20220a4c Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 31 Mar 2015 23:20:41 +0900 Subject: [PATCH 23/43] TAJO-1352_4 --- .../engine/planner/TestJoinOrderOptimize.java | 257 ++++++++++-------- .../testJoinWithMultipleJoinQual1.plan | 203 -------------- .../testJoinWithMultipleJoinQual4.plan | 152 ----------- ...testJoinWithMultipleJoinTypes.logical.plan | 110 -------- .../testJoinWithMultipleJoinTypes.master.plan | 0 ...stLeftOuterJoinPredicationCaseByCase1.plan | 102 ------- ...stLeftOuterJoinPredicationCaseByCase2.plan | 141 ---------- ...tRightOuterJoinPredicationCaseByCase3.plan | 35 --- .../testWhereClauseJoin5.logical.plan | 24 -- .../testWhereClauseJoin5.master.plan | 86 ------ .../testWhereClauseJoin6.plan | 46 ---- .../testJoinWithMultipleJoinTypes.sql | 2 +- .../testJoinWithMultipleJoinTypes.result | 112 ++++++++ 13 files changed, 250 insertions(+), 1020 deletions(-) delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.master.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan delete mode 100644 tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index 219ddaaa83..bdccb9304f 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -18,150 +18,167 @@ package org.apache.tajo.engine.planner; +import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoConstants; +import org.apache.tajo.TajoTestingCluster; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.storage.StorageConstants; +import org.apache.tajo.util.KeyValueSet; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; -public class TestJoinOrderOptimize extends QueryPlanTestCaseBase { +import java.sql.ResultSet; + +public class TestJoinOrderOptimize extends QueryTestCaseBase { public TestJoinOrderOptimize() { super(TajoConstants.DEFAULT_DATABASE_NAME); + } - testBase.util.getConf().set( - TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, - TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.defaultVal); - - testBase.util.getConf().set(TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, - TajoConf.ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.defaultVal); - testBase.util.getConf().set(TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.varname, - TajoConf.ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.defaultVal); + @BeforeClass + public static void classSetUp() throws Exception { + testingCluster.getConfiguration().set(TajoConf.ConfVars.$TEST_PLAN_SHAPE_FIX_ENABLED.varname, "true"); + } - testBase.util.getConf().set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); - testBase.util.getConf().set(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD.varname, "-1"); + @AfterClass + public static void classTearDown() { + testingCluster.getConfiguration().set(TajoConf.ConfVars.$TEST_PLAN_SHAPE_FIX_ENABLED.varname, "false"); } private void createOuterJoinTestTable() throws Exception { - String table = "table11"; - String location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - String ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table11-1", "2|table11-2", "3|table11-3" }); - - table = "table12"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table12-1" }); - - table = "table13"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "2|table13-2", "3|table13-3" }); - - table = "table14"; - location = TajoPlanTestingUtility.DEFAULT_TEST_DIRECTORY + "/" + table + ".tbl"; - ddl = String.format("create external table %s (id int4, name text) using text with ('text.delimiter'='|') location '%s'", - table, location); - createTable(ddl, location, new String[]{ "1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4" }); - + KeyValueSet tableOptions = new KeyValueSet(); + tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); + tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); + + Schema schema = new Schema(); + schema.addColumn("id", TajoDataTypes.Type.INT4); + schema.addColumn("name", TajoDataTypes.Type.TEXT); + String[] data = new String[]{ "1|table11-1", "2|table11-2", "3|table11-3" }; + TajoTestingCluster.createTable("table11", schema, tableOptions, data); + + schema = new Schema(); + schema.addColumn("id", TajoDataTypes.Type.INT4); + schema.addColumn("name", TajoDataTypes.Type.TEXT); + data = new String[]{ "1|table12-1" }; + TajoTestingCluster.createTable("table12", schema, tableOptions, data); + + schema = new Schema(); + schema.addColumn("id", TajoDataTypes.Type.INT4); + schema.addColumn("name", TajoDataTypes.Type.TEXT); + data = new String[]{"2|table13-2", "3|table13-3" }; + TajoTestingCluster.createTable("table13", schema, tableOptions, data); + + schema = new Schema(); + schema.addColumn("id", TajoDataTypes.Type.INT4); + schema.addColumn("name", TajoDataTypes.Type.TEXT); + data = new String[]{"1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4" }; + TajoTestingCluster.createTable("table14", schema, tableOptions, data); + + schema = new Schema(); + schema.addColumn("id", TajoDataTypes.Type.INT4); + schema.addColumn("name", TajoDataTypes.Type.TEXT); + data = new String[]{}; + TajoTestingCluster.createTable("table15", schema, tableOptions, data); } - private void dropOuterJoinTestTable() throws Exception { - executeDDLString("DROP TABLE table11 PURGE;"); - executeDDLString("DROP TABLE table12 PURGE;"); - executeDDLString("DROP TABLE table13 PURGE;"); - executeDDLString("DROP TABLE table14 PURGE;"); + executeString("DROP TABLE table11 PURGE;"); + executeString("DROP TABLE table12 PURGE;"); + executeString("DROP TABLE table13 PURGE;"); + executeString("DROP TABLE table14 PURGE;"); + executeString("DROP TABLE table15 PURGE;"); } @Test public final void testJoinWithMultipleJoinTypes() throws Exception { - LogicalPlan plan = buildLogicalPlan(); - assertLogicalPlan(plan); - assertMasterPlan(buildMasterPlan(plan)); + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); } @Test public final void testWhereClauseJoin5() throws Exception { - LogicalPlan plan = buildLogicalPlan(); - assertLogicalPlan(plan); - assertMasterPlan(buildMasterPlan(plan)); - } - - @Test - public final void testWhereClauseJoin6() throws Exception { - LogicalPlan plan = buildLogicalPlan(); - assertLogicalPlan(plan); - } - - @Test - public final void testJoinWithMultipleJoinQual1() throws Exception { - LogicalPlan plan = buildLogicalPlan(); - assertLogicalPlan(plan); + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); } - @Test - public final void testJoinWithMultipleJoinQual4() throws Exception { - LogicalPlan plan = buildLogicalPlan(); - assertLogicalPlan(plan); - } - - @Test - public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { - createOuterJoinTestTable(); - try { - LogicalPlan plan = buildLogicalPlanFromString( - "select t1.id, t1.name, t2.id, t3.id\n" + - "from default.table11 t1\n" + - "left outer join table12 t2\n" + - "on t1.id = t2.id\n" + - "left outer join table13 t3\n" + - "on t1.id = t3.id and t2.id = t3.id"); - - assertLogicalPlan(plan); - } finally { - dropOuterJoinTestTable(); - } - } - - @Test - public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { - createOuterJoinTestTable(); - try { - LogicalPlan plan = buildLogicalPlanFromString( - "select t1.id, t1.name, t2.id, t3.id\n" + - "from table11 t1\n" + - "right outer join table12 t2 \n" + - "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + - "right outer join table13 t3\n" + - "on t1.id = t3.id " - ); - assertLogicalPlan(plan); - } finally { - dropOuterJoinTestTable(); - } - } - - @Test - public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { - // outer -> outer -> inner - createOuterJoinTestTable(); - try { - LogicalPlan plan = buildLogicalPlanFromString( - "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + - "from table11 t1\n" + - "left outer join table12 t2\n" + - "on t1.id = t2.id\n" + - "left outer join table13 t3\n" + - "on t2.id = t3.id\n" + - "inner join table14 t4\n" + - "on t2.id = t4.id" - ); - assertLogicalPlan(plan); - } finally { - dropOuterJoinTestTable(); - } - } +// @Test +// public final void testWhereClauseJoin6() throws Exception { +// LogicalPlan plan = buildLogicalPlan(); +// assertLogicalPlan(plan); +// } +// +// @Test +// public final void testJoinWithMultipleJoinQual1() throws Exception { +// LogicalPlan plan = buildLogicalPlan(); +// assertLogicalPlan(plan); +// } +// +// @Test +// public final void testJoinWithMultipleJoinQual4() throws Exception { +// LogicalPlan plan = buildLogicalPlan(); +// assertLogicalPlan(plan); +// } +// +// @Test +// public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { +// createOuterJoinTestTable(); +// try { +// LogicalPlan plan = buildLogicalPlanFromString( +// "select t1.id, t1.name, t2.id, t3.id\n" + +// "from default.table11 t1\n" + +// "left outer join table12 t2\n" + +// "on t1.id = t2.id\n" + +// "left outer join table13 t3\n" + +// "on t1.id = t3.id and t2.id = t3.id"); +// +// assertLogicalPlan(plan); +// } finally { +// dropOuterJoinTestTable(); +// } +// } +// +// @Test +// public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { +// createOuterJoinTestTable(); +// try { +// LogicalPlan plan = buildLogicalPlanFromString( +// "select t1.id, t1.name, t2.id, t3.id\n" + +// "from table11 t1\n" + +// "right outer join table12 t2 \n" + +// "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + +// "right outer join table13 t3\n" + +// "on t1.id = t3.id " +// ); +// assertLogicalPlan(plan); +// } finally { +// dropOuterJoinTestTable(); +// } +// } +// +// @Test +// public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { +// // outer -> outer -> inner +// createOuterJoinTestTable(); +// try { +// LogicalPlan plan = buildLogicalPlanFromString( +// "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + +// "from table11 t1\n" + +// "left outer join table12 t2\n" + +// "on t1.id = t2.id\n" + +// "left outer join table13 t3\n" + +// "on t2.id = t3.id\n" + +// "inner join table14 t4\n" + +// "on t2.id = t4.id" +// ); +// assertLogicalPlan(plan); +// } finally { +// dropOuterJoinTestTable(); +// } +// } } diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan deleted file mode 100644 index b32eb3aa5a..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.plan +++ /dev/null @@ -1,203 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000011) -------------------------------------------------------------------------------- -|-eb_0_0000_000011 - |-eb_0_0000_000010 - |-eb_0_0000_000009 - |-eb_0_0000_000008 - |-eb_0_0000_000007 - |-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000006 -6: eb_0_0000_000007 -7: eb_0_0000_000005 -8: eb_0_0000_000008 -9: eb_0_0000_000009 -10: eb_0_0000_000010 -11: eb_0_0000_000011 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4) - => out schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(3) on default.supplier as s - => target list: default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) - => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0_0000_000002 - => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.s.s_address (TEXT), default.s.s_phone (TEXT), default.s.s_comment (TEXT), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(18) on eb_0_0000_000001 - => out schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - => in schema: {(2) default.ps.ps_suppkey (INT4), default.ps.ps_partkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) - -SCAN(7) on default.part as p - => target list: default.p.p_partkey (INT4), default.p.p_mfgr (TEXT) - => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} - => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) - -JOIN(15)(INNER) - => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) - => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(21) on eb_0_0000_000004 - => out schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} - => in schema: {(2) default.p.p_partkey (INT4), default.p.p_mfgr (TEXT)} - SCAN(20) on eb_0_0000_000003 - => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - -======================================================= -Block Id: eb_0_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.n.n_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(23) on eb_0_0000_000007 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_nationkey (INT4)} - SCAN(22) on eb_0_0000_000006 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000009 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -[q_0_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.n.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), num=32) - -SORT(26) - => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) - => target list: default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT) - => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} - => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(25) on eb_0_0000_000008 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(24) on eb_0_0000_000005 - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - -======================================================= -Block Id: eb_0_0000_000010 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), default.n.n_name (TEXT), default.p.p_partkey (INT4), num=32) - -[Enforcers] - 0: sorted input=eb_0_0000_000009 - -SORT(10) - => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) - SCAN(27) on eb_0_0000_000009 - => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} - => in schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} - -======================================================= -Block Id: eb_0_0000_000011 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan deleted file mode 100644 index 83fdde4811..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.plan +++ /dev/null @@ -1,152 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000008) -------------------------------------------------------------------------------- -|-eb_0_0000_000008 - |-eb_0_0000_000007 - |-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000004 -4: eb_0_0000_000005 -5: eb_0_0000_000003 -6: eb_0_0000_000006 -7: eb_0_0000_000007 -8: eb_0_0000_000008 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(5) on default.supplier as s - => target list: default.s.s_suppkey (INT4), default.s.s_nationkey (INT4) - => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(17) on eb_0_0000_000002 - => out schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - => in schema: {(2) default.s.s_suppkey (INT4), default.s.s_nationkey (INT4)} - SCAN(16) on eb_0_0000_000001 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) - => target list: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) - => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) - -TABLE_SUBQUERY(4) as default.t - => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) - => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - PROJECTION(3) - => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) - => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(12)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(19) on eb_0_0000_000005 - => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - => in schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} - SCAN(18) on eb_0_0000_000004 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000007 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) - -SELECTION(9) - => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) - JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) - => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - SCAN(21) on eb_0_0000_000006 - => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - SCAN(20) on eb_0_0000_000003 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000008 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan deleted file mode 100644 index 9f83116b0f..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.logical.plan +++ /dev/null @@ -1,110 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000006) -------------------------------------------------------------------------------- -|-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -SCAN(5) on default.region as r - => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) - -SCAN(0) on default.customer as c - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) - -JOIN(9)(INNER) - => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) - => out schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - => in schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(13) on eb_0_0000_000002 - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - SCAN(12) on eb_0_0000_000001 - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) - -TABLE_SUBQUERY(3) as default.n - => Targets: default.n.n_nationkey (INT4) - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} - PROJECTION(2) - => Targets: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(1) default.nation.n_nationkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000005 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) - -JOIN(10)(INNER) - => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) - => out schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - => in schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(15) on eb_0_0000_000004 - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} - SCAN(14) on eb_0_0000_000003 - => out schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - => in schema: {(11) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.master.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.master.plan deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan deleted file mode 100644 index 7a99e2d74e..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.plan +++ /dev/null @@ -1,102 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000006) -------------------------------------------------------------------------------- -|-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -SCAN(1) on default.table12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -SCAN(0) on default.table11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) - -JOIN(7)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(11) on eb_0_0000_000002 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(10) on eb_0_0000_000001 - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(1) default.t2.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) - -SCAN(3) on default.table13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) - -JOIN(8)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) AND default.t2.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) - => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(13) on eb_0_0000_000004 - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - SCAN(12) on eb_0_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan deleted file mode 100644 index 8939b3966e..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.plan +++ /dev/null @@ -1,141 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000008) -------------------------------------------------------------------------------- -|-eb_0_0000_000008 - |-eb_0_0000_000007 - |-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000004 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000004 -5: eb_0_0000_000005 -6: eb_0_0000_000006 -7: eb_0_0000_000007 -8: eb_0_0000_000008 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) - -SCAN(3) on default.table13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -SCAN(1) on default.table12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -JOIN(9)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) - => target list: default.t2.id (INT4), default.t3.id (INT4) - => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - SCAN(14) on eb_0_0000_000002 - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(1) default.t2.id (INT4)} - SCAN(13) on eb_0_0000_000001 - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -SCAN(0) on default.table11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) - -[Outgoing] -[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) - -JOIN(10)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) - => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(16) on eb_0_0000_000004 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(15) on eb_0_0000_000003 - => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) - -SCAN(5) on default.table14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000007 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) - -JOIN(11)(INNER) - => Join Cond: default.t2.id (INT4) = default.t4.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4) - => out schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} - => in schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} - SCAN(18) on eb_0_0000_000006 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(17) on eb_0_0000_000005 - => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - -======================================================= -Block Id: eb_0_0000_000008 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan deleted file mode 100644 index 7d501e26c1..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.plan +++ /dev/null @@ -1,35 +0,0 @@ ------------------------------ -Query Block Graph ------------------------------ -|-#ROOT ------------------------------ -Optimization Log: -[LogicalPlan] - > ProjectionNode is eliminated. -[#ROOT] - > Non-optimized join order: ((default.table11 ⟖ default.table12) ⟖ default.table13) (cost: 18.252000000000002) - > Optimized join order : ((default.table11 ⟖ default.table12) ⟖ default.table13) (cost: 13.182000000000002) ------------------------------ - -JOIN(8)(RIGHT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) - => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.table13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - JOIN(7)(RIGHT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) AND concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(0) on default.table11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(1) on default.table12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan deleted file mode 100644 index f9b0c04c52..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.logical.plan +++ /dev/null @@ -1,24 +0,0 @@ -SORT(1) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) - JOIN(2)(INNER) - => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) - => out schema: {(3) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - => in schema: {(4) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - SCAN(6) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(3)(INNER) - => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(5) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(4) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan deleted file mode 100644 index 8414dfcc1d..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin5.master.plan +++ /dev/null @@ -1,86 +0,0 @@ -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0_0000_000006) -------------------------------------------------------------------------------- -|-eb_0_0000_000006 - |-eb_0_0000_000005 - |-eb_0_0000_000003 - |-eb_0_0000_000002 - |-eb_0_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0_0000_000001 -2: eb_0_0000_000002 -3: eb_0_0000_000003 -4: eb_0_0000_000005 -5: eb_0_0000_000006 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) - -SCAN(4) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(5) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - -======================================================= -Block Id: eb_0_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) - -SORT(14) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) - JOIN(3)(INNER) - => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(13) on eb_0_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(12) on eb_0_0000_000001 - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0_0000_000005 [ROOT] -======================================================= - -[Incoming] -[q_0_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.part.p_partkey (INT4), num=32) - -[Enforcers] - 0: sorted input=eb_0_0000_000003 - -SORT(1) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) - SCAN(15) on eb_0_0000_000003 - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - => in schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - -======================================================= -Block Id: eb_0_0000_000006 [TERMINAL] -======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan b/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan deleted file mode 100644 index b8cb54bb22..0000000000 --- a/tajo-core/src/test/resources/plans/TestJoinOrderOptimize/testWhereClauseJoin6.plan +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------ -Query Block Graph ------------------------------ -|-#ROOT ------------------------------ -Optimization Log: -[LogicalPlan] - > ProjectionNode is eliminated. -[#ROOT] - > Non-optimized join order: (((default.part ⋈ default.supplier) ⋈ default.partsupp) ⋈θ default.nation) (cost: 2.0409003264000005E8) - > Optimized join order : (((default.partsupp ⋈θ default.supplier) ⋈θ default.part) ⋈θ default.nation) (cost: 1.4048712652800003E8) ------------------------------ - -SORT(5) - => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) - JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) - => out schema: {(4) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} - => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(12)(INNER) - => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) - => out schema: {(4) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - => in schema: {(5) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - SCAN(0) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(11)(INNER) - => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) - => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql index ffb23cee7c..98cea4204b 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.sql @@ -1,4 +1,4 @@ -select * FROM +explain global select * FROM customer c right outer join (select n_nationkey from nation) n on n.n_nationkey = c.c_custkey join region r on r.r_regionkey = c.c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result new file mode 100644 index 0000000000..4c07354358 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result @@ -0,0 +1,112 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as c + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(5) on default.region as r + => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +JOIN(9)(INNER) + => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(3) as default.n + => Targets: default.n.n_nationkey (INT4) + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + PROJECTION(2) + => Targets: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(1) default.nation.n_nationkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + +JOIN(10)(INNER) + => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) + => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000004 + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file From de987a5f90d6a8a41b9492100e343405b4737655 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 14 Apr 2015 18:00:16 +0900 Subject: [PATCH 24/43] Fix test failure --- .../exec/ExplainPlanPreprocessorForTest.java | 93 ++++-- .../planner/TajoPlanTestingUtility.java | 272 +++++++++--------- .../engine/planner/TestJoinOrderOptimize.java | 155 +++++----- .../testJoinWithMultipleJoinQual1.sql | 2 +- .../testJoinWithMultipleJoinQual4.sql | 2 +- .../TestJoinOrderOptimize/testTwoPartJoin.sql | 2 +- .../testWhereClauseJoin5.sql | 2 +- .../testWhereClauseJoin6.sql | 2 +- .../testJoinWithMultipleJoinQual1.result | 205 +++++++++++++ .../testJoinWithMultipleJoinQual4.result | 154 ++++++++++ .../testJoinWithMultipleJoinTypes.result | 80 +++--- ...LeftOuterJoinPredicationCaseByCase1.result | 104 +++++++ ...LeftOuterJoinPredicationCaseByCase2.result | 143 +++++++++ ...ightOuterJoinPredicationCaseByCase3.result | 104 +++++++ .../testWhereClauseJoin5.result | 127 ++++++++ .../testWhereClauseJoin6.result | 166 +++++++++++ .../apache/tajo/plan/LogicalOptimizer.java | 114 ++++---- .../org/apache/tajo/plan/LogicalPlan.java | 1 - .../GreedyHeuristicJoinOrderAlgorithm.java | 11 +- .../tajo/plan/joinorder/JoinOrderingUtil.java | 10 + .../plan/joinorder/JoinedRelationsVertex.java | 1 + .../tajo/plan/joinorder/RelationVertex.java | 4 +- .../apache/tajo/plan/logical/JoinSpec.java | 13 +- 23 files changed, 1418 insertions(+), 349 deletions(-) create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin5.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin6.result diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index ab37e22112..dc4a7c52c9 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -25,15 +25,12 @@ import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.JoinNode; -import org.apache.tajo.plan.logical.LogicalNode; -import org.apache.tajo.plan.logical.ScanNode; +import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; +import org.apache.tajo.util.TUtil; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Stack; +import java.util.*; /** * Tajo's logical planner can generate different shapes of logical plans for the same query, @@ -43,17 +40,22 @@ public class ExplainPlanPreprocessorForTest { private static final PlanShapeFixerContext shapeFixerContext = new PlanShapeFixerContext(); private static final PlanShapeFixer shapeFixer = new PlanShapeFixer(); - private static final PidResetContext resetContext = new PidResetContext(); - private static final PidReseter pidReseter = new PidReseter(); + private static final PidCollectorContext collectorContext = new PidCollectorContext(); + private static final JoinPidCollector joinPidCollector = new JoinPidCollector(); + private static final PidReseterContext resetContext = new PidReseterContext(); + private static final JoinPidReseter joinPidReseter = new JoinPidReseter(); public void prepareTest(LogicalPlan plan) throws PlanningException { - // Pid reseter - resetContext.reset(); - pidReseter.visit(resetContext, plan, plan.getRootBlock()); - // Plan shape fixer shapeFixerContext.reset(); shapeFixer.visit(shapeFixerContext, plan, plan.getRootBlock()); + + // Pid reseter + collectorContext.reset(); + joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); + + resetContext.reset(collectorContext.joinPids); + joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); } private static class PlanShapeFixerContext { @@ -97,6 +99,10 @@ public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, Lo super.visitScan(context, plan, block, node, stack); context.childNumbers.push(1); node.setInSchema(sortSchema(node.getInSchema())); + node.setOutSchema(sortSchema(node.getOutSchema())); + if (node.hasTargets()) { + node.setTargets(sortTargets(node.getTargets())); + } if (node.hasQual()) { node.setQual(sortQual(node.getQual())); } @@ -115,7 +121,7 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo if (leftChildNum < rightChildNum) { swapChildren(node); } else if (leftChildNum == rightChildNum) { - if (node.getLeftChild().toString().compareTo(node.getRightChild().toString()) < + if (node.getLeftChild().getOutSchema().toString().compareTo(node.getRightChild().getOutSchema().toString()) < 0) { swapChildren(node); } @@ -125,9 +131,9 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo node.setInSchema(sortSchema(node.getInSchema())); node.setOutSchema(sortSchema(node.getOutSchema())); - if (node.hasJoinQual()) { - node.setJoinQual(sortQual(node.getJoinQual())); - } +// if (node.hasJoinQual()) { +// node.setJoinQual(sortQual(node.getJoinSpec().getPredicates())); +// } if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); @@ -151,6 +157,15 @@ private Schema sortSchema(Schema schema) { private EvalNode sortQual(EvalNode qual) { EvalNode[] cnf = AlgebraicUtil.toConjunctiveNormalFormArray(qual); + return sortQual(cnf); + } + + private EvalNode sortQual(Set quals) { + EvalNode[] cnf = quals.toArray(new EvalNode[quals.size()]); + return sortQual(cnf); + } + + private EvalNode sortQual(EvalNode[] cnf) { Arrays.sort(cnf, evalNodeComparator); return AlgebraicUtil.createSingletonExprFromCNF(cnf); } @@ -162,9 +177,9 @@ private Target[] sortTargets(Target[] targets) { private static void swapChildren(JoinNode node) { LogicalNode tmpChild = node.getLeftChild(); - int tmpId = tmpChild.getPID(); - tmpChild.setPID(node.getRightChild().getPID()); - node.getRightChild().setPID(tmpId); +// int tmpId = tmpChild.getPID(); +// tmpChild.setPID(node.getRightChild().getPID()); +// node.getRightChild().setPID(tmpId); node.setLeftChild(node.getRightChild()); node.setRightChild(tmpChild); } @@ -194,24 +209,48 @@ public int compare(Target o1, Target o2) { } } - private static class PidResetContext { - int seqId = 0; + private static class PidCollectorContext { + List joinPids = TUtil.newList(); public void reset() { - seqId = 0; + joinPids.clear(); } } /** * During join order optimization, new join nodes are created based on the chosen join order. - * So, each join node has different pids. + * So, they have different pids for each query execution. * This class sequentially assigns unique pids to all logical nodes. */ - private static class PidReseter extends BasicLogicalPlanVisitor { + private static class JoinPidCollector extends BasicLogicalPlanVisitor { + + @Override + public LogicalNode visitJoin(PidCollectorContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinNode node, Stack stack) throws PlanningException { + context.joinPids.add(node.getPID()); + super.visitJoin(context, plan, block, node, stack); + + return null; + } + } + + private static class PidReseterContext { + List joinPids; + + public void reset(List joinPids) { + this.joinPids = joinPids; + Collections.sort(this.joinPids); + } + } + + private static class JoinPidReseter extends BasicLogicalPlanVisitor { @Override - public void preHook(LogicalPlan plan, LogicalNode node, Stack stack, PidResetContext context) - throws PlanningException { - node.setPID(context.seqId++); + public LogicalNode visitJoin(PidReseterContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinNode node, Stack stack) throws PlanningException { + super.visitJoin(context, plan, block, node, stack); + node.setPID(context.joinPids.remove(0)); + + return null; } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java index 53dabe47f4..fd67545459 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java @@ -68,10 +68,10 @@ public class TajoPlanTestingUtility { private LogicalOptimizer optimizer; private GlobalPlanner globalPlanner; private DDLExecutor ddlExecutor; - private final PlanShapeFixerContext planShapeFixerContext = new PlanShapeFixerContext(); - private final PlanShapeFixer verifyPreprocessor = new PlanShapeFixer(); - private final PidResetContext resetContext = new PidResetContext(); - private final PidReseter pidReseter = new PidReseter(); +// private final PlanShapeFixerContext planShapeFixerContext = new PlanShapeFixerContext(); +// private final PlanShapeFixer verifyPreprocessor = new PlanShapeFixer(); +// private final PidResetContext resetContext = new PidResetContext(); +// private final PidReseter pidReseter = new PidReseter(); public void setup(String[] names, String[] tablepaths, @@ -132,10 +132,10 @@ public LogicalPlan buildLogicalPlan(String query) throws PlanningException { Expr expr = analyzer.parse(query); LogicalPlan plan = planner.createPlan(defaultContext, expr); optimizer.optimize(defaultContext, plan); - planShapeFixerContext.reset(); - resetContext.reset(); - pidReseter.visit(resetContext, plan, plan.getRootBlock()); - verifyPreprocessor.visit(planShapeFixerContext, plan, plan.getRootBlock()); +// planShapeFixerContext.reset(); +// resetContext.reset(); +// pidReseter.visit(resetContext, plan, plan.getRootBlock()); +// verifyPreprocessor.visit(planShapeFixerContext, plan, plan.getRootBlock()); return plan; } @@ -167,136 +167,136 @@ public boolean executeDDL(String query) throws PlanningException, IOException { return ddlExecutor.execute(defaultContext, plan); } - private static class PidResetContext { - int seqId = 0; - public void reset() { - seqId = 0; - } - } - - private static class PidReseter extends BasicLogicalPlanVisitor { - - @Override - public void preHook(LogicalPlan plan, LogicalNode node, Stack stack, PidResetContext context) - throws PlanningException { - node.setPID(context.seqId++); - } - } - - private static class PlanShapeFixerContext { - - Stack childNumbers = new Stack(); - public void reset() { - childNumbers.clear(); - } - } - - private static final ColumnComparator columnComparator = new ColumnComparator(); - private static final EvalNodeComparator evalNodeComparator = new EvalNodeComparator(); - private static final TargetComparator targetComparator = new TargetComparator(); - - private static class PlanShapeFixer extends BasicLogicalPlanVisitor { - - @Override - public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - ScanNode node, Stack stack) throws PlanningException { - super.visitScan(context, plan, block, node, stack); - context.childNumbers.push(1); - node.setInSchema(sortSchema(node.getInSchema())); - if (node.hasQual()) { - node.setQual(sortQual(node.getQual())); - } - return null; - } - - @Override - public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinNode node, Stack stack) throws PlanningException { - super.visitJoin(context, plan, block, node, stack); - int rightChildNum = context.childNumbers.pop(); - int leftChildNum = context.childNumbers.pop(); - - if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { - - if (leftChildNum < rightChildNum) { - swapChildren(node); - } else if (leftChildNum == rightChildNum) { - if (node.getLeftChild().toString().compareTo(node.getRightChild().toString()) < - 0) { - swapChildren(node); - } - } - } - - node.setInSchema(sortSchema(node.getInSchema())); - node.setOutSchema(sortSchema(node.getOutSchema())); - - if (node.hasJoinQual()) { - node.setJoinQual(sortQual(node.getJoinQual())); - } - - if (node.hasTargets()) { - node.setTargets(sortTargets(node.getTargets())); - } - - context.childNumbers.push(rightChildNum + leftChildNum); - - return null; - } - - private Schema sortSchema(Schema schema) { - Column[] columns = schema.toArray(); - Arrays.sort(columns, columnComparator); - - Schema sorted = new Schema(); - for (Column col : columns) { - sorted.addColumn(col); - } - return sorted; - } - - private EvalNode sortQual(EvalNode qual) { - EvalNode[] cnf = AlgebraicUtil.toConjunctiveNormalFormArray(qual); - Arrays.sort(cnf, evalNodeComparator); - return AlgebraicUtil.createSingletonExprFromCNF(cnf); - } - - private Target[] sortTargets(Target[] targets) { - Arrays.sort(targets, targetComparator); - return targets; - } - - private static void swapChildren(JoinNode node) { - LogicalNode tmpChild = node.getLeftChild(); - int tmpId = tmpChild.getPID(); - tmpChild.setPID(node.getRightChild().getPID()); - node.getRightChild().setPID(tmpId); - node.setLeftChild(node.getRightChild()); - node.setRightChild(tmpChild); - } - } - - private static class ColumnComparator implements Comparator { - - @Override - public int compare(Column o1, Column o2) { - return o1.getQualifiedName().compareTo(o2.getQualifiedName()); - } - } +// private static class PidResetContext { +// int seqId = 0; +// public void reset() { +// seqId = 0; +// } +// } - private static class EvalNodeComparator implements Comparator { +// private static class PidReseter extends BasicLogicalPlanVisitor { +// +// @Override +// public void preHook(LogicalPlan plan, LogicalNode node, Stack stack, PidResetContext context) +// throws PlanningException { +// node.setPID(context.seqId++); +// } +// } +// +// private static class PlanShapeFixerContext { +// +// Stack childNumbers = new Stack(); +// public void reset() { +// childNumbers.clear(); +// } +// } - @Override - public int compare(EvalNode o1, EvalNode o2) { - return o1.toJson().compareTo(o2.toJson()); - } - } +// private static final ColumnComparator columnComparator = new ColumnComparator(); +// private static final EvalNodeComparator evalNodeComparator = new EvalNodeComparator(); +// private static final TargetComparator targetComparator = new TargetComparator(); - private static class TargetComparator implements Comparator { +// private static class PlanShapeFixer extends BasicLogicalPlanVisitor { +// +// @Override +// public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, +// ScanNode node, Stack stack) throws PlanningException { +// super.visitScan(context, plan, block, node, stack); +// context.childNumbers.push(1); +// node.setInSchema(sortSchema(node.getInSchema())); +// if (node.hasQual()) { +// node.setQual(sortQual(node.getQual())); +// } +// return null; +// } +// +// @Override +// public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, +// JoinNode node, Stack stack) throws PlanningException { +// super.visitJoin(context, plan, block, node, stack); +// int rightChildNum = context.childNumbers.pop(); +// int leftChildNum = context.childNumbers.pop(); +// +// if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { +// +// if (leftChildNum < rightChildNum) { +// swapChildren(node); +// } else if (leftChildNum == rightChildNum) { +// if (node.getLeftChild().toString().compareTo(node.getRightChild().toString()) < +// 0) { +// swapChildren(node); +// } +// } +// } +// +// node.setInSchema(sortSchema(node.getInSchema())); +// node.setOutSchema(sortSchema(node.getOutSchema())); +// +// if (node.hasJoinQual()) { +// node.setJoinQual(sortQual(node.getJoinQual())); +// } +// +// if (node.hasTargets()) { +// node.setTargets(sortTargets(node.getTargets())); +// } +// +// context.childNumbers.push(rightChildNum + leftChildNum); +// +// return null; +// } +// +// private Schema sortSchema(Schema schema) { +// Column[] columns = schema.toArray(); +// Arrays.sort(columns, columnComparator); +// +// Schema sorted = new Schema(); +// for (Column col : columns) { +// sorted.addColumn(col); +// } +// return sorted; +// } +// +// private EvalNode sortQual(EvalNode qual) { +// EvalNode[] cnf = AlgebraicUtil.toConjunctiveNormalFormArray(qual); +// Arrays.sort(cnf, evalNodeComparator); +// return AlgebraicUtil.createSingletonExprFromCNF(cnf); +// } +// +// private Target[] sortTargets(Target[] targets) { +// Arrays.sort(targets, targetComparator); +// return targets; +// } +// +// private static void swapChildren(JoinNode node) { +// LogicalNode tmpChild = node.getLeftChild(); +// int tmpId = tmpChild.getPID(); +// tmpChild.setPID(node.getRightChild().getPID()); +// node.getRightChild().setPID(tmpId); +// node.setLeftChild(node.getRightChild()); +// node.setRightChild(tmpChild); +// } +// } - @Override - public int compare(Target o1, Target o2) { - return o1.toJson().compareTo(o2.toJson()); - } - } +// private static class ColumnComparator implements Comparator { +// +// @Override +// public int compare(Column o1, Column o2) { +// return o1.getQualifiedName().compareTo(o2.getQualifiedName()); +// } +// } +// +// private static class EvalNodeComparator implements Comparator { +// +// @Override +// public int compare(EvalNode o1, EvalNode o2) { +// return o1.toJson().compareTo(o2.toJson()); +// } +// } +// +// private static class TargetComparator implements Comparator { +// +// @Override +// public int compare(Target o1, Target o2) { +// return o1.toJson().compareTo(o2.toJson()); +// } +// } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index bdccb9304f..139e648d92 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -24,7 +24,6 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf; -import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.storage.StorageConstants; import org.apache.tajo.util.KeyValueSet; import org.junit.AfterClass; @@ -107,78 +106,84 @@ public final void testWhereClauseJoin5() throws Exception { cleanupQuery(res); } -// @Test -// public final void testWhereClauseJoin6() throws Exception { -// LogicalPlan plan = buildLogicalPlan(); -// assertLogicalPlan(plan); -// } -// -// @Test -// public final void testJoinWithMultipleJoinQual1() throws Exception { -// LogicalPlan plan = buildLogicalPlan(); -// assertLogicalPlan(plan); -// } -// -// @Test -// public final void testJoinWithMultipleJoinQual4() throws Exception { -// LogicalPlan plan = buildLogicalPlan(); -// assertLogicalPlan(plan); -// } -// -// @Test -// public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { -// createOuterJoinTestTable(); -// try { -// LogicalPlan plan = buildLogicalPlanFromString( -// "select t1.id, t1.name, t2.id, t3.id\n" + -// "from default.table11 t1\n" + -// "left outer join table12 t2\n" + -// "on t1.id = t2.id\n" + -// "left outer join table13 t3\n" + -// "on t1.id = t3.id and t2.id = t3.id"); -// -// assertLogicalPlan(plan); -// } finally { -// dropOuterJoinTestTable(); -// } -// } -// -// @Test -// public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { -// createOuterJoinTestTable(); -// try { -// LogicalPlan plan = buildLogicalPlanFromString( -// "select t1.id, t1.name, t2.id, t3.id\n" + -// "from table11 t1\n" + -// "right outer join table12 t2 \n" + -// "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + -// "right outer join table13 t3\n" + -// "on t1.id = t3.id " -// ); -// assertLogicalPlan(plan); -// } finally { -// dropOuterJoinTestTable(); -// } -// } -// -// @Test -// public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { -// // outer -> outer -> inner -// createOuterJoinTestTable(); -// try { -// LogicalPlan plan = buildLogicalPlanFromString( -// "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + -// "from table11 t1\n" + -// "left outer join table12 t2\n" + -// "on t1.id = t2.id\n" + -// "left outer join table13 t3\n" + -// "on t2.id = t3.id\n" + -// "inner join table14 t4\n" + -// "on t2.id = t4.id" -// ); -// assertLogicalPlan(plan); -// } finally { -// dropOuterJoinTestTable(); -// } -// } + @Test + public final void testWhereClauseJoin6() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testJoinWithMultipleJoinQual1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testJoinWithMultipleJoinQual4() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from default.table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "left outer join table13 t3\n" + + "on t1.id = t3.id and t2.id = t3.id"); + + assertResultSet(res); + cleanupQuery(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "right outer join table12 t2 \n" + + "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + + "right outer join table13 t3\n" + + "on t1.id = t3.id " + ); + assertResultSet(res); + cleanupQuery(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { + // outer -> outer -> inner + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id, t4.id\n" + + "from table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "left outer join table13 t3\n" + + "on t2.id = t3.id\n" + + "inner join table14 t4\n" + + "on t2.id = t4.id" + ); + assertResultSet(res); + cleanupQuery(res); + } finally { + dropOuterJoinTestTable(); + } + } } diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql index 9a04dc5d4d..720ebbe649 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.sql @@ -1,4 +1,4 @@ -select +explain global select s.s_acctbal, s.s_name, n.n_name, diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql index 4519de710d..6c7eec8c06 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.sql @@ -1,4 +1,4 @@ -select t.n_nationkey, t.n_name, t.n_regionkey, t.n_comment, ps.ps_availqty, s.s_suppkey +explain global select t.n_nationkey, t.n_name, t.n_regionkey, t.n_comment, ps.ps_availqty, s.s_suppkey from ( select n_nationkey, n_name, n_regionkey, n_comment from nation n diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql index d30c1ed642..cb7109b988 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql @@ -1,4 +1,4 @@ -select +explain global select l_orderkey, p_name, n_name diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql index 3494007269..eec84acce9 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin5.sql @@ -1,4 +1,4 @@ -select +explain global select s_acctbal, s_name, p_partkey diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql index 62d3b79f29..a8ae13ff60 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin6.sql @@ -1,4 +1,4 @@ -select +explain global select s_acctbal, s_name, p_partkey, diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.result new file mode 100644 index 0000000000..d395faf775 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual1.result @@ -0,0 +1,205 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +10: eb_0000000000000_0000_000010 +11: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +SCAN(3) on default.supplier as s + => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) + => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +SCAN(7) on default.part as p + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) + => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) + +SORT(26) + => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT) + => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} + => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(10) + => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} + => in schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result new file mode 100644 index 0000000000..c5f46f5de8 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result @@ -0,0 +1,154 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(4) as default.t + => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + PROJECTION(3) + => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(12)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000005 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +SELECTION(9) + => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) + JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) + => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000006 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result index 4c07354358..68f1fffe1c 100644 --- a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinTypes.result @@ -28,21 +28,29 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) SCAN(0) on default.customer as c - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT) - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT) + => out schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} + => in schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) -SCAN(5) on default.region as r - => target list: default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +TABLE_SUBQUERY(3) as default.n + => Targets: default.n.n_nationkey (INT4) + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} + PROJECTION(2) + => Targets: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(1) default.nation.n_nationkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4) + => out schema: {(1) default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -50,42 +58,34 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] [Incoming] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) -JOIN(9)(INNER) - => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} +JOIN(9)(RIGHT_OUTER) + => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4) + => out schema: {(9) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4)} + => in schema: {(9) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(3) default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => out schema: {(1) default.n.n_nationkey (INT4)} + => in schema: {(1) default.n.n_nationkey (INT4)} SCAN(12) on eb_0000000000000_0000_000001 - => out schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} - => in schema: {(8) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT)} + => out schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} + => in schema: {(8) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -TABLE_SUBQUERY(3) as default.n - => Targets: default.n.n_nationkey (INT4) - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} - PROJECTION(2) - => Targets: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(1) default.nation.n_nationkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4) - => out schema: {(1) default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT)} +SCAN(5) on default.region as r + => target list: default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) + => out schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] @@ -93,19 +93,19 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] [Incoming] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) JOIN(10)(INNER) - => Join Cond: default.n.n_nationkey (INT4) = default.c.c_custkey (INT4) - => target list: default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT) - => out schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.n.n_nationkey (INT4), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(12) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT), default.n.n_nationkey (INT4)} + => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) + => target list: default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4) + => out schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(12) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4), default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(15) on eb_0000000000000_0000_000004 - => out schema: {(1) default.n.n_nationkey (INT4)} - => in schema: {(1) default.n.n_nationkey (INT4)} + => out schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} - => in schema: {(11) default.c.c_custkey (INT4), default.c.c_name (TEXT), default.c.c_address (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.c.c_acctbal (FLOAT8), default.c.c_mktsegment (TEXT), default.c.c_comment (TEXT), default.r.r_regionkey (INT4), default.r.r_name (TEXT), default.r.r_comment (TEXT)} + => out schema: {(9) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4)} + => in schema: {(9) default.c.c_acctbal (FLOAT8), default.c.c_address (TEXT), default.c.c_comment (TEXT), default.c.c_custkey (INT4), default.c.c_mktsegment (TEXT), default.c.c_name (TEXT), default.c.c_nationkey (INT4), default.c.c_phone (TEXT), default.n.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.result new file mode 100644 index 0000000000..beeab1460d --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase1.result @@ -0,0 +1,104 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) + +JOIN(7)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) AND default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result new file mode 100644 index 0000000000..3d2efd4a01 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result @@ -0,0 +1,143 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(10)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +SCAN(5) on default.table14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.t2.id (INT4) = default.t4.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(18) on eb_0000000000000_0000_000006 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(17) on eb_0000000000000_0000_000005 + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.result new file mode 100644 index 0000000000..5f9ab37cce --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase3.result @@ -0,0 +1,104 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(7)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) AND concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(8)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin5.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin5.result new file mode 100644 index 0000000000..a5d70ca236 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin5.result @@ -0,0 +1,127 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(9)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(0) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +SORT(16) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + JOIN(10)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(3) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(4) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + SCAN(15) on eb_0000000000000_0000_000004 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000005 + +SORT(4) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + SCAN(17) on eb_0000000000000_0000_000005 + => out schema: {(3) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(3) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin6.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin6.result new file mode 100644 index 0000000000..8996754014 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin6.result @@ -0,0 +1,166 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000002 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(0) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +JOIN(12)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(4) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(5) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000003 + => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +SORT(21) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) + JOIN(13)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) + => out schema: {(4) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000006 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000005 + => out schema: {(4) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(4) default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 7 => 8 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000007 + +SORT(5) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc),default.nation.n_name (TEXT) (asc) + SCAN(22) on eb_0000000000000_0000_000007 + => out schema: {(4) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + => in schema: {(4) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index b11b55e4d3..ea1a3f8b90 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -113,7 +113,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding relations and filter expressions JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); - addJoinEdgesFromQuals(block, joinGraphContext); +// addJoinEdgesFromQuals(block, joinGraphContext); // finding join order and restore remain filter order FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); @@ -163,62 +163,62 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } } - private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context) - throws PlanningException { - Map relationNodeMap = TUtil.newHashMap(); - for (RelationNode relationNode : block.getRelations()) { - relationNodeMap.put(relationNode.getCanonicalName(), relationNode); - } - addJoinEdgesFromQuals(block, context, context.getJoinGraph(), - new HashSet(context.getCandidateJoinConditions()), relationNodeMap); - addJoinEdgesFromQuals(block, context, context.getJoinGraph(), - new HashSet(context.getCandidateJoinFilters()), relationNodeMap); - } - - private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context, JoinGraph graph, - Set quals, Map relationNodeMap) - throws PlanningException { - for (EvalNode condition : quals) { - if (EvalTreeUtil.isJoinQual(condition, false)) { - String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) condition); - String leftExprRelName = relations[0]; - String rightExprRelName = relations[1]; - RelationVertex left = null, right = null; - if (relationNodeMap.containsKey(leftExprRelName)) { - left = new RelationVertex(relationNodeMap.get(leftExprRelName)); - } - if (relationNodeMap.containsKey(rightExprRelName)) { - right = new RelationVertex(relationNodeMap.get(rightExprRelName)); - } - if (left != null && right != null) { - JoinEdge edge = graph.getEdge(left, right); - if (edge == null) { - // check if they are connectable - Set leftInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, left); - Set rightInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, right); - for (JoinVertex leftInterchangeable : leftInterchangeables) { - for (JoinVertex rightInterchangeable : rightInterchangeables) { - if (graph.getEdge(leftInterchangeable, rightInterchangeable) != null) { - // If a join is an implicit join, its type is assumed as the INNER join - edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); - edge.addJoinQual(condition); - } - } - } - } else { - if (edge.getJoinType() == JoinType.CROSS) { - edge.getJoinSpec().setType(JoinType.INNER); - } - edge.addJoinQual(condition); - } - - if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { - graph.addJoin(context, edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); - } - } - } - } - } +// private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context) +// throws PlanningException { +// Map relationNodeMap = TUtil.newHashMap(); +// for (RelationNode relationNode : block.getRelations()) { +// relationNodeMap.put(relationNode.getCanonicalName(), relationNode); +// } +// addJoinEdgesFromQuals(block, context, context.getJoinGraph(), +// new HashSet(context.getCandidateJoinConditions()), relationNodeMap); +// addJoinEdgesFromQuals(block, context, context.getJoinGraph(), +// new HashSet(context.getCandidateJoinFilters()), relationNodeMap); +// } + +// private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context, JoinGraph graph, +// Set quals, Map relationNodeMap) +// throws PlanningException { +// for (EvalNode condition : quals) { +// if (EvalTreeUtil.isJoinQual(condition, false)) { +// String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) condition); +// String leftExprRelName = relations[0]; +// String rightExprRelName = relations[1]; +// RelationVertex left = null, right = null; +// if (relationNodeMap.containsKey(leftExprRelName)) { +// left = new RelationVertex(relationNodeMap.get(leftExprRelName)); +// } +// if (relationNodeMap.containsKey(rightExprRelName)) { +// right = new RelationVertex(relationNodeMap.get(rightExprRelName)); +// } +// if (left != null && right != null) { +// JoinEdge edge = graph.getEdge(left, right); +// if (edge == null) { +// // check if they are connectable +// Set leftInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, left); +// Set rightInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, right); +// for (JoinVertex leftInterchangeable : leftInterchangeables) { +// for (JoinVertex rightInterchangeable : rightInterchangeables) { +// if (graph.getEdge(leftInterchangeable, rightInterchangeable) != null) { +// // If a join is an implicit join, its type is assumed as the INNER join +// edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); +// edge.addJoinQual(condition); +// } +// } +// } +// } else { +// if (edge.getJoinType() == JoinType.CROSS) { +// edge.getJoinSpec().setType(JoinType.INNER); +// } +// edge.addJoinQual(condition); +// } +// +// if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { +// graph.addJoin(context, edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); +// } +// } +// } +// } +// } private String [] guessRelationsFromJoinQual(LogicalPlan.QueryBlock block, BinaryEval joinCondition) throws PlanningException { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java index eb0a6bbd0d..17f79dae6e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java @@ -18,7 +18,6 @@ package org.apache.tajo.plan; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang.ObjectUtils; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index c364474b76..6acbb78092 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -22,6 +22,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.AlgebraicUtil; @@ -153,11 +154,11 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra LOG.error("Join between (" + outer + ", " + inner + ") is not found."); continue; } -// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( -// graphContext.getCandidateJoinConditions(), foundJoin, true); -// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( -// graphContext.getCandidateJoinFilters(), foundJoin, false)); -// foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); + Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( + graphContext.getCandidateJoinConditions(), foundJoin, true); + additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( + graphContext.getCandidateJoinFilters(), foundJoin, false)); + foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); double cost = getCost(foundJoin); if (cost < minCost) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index cfba4eb90d..562f530a61 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -66,6 +66,16 @@ public static boolean checkIfEvaluatedAtEdge(EvalNode evalNode, JoinEdge edge, b return true; } + public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { + if (!predicates.isEmpty()) { + if (edge.getJoinType() == JoinType.CROSS) { + edge.getJoinSpec().setType(JoinType.INNER); + } + edge.addJoinPredicates(predicates); + } + return edge; + } + // public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, // @Nullable EvalNode predicates) { // LogicalNode leftChild = left.getCorrespondingNode(); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index 988d09747d..01c83f51f9 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -105,6 +105,7 @@ public LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block) { if (joinEdge.hasJoinQual()) { joinNode.setJoinQual(joinEdge.getSingletonJoinQual()); } + block.registerNode(joinNode); return joinNode; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java index d75bc507dd..b55f2e8ea1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java @@ -28,8 +28,8 @@ public class RelationVertex implements JoinVertex{ - private RelationNode relationNode; - private LogicalNode topLogicalNode; + private final RelationNode relationNode; + private final LogicalNode topLogicalNode; // public RelationVertex(LogicalNode topLogicalNode, RelationNode relationNode) { public RelationVertex(RelationNode relationNode) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java index 900dd06cd6..7643e4b836 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinSpec.java @@ -24,11 +24,22 @@ import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.util.TUtil; +import java.util.Comparator; import java.util.Set; +import java.util.TreeSet; public class JoinSpec implements Cloneable { + + private static class EvalNodeComparator implements Comparator { + + @Override + public int compare(EvalNode e1, EvalNode e2) { + return e1.toJson().compareTo(e2.toJson()); + } + } + private JoinType type = null; - private Set predicates = TUtil.newHashSet(); + private Set predicates = new TreeSet(new EvalNodeComparator()); public JoinSpec() { From 9e87ad2ce2dc838fad785665a996a240a6718359 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 00:02:39 +0900 Subject: [PATCH 25/43] TAJO-1352_4 --- .../tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java | 3 +-- .../src/main/java/org/apache/tajo/plan/logical/ScanNode.java | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 6acbb78092..09b8b8c6fa 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -133,8 +133,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, * @return The best join pair among them * @throws PlanningException */ - private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, - Set vertexes) + private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, Set vertexes) throws PlanningException { double minCost = Double.MAX_VALUE; JoinEdge bestJoin = null; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java index a22f592b64..396197a970 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java @@ -180,6 +180,7 @@ public boolean equals(Object obj) { eq = eq && TUtil.checkEquals(this.tableDesc, other.tableDesc); eq = eq && TUtil.checkEquals(this.qual, other.qual); eq = eq && TUtil.checkEquals(this.targets, other.targets); + eq = eq && TUtil.checkEquals(this.alias, other.alias); return eq; } From de1d913530ee41b6268f80999fda41cd6849ec15 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 15:10:34 +0900 Subject: [PATCH 26/43] TAJO-1352_4 --- .../exec/ExplainPlanPreprocessorForTest.java | 17 +- .../engine/planner/TestJoinOrderOptimize.java | 666 +++++++++++++++++- .../tajo/engine/query/TestJoinBroadcast.java | 64 +- .../tajo/engine/query/TestJoinQuery.java | 2 +- .../TestJoinOrderOptimize/oj_table1_ddl.sql | 3 + .../TestJoinOrderOptimize/oj_table2_ddl.sql | 3 + .../TestJoinOrderOptimize/table1_int4_ddl.sql | 3 + .../TestJoinOrderOptimize/table1_int8_ddl.sql | 3 + .../testComplexJoinCondition1.sql | 6 + .../testComplexJoinCondition2.sql | 6 + .../testComplexJoinCondition3.sql | 6 + .../testComplexJoinCondition4.sql | 6 + .../testComplexJoinCondition5.sql | 6 + .../testComplexJoinCondition6.sql | 6 + .../testComplexJoinCondition7.sql | 6 + .../testComplexJoinsWithCaseWhen.sql | 11 + .../testComplexJoinsWithCaseWhen2.sql | 9 + .../TestJoinOrderOptimize/testCrossJoin.sql | 1 + .../testCrossJoinWithAsterisk1.sql | 1 + .../testCrossJoinWithAsterisk2.sql | 1 + .../testCrossJoinWithAsterisk3.sql | 1 + .../testCrossJoinWithAsterisk4.sql | 1 + .../testCrossJoinWithEmptyTable1.sql | 8 + ...CrossJoinWithThetaJoinConditionInWhere.sql | 3 + .../testDifferentTypesJoinCondition.sql | 1 + .../testFullOuterJoin1.sql | 8 + .../testFullOuterJoinWithEmptyTable1.sql | 8 + .../testInnerJoinAndCaseWhen.sql | 18 + .../testInnerJoinWithEmptyTable.sql | 8 + ...InnerJoinWithThetaJoinConditionInWhere.sql | 3 + .../testJoinAsterisk.sql | 3 + .../testJoinCoReferredEvals1.sql | 11 + .../testJoinCoReferredEvalsFilterPushdown.sql | 13 + .../testJoinCoReferredEvalsWithSameExprs1.sql | 14 + .../testJoinCoReferredEvalsWithSameExprs2.sql | 22 + .../testJoinFilterOfRowPreservedTable1.sql | 8 + .../testJoinOnMultipleDatabases.sql | 25 + .../testJoinWithMultipleJoinQual2.sql | 8 + .../testJoinWithMultipleJoinQual3.sql | 9 + .../testJoinWithOrPredicates.sql | 6 + .../testLeftOuterJoin1.sql | 9 + .../testLeftOuterJoinWithConstantExpr1.sql | 9 + .../testLeftOuterJoinWithConstantExpr2.sql | 9 + .../testLeftOuterJoinWithConstantExpr3.sql | 17 + .../testLeftOuterJoinWithConstantExpr4.sql | 6 + .../testLeftOuterJoinWithConstantExpr5.sql | 9 + .../testLeftOuterJoinWithEmptyTable1.sql | 9 + .../testLeftOuterJoinWithEmptyTable2.sql | 9 + .../testLeftOuterJoinWithEmptyTable3.sql | 14 + .../testLeftOuterJoinWithEmptyTable4.sql | 17 + .../testLeftOuterJoinWithEmptyTable5.sql | 11 + .../testLeftOuterJoinWithNull1.sql | 10 + .../testLeftOuterJoinWithNull2.sql | 11 + .../testLeftOuterJoinWithNull3.sql | 10 + ...OuterJoinWithThetaJoinConditionInWhere.sql | 3 + .../testOuterJoinAndCaseWhen1.sql | 12 + .../testRightOuterJoin1.sql | 8 + .../testRightOuterJoinWithEmptyTable1.sql | 8 + ...OuterJoinWithThetaJoinConditionInWhere.sql | 3 + .../TestJoinOrderOptimize/testTPCHQ2Join.sql | 25 + .../TestJoinOrderOptimize/testTwoPartJoin.sql | 2 +- .../testWhereClauseJoin1.sql | 11 + .../testWhereClauseJoin2.sql | 9 + .../testWhereClauseJoin3.sql | 10 + .../testWhereClauseJoin4.sql | 9 + .../testComplexJoinCondition1.result | 88 +++ .../testComplexJoinCondition2.result | 88 +++ .../testComplexJoinCondition3.result | 88 +++ .../testComplexJoinCondition4.result | 88 +++ .../testComplexJoinCondition5.result | 96 +++ .../testComplexJoinCondition6.result | 111 +++ .../testComplexJoinCondition7.result | 111 +++ .../testComplexJoinsWithCaseWhen.result | 127 ++++ .../testComplexJoinsWithCaseWhen2.result | 135 ++++ .../testCrossJoin.result | 87 +++ .../testCrossJoinWithAsterisk1.result | 87 +++ .../testCrossJoinWithAsterisk2.result | 87 +++ .../testCrossJoinWithAsterisk3.result | 87 +++ .../testCrossJoinWithAsterisk4.result | 87 +++ .../testCrossJoinWithEmptyTable1.result | 88 +++ ...ssJoinWithThetaJoinConditionInWhere.result | 93 +++ .../testDifferentTypesJoinCondition.result | 7 + .../testFullOuterJoin1.result | 88 +++ ...FullOuterJoinPredicationCaseByCase1.result | 127 ++++ ...lOuterJoinWithEmptyIntermediateData.result | 83 +++ .../testFullOuterJoinWithEmptyTable1.result | 88 +++ .../testInnerJoinAndCaseWhen.result | 88 +++ .../testInnerJoinWithEmptyTable.result | 88 +++ ...erJoinWithThetaJoinConditionInWhere.result | 67 ++ .../testJoinAsterisk.result | 65 ++ .../testJoinCoReferredEvals1.result | 88 +++ ...stJoinCoReferredEvalsWithSameExprs1.result | 93 +++ ...stJoinCoReferredEvalsWithSameExprs2.result | 119 ++++ .../testJoinFilterOfRowPreservedTable1.result | 88 +++ .../testJoinOnMultipleDatabases.result | 205 ++++++ .../testJoinWithMultipleJoinQual2.result | 113 +++ .../testJoinWithMultipleJoinQual3.result | 152 ++++ .../testJoinWithMultipleJoinQual4.result | 4 +- .../testJoinWithOrPredicates.result | 94 +++ .../testLeftOuterJoin1.result | 88 +++ ...LeftOuterJoinPredicationCaseByCase2.result | 54 +- ...ftOuterJoinPredicationCaseByCase2_1.result | 146 ++++ ...LeftOuterJoinPredicationCaseByCase3.result | 104 +++ ...LeftOuterJoinPredicationCaseByCase4.result | 105 +++ ...LeftOuterJoinPredicationCaseByCase5.result | 105 +++ ...LeftOuterJoinPredicationCaseByCase6.result | 106 +++ .../testLeftOuterJoinWithConstantExpr1.result | 92 +++ .../testLeftOuterJoinWithConstantExpr2.result | 100 +++ .../testLeftOuterJoinWithConstantExpr3.result | 126 ++++ .../testLeftOuterJoinWithConstantExpr4.result | 70 ++ .../testLeftOuterJoinWithConstantExpr5.result | 71 ++ .../testLeftOuterJoinWithEmptyTable1.result | 88 +++ .../testLeftOuterJoinWithEmptyTable2.result | 114 +++ .../testLeftOuterJoinWithEmptyTable3.result | 152 ++++ .../testLeftOuterJoinWithEmptyTable4.result | 167 +++++ .../testLeftOuterJoinWithEmptyTable5.result | 114 +++ .../testLeftOuterJoinWithNull1.result | 90 +++ .../testLeftOuterJoinWithNull2.result | 90 +++ .../testLeftOuterJoinWithNull3.result | 90 +++ ...erJoinWithThetaJoinConditionInWhere.result | 67 ++ .../testLeftOuterWithEmptyTable.result | 65 ++ .../testOuterJoinAndCaseWhen1.result | 7 + .../testRightOuterJoin1.result | 88 +++ ...ightOuterJoinPredicationCaseByCase1.result | 104 +++ ...ightOuterJoinPredicationCaseByCase2.result | 106 +++ .../testRightOuterJoinWithEmptyTable1.result | 88 +++ ...erJoinWithThetaJoinConditionInWhere.result | 67 ++ .../testTPCHQ2Join.result | 205 ++++++ .../testWhereClauseJoin1.result | 88 +++ .../testWhereClauseJoin2.result | 88 +++ .../testWhereClauseJoin3.result | 88 +++ .../testWhereClauseJoin4.result | 88 +++ .../testExplainSelectPhysical.2.result | 12 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 5 + 134 files changed, 7610 insertions(+), 87 deletions(-) create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table1_ddl.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table2_ddl.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int4_ddl.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int8_ddl.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition4.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition5.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition6.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition7.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoin.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testDifferentTypesJoinCondition.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoin1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinAsterisk.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvals1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsFilterPushdown.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinOnMultipleDatabases.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithOrPredicates.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoin1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoin1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTPCHQ2Join.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin1.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin2.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin3.sql create mode 100644 tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin4.sql create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition5.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition6.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition7.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoin.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testDifferentTypesJoinCondition.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoin1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinPredicationCaseByCase1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyIntermediateData.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinAsterisk.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvals1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithOrPredicates.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoin1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2_1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase5.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase6.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterWithEmptyTable.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoin1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testTPCHQ2Join.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin1.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin2.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin3.result create mode 100644 tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin4.result diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index dc4a7c52c9..cce083a1b0 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -89,17 +89,27 @@ private static class PlanShapeFixer extends BasicLogicalPlanVisitor stack) throws PlanningException { super.visit(context, plan, block, node, stack); + node.setInSchema(sortSchema(node.getInSchema())); + node.setOutSchema(sortSchema(node.getOutSchema())); context.childNumbers.push(context.childNumbers.pop()+1); return null; } + @Override + public LogicalNode visitFilter(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + SelectionNode node, Stack stack) throws PlanningException { + super.visitFilter(context, plan, block, node, stack); + if (node.hasQual()) { + node.setQual(sortQual(node.getQual())); + } + return null; + } + @Override public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack stack) throws PlanningException { super.visitScan(context, plan, block, node, stack); context.childNumbers.push(1); - node.setInSchema(sortSchema(node.getInSchema())); - node.setOutSchema(sortSchema(node.getOutSchema())); if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); } @@ -128,9 +138,6 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo } } - node.setInSchema(sortSchema(node.getInSchema())); - node.setOutSchema(sortSchema(node.getOutSchema())); - // if (node.hasJoinQual()) { // node.setJoinQual(sortQual(node.getJoinSpec().getPredicates())); // } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java index 139e648d92..79b74268b4 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderOptimize.java @@ -31,6 +31,10 @@ import org.junit.Test; import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; public class TestJoinOrderOptimize extends QueryTestCaseBase { @@ -93,7 +97,63 @@ private void dropOuterJoinTestTable() throws Exception { } @Test - public final void testJoinWithMultipleJoinTypes() throws Exception { + public final void testCrossJoin() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testCrossJoinWithThetaJoinConditionInWhere() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testInnerJoinWithThetaJoinConditionInWhere() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithThetaJoinConditionInWhere() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testRightOuterJoinWithThetaJoinConditionInWhere() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testWhereClauseJoin1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testWhereClauseJoin2() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testWhereClauseJoin3() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testWhereClauseJoin4() throws Exception { ResultSet res = executeQuery(); assertResultSet(res); cleanupQuery(res); @@ -113,6 +173,13 @@ public final void testWhereClauseJoin6() throws Exception { cleanupQuery(res); } + @Test + public final void testTPCHQ2Join() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + @Test public final void testJoinWithMultipleJoinQual1() throws Exception { ResultSet res = executeQuery(); @@ -120,6 +187,20 @@ public final void testJoinWithMultipleJoinQual1() throws Exception { cleanupQuery(res); } + @Test + public final void testJoinWithMultipleJoinQual2() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testJoinWithMultipleJoinQual3() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + @Test public final void testJoinWithMultipleJoinQual4() throws Exception { ResultSet res = executeQuery(); @@ -127,63 +208,622 @@ public final void testJoinWithMultipleJoinQual4() throws Exception { cleanupQuery(res); } + @Test + public final void testJoinWithMultipleJoinTypes() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoin1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithConstantExpr1() throws Exception { + // outer join with constant projections + // + // select c_custkey, orders.o_orderkey, 'val' as val from customer + // left outer join orders on c_custkey = o_orderkey; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithConstantExpr2() throws Exception { + // outer join with constant projections + // + // select c_custkey, o.o_orderkey, 'val' as val from customer left outer join + // (select * from orders) o on c_custkey = o.o_orderkey + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithConstantExpr3() throws Exception { + // outer join with constant projections + // + // select a.c_custkey, 123::INT8 as const_val, b.min_name from customer a + // left outer join ( select c_custkey, min(c_name) as min_name from customer group by c_custkey) b + // on a.c_custkey = b.c_custkey; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithConstantExpr4() throws Exception { + // outer join with constant projections + // + // select + // c_custkey, + // orders.o_orderkey, + // 1 as key1 + // from customer left outer join orders on c_custkey = o_orderkey and key1 = 1; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithConstantExpr5() throws Exception { + // outer join with constant projections + // + // select + // c_custkey, + // orders.o_orderkey, + // 1 as key1 + // from customer left outer join orders on c_custkey = o_orderkey and key1 = 1; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testRightOuterJoin1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testFullOuterJoin1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testJoinCoReferredEvals1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testJoinCoReferredEvalsWithSameExprs1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testJoinCoReferredEvalsWithSameExprs2() throws Exception { + // including grouping operator + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testInnerJoinAndCaseWhen() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinsWithCaseWhen() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinsWithCaseWhen2() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testCrossJoinWithAsterisk1() throws Exception { + // select region.*, customer.* from region, customer; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testCrossJoinWithAsterisk2() throws Exception { + // select region.*, customer.* from customer, region; + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testCrossJoinWithAsterisk3() throws Exception { + // select * from customer, region + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testCrossJoinWithAsterisk4() throws Exception { + // select length(r_comment) as len, *, c_custkey*10 from customer, region order by len,r_regionkey,r_name + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testInnerJoinWithEmptyTable() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithEmptyTable1() throws Exception { + /* + select + c_custkey, + empty_orders.o_orderkey, + empty_orders.o_orderstatus, + empty_orders.o_orderdate + from + customer left outer join empty_orders on c_custkey = o_orderkey + order by + c_custkey, o_orderkey; + */ + + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithEmptyTable2() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithEmptyTable3() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithEmptyTable4() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithEmptyTable5() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testRightOuterJoinWithEmptyTable1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testFullOuterJoinWithEmptyTable1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testCrossJoinWithEmptyTable1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testJoinOnMultipleDatabases() throws Exception { + executeString("CREATE DATABASE JOINS"); + assertDatabaseExists("joins"); + executeString("CREATE TABLE JOINS.part_ as SELECT * FROM part"); + assertTableExists("joins.part_"); + executeString("CREATE TABLE JOINS.supplier_ as SELECT * FROM supplier"); + assertTableExists("joins.supplier_"); + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + + executeString("DROP TABLE JOINS.part_ PURGE"); + executeString("DROP TABLE JOINS.supplier_ PURGE"); + executeString("DROP DATABASE JOINS"); + } + + @Test + public final void testJoinAsterisk() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithNull1() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithNull2() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testLeftOuterJoinWithNull3() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + @Test public final void testLeftOuterJoinPredicationCaseByCase1() throws Exception { createOuterJoinTestTable(); try { ResultSet res = executeString( "explain global select t1.id, t1.name, t2.id, t3.id\n" + - "from default.table11 t1\n" + + "from table11 t1\n" + "left outer join table12 t2\n" + "on t1.id = t2.id\n" + "left outer join table13 t3\n" + "on t1.id = t3.id and t2.id = t3.id"); assertResultSet(res); - cleanupQuery(res); } finally { dropOuterJoinTestTable(); } } @Test - public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { + public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { + // outer -> outer -> inner + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id, t4.id\n" + + "from table12 t2\n" + + "left outer join table13 t3\n" + + "on t2.id = t3.id\n" + + "left outer join table11 t1\n" + + "on t3.id = t1.id\n" + + "inner join table14 t4\n" + + "on t2.id = t4.id" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase2_1() throws Exception { + // inner(on predication) -> outer(on predication) -> outer -> where + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id, t4.id\n" + + "from table11 t1\n" + + "inner join table14 t4\n" + + "on t1.id = t4.id and t4.id > 1\n" + + "left outer join table13 t3\n" + + "on t4.id = t3.id and t3.id = 2\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id \n" + + "where t1.id > 1" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase3() throws Exception { + // https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior + // Case J1: Join Predicate on Preserved Row Table createOuterJoinTestTable(); try { ResultSet res = executeString( "explain global select t1.id, t1.name, t2.id, t3.id\n" + "from table11 t1\n" + - "right outer join table12 t2 \n" + + "left outer join table12 t2 \n" + "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + - "right outer join table13 t3\n" + + "left outer join table13 t3\n" + "on t1.id = t3.id " ); + assertResultSet(res); - cleanupQuery(res); } finally { dropOuterJoinTestTable(); } } @Test - public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { - // outer -> outer -> inner + public final void testLeftOuterJoinPredicationCaseByCase4() throws Exception { + // https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior + // Case J2: Join Predicate on Null Supplying Table createOuterJoinTestTable(); try { ResultSet res = executeString( - "explain global select t1.id, t1.name, t2.id, t3.id, t4.id\n" + + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id and t2.id > 1 \n" + + "left outer join table13 t3\n" + + "on t1.id = t3.id" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase5() throws Exception { + // https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior + // Case W1: Where Predicate on Preserved Row Table + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + "from table11 t1\n" + "left outer join table12 t2\n" + "on t1.id = t2.id\n" + "left outer join table13 t3\n" + - "on t2.id = t3.id\n" + + "on t1.id = t3.id\n" + + "where t1.name > 'table11-1'" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterJoinPredicationCaseByCase6() throws Exception { + // https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior + // Case W2: Where Predicate on Null Supplying Table + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "left outer join table13 t3\n" + + "on t1.id = t3.id\n" + + "where t3.id > 2" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testLeftOuterWithEmptyTable() throws Exception { + // https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior + // Case W2: Where Predicate on Null Supplying Table + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id\n" + + "from table11 t1\n" + + "left outer join table15 t2\n" + + "on t1.id = t2.id" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testRightOuterJoinPredicationCaseByCase1() throws Exception { + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "right outer join table12 t2\n" + + "on t1.id = t2.id\n" + + "right outer join table13 t3\n" + + "on t1.id = t3.id and t2.id = t3.id" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testRightOuterJoinPredicationCaseByCase2() throws Exception { + // inner -> right + // Notice: Join order should be preserved with origin order. + // JoinEdge: t1 -> t4, t3 -> t1,t4 + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t3.id, t4.id\n" + + "from table11 t1\n" + "inner join table14 t4\n" + - "on t2.id = t4.id" + "on t1.id = t4.id and t4.id > 1\n" + + "right outer join table13 t3\n" + + "on t4.id = t3.id and t3.id = 2\n" + + "where t3.id > 1" ); assertResultSet(res); - cleanupQuery(res); } finally { dropOuterJoinTestTable(); } } + + @Test + public final void testRightOuterJoinPredicationCaseByCase3() throws Exception { + createOuterJoinTestTable(); + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t2.id, t3.id\n" + + "from table11 t1\n" + + "right outer join table12 t2 \n" + + "on t1.id = t2.id and (concat(t1.name, cast(t2.id as TEXT)) = 'table11-11' or concat(t1.name, cast(t2.id as TEXT)) = 'table11-33')\n" + + "right outer join table13 t3\n" + + "on t1.id = t3.id " + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public final void testFullOuterJoinPredicationCaseByCase1() throws Exception { + createOuterJoinTestTable(); + + try { + ResultSet res = executeString( + "explain global select t1.id, t1.name, t3.id, t4.id\n" + + "from table11 t1\n" + + "full outer join table13 t3\n" + + "on t1.id = t3.id\n" + + "full outer join table14 t4\n" + + "on t3.id = t4.id \n" + + "order by t4.id" + ); + + assertResultSet(res); + } finally { + dropOuterJoinTestTable(); + } + } + + @Test + public void testComplexJoinCondition1() throws Exception { + // select n1.n_nationkey, n1.n_name, n2.n_name from nation n1 join nation n2 on n1.n_name = upper(n2.n_name); + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition2() throws Exception { + // select n1.n_nationkey, n1.n_name, upper(n2.n_name) name from nation n1 join nation n2 + // on n1.n_name = upper(n2.n_name); + + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition3() throws Exception { + // select n1.n_nationkey, n1.n_name, n2.n_name from nation n1 join nation n2 on lower(n1.n_name) = lower(n2.n_name); + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition4() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition5() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition6() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testComplexJoinCondition7() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public void testFullOuterJoinWithEmptyIntermediateData() throws Exception { + ResultSet res = executeString( + "explain global select a.l_orderkey \n" + + "from (select * from lineitem where l_orderkey < 0) a\n" + + "full outer join (select * from lineitem where l_orderkey < 0) b\n" + + "on a.l_orderkey = b.l_orderkey" + ); + + try { + assertResultSet(res); + } finally { + cleanupQuery(res); + } + } + + @Test + public final void testJoinFilterOfRowPreservedTable1() throws Exception { + // this test is for join filter of a row preserved table. + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } + + @Test + public final void testJoinWithOrPredicates() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java index 48aea26975..5b51167414 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java @@ -359,38 +359,38 @@ public final void testBroadcastBasicJoin() throws Exception { assertTrue(firstEB.getBroadcastTables().contains("default.part")); } - @Test - public final void testBroadcastTwoPartJoin() throws Exception { - ResultSet res = executeQuery(); - assertEquals(FetchResultSet.class, res.getClass()); - FetchResultSet resultSet = (FetchResultSet)res; - - assertResultSet(res); - cleanupQuery(res); - - MasterPlan plan = getQueryPlan(resultSet.getQueryId()); - ExecutionBlock rootEB = plan.getRoot(); - - /* - |-eb_1395996354406_0001_000010 - |-eb_1395996354406_0001_000009 - |-eb_1395996354406_0001_000008 - |-eb_1395996354406_0001_000005 - */ - assertEquals(1, plan.getChildCount(rootEB.getId())); - - ExecutionBlock firstJoinEB = plan.getChild(rootEB.getId(), 0); - assertNotNull(firstJoinEB); - assertEquals(NodeType.JOIN, firstJoinEB.getPlan().getType()); - assertEquals(0, firstJoinEB.getBroadcastTables().size()); - - ExecutionBlock leafEB1 = plan.getChild(firstJoinEB.getId(), 0); - assertTrue(leafEB1.getBroadcastTables().contains("default.orders")); - assertTrue(leafEB1.getBroadcastTables().contains("default.part")); - - ExecutionBlock leafEB2 = plan.getChild(firstJoinEB.getId(), 1); - assertTrue(leafEB2.getBroadcastTables().contains("default.nation")); - } +// @Test +// public final void testBroadcastTwoPartJoin() throws Exception { +// ResultSet res = executeQuery(); +// assertEquals(FetchResultSet.class, res.getClass()); +// FetchResultSet resultSet = (FetchResultSet)res; +// +// assertResultSet(res); +// cleanupQuery(res); +// +// MasterPlan plan = getQueryPlan(resultSet.getQueryId()); +// ExecutionBlock rootEB = plan.getRoot(); +// +// /* +// |-eb_1395996354406_0001_000010 +// |-eb_1395996354406_0001_000009 +// |-eb_1395996354406_0001_000008 +// |-eb_1395996354406_0001_000005 +// */ +// assertEquals(1, plan.getChildCount(rootEB.getId())); +// +// ExecutionBlock firstJoinEB = plan.getChild(rootEB.getId(), 0); +// assertNotNull(firstJoinEB); +// assertEquals(NodeType.JOIN, firstJoinEB.getPlan().getType()); +// assertEquals(0, firstJoinEB.getBroadcastTables().size()); +// +// ExecutionBlock leafEB1 = plan.getChild(firstJoinEB.getId(), 0); +// assertTrue(leafEB1.getBroadcastTables().contains("default.orders")); +// assertTrue(leafEB1.getBroadcastTables().contains("default.part")); +// +// ExecutionBlock leafEB2 = plan.getChild(firstJoinEB.getId(), 1); +// assertTrue(leafEB2.getBroadcastTables().contains("default.nation")); +// } @Test public final void testBroadcastSubquery() throws Exception { diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 64219d6d75..190d444ba2 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -186,7 +186,7 @@ public final void testWhereClauseJoin5() throws Exception { @Test public final void testWhereClauseJoin6() throws Exception { ResultSet res = executeQuery(); - System.out.println(resultSetToString(res)); + assertResultSet(res); cleanupQuery(res); } diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table1_ddl.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table1_ddl.sql new file mode 100644 index 0000000000..a37403cc59 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table1_ddl.sql @@ -0,0 +1,3 @@ +create external table table1 (id int, name text, score float, type text) using csv +with ('csvfile.delimiter'='|', 'csvfile.null'='NULL') location ${table.path}; + diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table2_ddl.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table2_ddl.sql new file mode 100644 index 0000000000..d60b14515d --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/oj_table2_ddl.sql @@ -0,0 +1,3 @@ +create external table table2 (id int, name text, score float, type text) using csv +with ('csvfile.delimiter'='|', 'csvfile.null'='NULL') location ${table.path}; + diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int4_ddl.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int4_ddl.sql new file mode 100644 index 0000000000..0d35ceece1 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int4_ddl.sql @@ -0,0 +1,3 @@ +create external table ${0} (id int, name text, score float, type text) using csv +with ('csvfile.delimiter'='|', 'csvfile.null'='NULL') location ${table.path}; + diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int8_ddl.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int8_ddl.sql new file mode 100644 index 0000000000..3a7a44aefa --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/table1_int8_ddl.sql @@ -0,0 +1,3 @@ +create external table ${0} (id bigint, name text, score float, type text) using csv +with ('csvfile.delimiter'='|', 'csvfile.null'='NULL') location ${table.path}; + diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition1.sql new file mode 100644 index 0000000000..bb90742266 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition1.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + n1.n_name, + n2.n_name +from nation n1 join nation n2 on n1.n_name = upper(n2.n_name) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition2.sql new file mode 100644 index 0000000000..e414e43330 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition2.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + n1.n_name, + upper(n2.n_name) as name +from nation n1 join nation n2 on n1.n_name = upper(n2.n_name) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition3.sql new file mode 100644 index 0000000000..de058ef8e6 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition3.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + n1.n_name, + n2.n_name +from nation n1 join nation n2 on lower(n1.n_name) = lower(n2.n_name) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition4.sql new file mode 100644 index 0000000000..f9a050b601 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition4.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + substr(n1.n_name, 1, 4) name1, + substr(n2.n_name, 1, 4) name2 +from nation n1 join nation n2 on substr(n1.n_name, 1, 4) = substr(n2.n_name, 1, 4) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition5.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition5.sql new file mode 100644 index 0000000000..0242cc0c41 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition5.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + substr(n1.n_name, 1, 4) name1, + substr(n2.n_name, 1, 4) name2 +from nation n1 join (select * from nation) n2 on substr(n1.n_name, 1, 4) = substr(n2.n_name, 1, 4) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition6.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition6.sql new file mode 100644 index 0000000000..0899022f80 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition6.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + substr(n1.n_name, 1, 4) name1, + substr(n2.n_name, 1, 4) name2 +from nation n1 join (select * from nation union select * from nation) n2 on substr(n1.n_name, 1, 4) = substr(n2.n_name, 1, 4) +order by n1.n_nationkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition7.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition7.sql new file mode 100644 index 0000000000..9350b12553 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinCondition7.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + n1.n_name, + n2.n_name +from nation n1 join (select * from nation union select * from nation) n2 on substr(n1.n_name, 1, 4) = substr(n2.n_name, 1, 4) +order by n1.n_nationkey,n2.n_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.sql new file mode 100644 index 0000000000..0d19b19426 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.sql @@ -0,0 +1,11 @@ +explain global select + r_name, + case when + s_name is null then 'N/O' + else + s_name + end as s1 +from + region inner join nation on n_regionkey = r_regionkey + left outer join supplier on s_nationkey = n_nationkey +order by r_name, s1; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.sql new file mode 100644 index 0000000000..138f509cdb --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.sql @@ -0,0 +1,9 @@ +explain global select + r_name, + case when s_name is null then 'N/O' + else s_name end as s1 +from region inner join ( + select * from nation + left outer join supplier on s_nationkey = n_nationkey +) t on n_regionkey = r_regionkey +order by r_name, s1; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoin.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoin.sql new file mode 100644 index 0000000000..2228c53f1b --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoin.sql @@ -0,0 +1 @@ +explain global select n_name, r_name, n_regionkey, r_regionkey from nation, region order by n_name, r_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.sql new file mode 100644 index 0000000000..60929b2302 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.sql @@ -0,0 +1 @@ +explain global select region.*, customer.* from region, customer order by r_regionkey,r_name,c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.sql new file mode 100644 index 0000000000..70163340fa --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.sql @@ -0,0 +1 @@ +explain global select region.*, customer.* from customer, region order by r_regionkey,r_name,c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.sql new file mode 100644 index 0000000000..f8b50786a6 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.sql @@ -0,0 +1 @@ +explain global select * from customer, region order by c_custkey,c_name,r_regionkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.sql new file mode 100644 index 0000000000..5aeb11f4cd --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.sql @@ -0,0 +1 @@ +explain global select length(r_comment) as len, *, c_custkey*10 from customer, region order by len,r_regionkey,r_name,c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.sql new file mode 100644 index 0000000000..403cf5a7c0 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + empty_orders.o_orderkey +from + customer, empty_orders +where c_custkey = o_orderkey +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.sql new file mode 100644 index 0000000000..cf4158b691 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.sql @@ -0,0 +1,3 @@ +explain global select a.r_name as a_name, b.r_name as b_name from region a, region b +where a_name < b_name +order by a_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testDifferentTypesJoinCondition.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testDifferentTypesJoinCondition.sql new file mode 100644 index 0000000000..fab90eeeef --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testDifferentTypesJoinCondition.sql @@ -0,0 +1 @@ +explain global select * from table20 t3 join table21 t4 on t3.id = t4.id; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoin1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoin1.sql new file mode 100644 index 0000000000..a32c8b7afa --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoin1.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + orders.o_orderkey +from + orders full outer join customer on c_custkey = o_orderkey +order by + c_custkey, + orders.o_orderkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.sql new file mode 100644 index 0000000000..14468e0fed --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + empty_orders.o_orderkey +from + empty_orders full outer join customer on c_custkey = o_orderkey +order by + c_custkey, + empty_orders.o_orderkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.sql new file mode 100644 index 0000000000..71b7c2bfca --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.sql @@ -0,0 +1,18 @@ +explain global select + r_regionkey, + n_regionkey, + case + when r_regionkey = 1 then 'one' + when r_regionkey = 2 then 'two' + when r_regionkey = 3 then 'three' + when r_regionkey = 4 then 'four' + else 'zero' + end as cond +from + region, + nation +where + r_regionkey = n_regionkey +order by + r_regionkey, + n_regionkey \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.sql new file mode 100644 index 0000000000..403cf5a7c0 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + empty_orders.o_orderkey +from + customer, empty_orders +where c_custkey = o_orderkey +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.sql new file mode 100644 index 0000000000..1b69f9f217 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.sql @@ -0,0 +1,3 @@ +explain global select a.r_regionkey, a.r_name, b.r_name from region a join region b +on a.r_regionkey = b.r_regionkey +where a.r_name <= b.r_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinAsterisk.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinAsterisk.sql new file mode 100644 index 0000000000..9234859104 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinAsterisk.sql @@ -0,0 +1,3 @@ +explain global select * +from nation b +join customer a on b.n_nationkey = a.c_nationkey diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvals1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvals1.sql new file mode 100644 index 0000000000..00f4bde8c6 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvals1.sql @@ -0,0 +1,11 @@ +explain global select + r_regionkey, + n_regionkey, + (r_regionkey + n_regionkey) as plus +from + region, + nation +where + r_regionkey = n_regionkey +order by + r_regionkey, n_regionkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsFilterPushdown.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsFilterPushdown.sql new file mode 100644 index 0000000000..ae11773bd1 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsFilterPushdown.sql @@ -0,0 +1,13 @@ +explain global select * from ( +select + r_regionkey, + n_regionkey, + (r_regionkey + n_regionkey) as plus +from + region, + nation +where + r_regionkey = n_regionkey +order by + r_regionkey, n_regionkey +) where plus > 10 \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.sql new file mode 100644 index 0000000000..8146f5c916 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.sql @@ -0,0 +1,14 @@ +explain global select + n_regionkey + n_nationkey as v1, + n_regionkey, + r_regionkey, + (r_regionkey + n_regionkey) as plus1, + (r_regionkey + n_regionkey) as plus2, + ((r_regionkey + n_regionkey) / 2) as result +from + region, + nation +where + r_regionkey = n_regionkey and r_regionkey > 0 +order by + n_regionkey + n_nationkey, n_regionkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.sql new file mode 100644 index 0000000000..0f1ad19f20 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.sql @@ -0,0 +1,22 @@ +explain global select + n_regionkey + n_nationkey as v1, + n_regionkey, + r_regionkey, + (r_regionkey + n_regionkey) as plus1, + (r_regionkey + n_regionkey) as plus2, + ((r_regionkey + n_regionkey) / 2) as result, + sum(r_regionkey + n_regionkey) as total +from + region, + nation +where + r_regionkey = n_regionkey and r_regionkey > 0 +group by + n_regionkey + n_nationkey, + n_regionkey, + r_regionkey, + (r_regionkey + n_regionkey), + ((r_regionkey + n_regionkey) / 2) + +order by + n_regionkey + n_nationkey, n_regionkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.sql new file mode 100644 index 0000000000..86aa0e320f --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.sql @@ -0,0 +1,8 @@ +explain global select + r_name, + r_regionkey, + n_name, + n_regionkey +from + region left outer join nation on n_regionkey = r_regionkey and r_name in ('AMERICA', 'ASIA') +order by r_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinOnMultipleDatabases.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinOnMultipleDatabases.sql new file mode 100644 index 0000000000..55fa7e253f --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinOnMultipleDatabases.sql @@ -0,0 +1,25 @@ +explain global select + s_acctbal, + s_name, + n_name, + JOINS.part_.p_partkey, + p_mfgr, + JOINS.supplier_.s_address, + JOINS.supplier_.s_phone, + s_comment +from + JOINS.part_, + JOINS.supplier_, + partsupp, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey +order by + s_acctbal, + s_name, + n_name, + p_partkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.sql new file mode 100644 index 0000000000..9b0e7c9a55 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.sql @@ -0,0 +1,8 @@ +explain global select t.n_nationkey, t.name, t.n_regionkey, t.n_comment +from ( + select n_nationkey, n_name as name, n_regionkey, n_comment + from nation n + join region r on (n.n_regionkey = r.r_regionkey) +) t +join supplier s on (s.s_nationkey = t.n_nationkey) +where t.name = 'MOROCCO'; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.sql new file mode 100644 index 0000000000..6218a86db7 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.sql @@ -0,0 +1,9 @@ +explain global select t.n_nationkey, t.n_name, t.n_regionkey, t.n_comment, ps.ps_availqty, s.s_suppkey +from ( + select n_nationkey, n_name, n_regionkey, n_comment + from nation n + join region r on (n.n_regionkey = r.r_regionkey) +) t +join supplier s on (s.s_nationkey = t.n_nationkey) +join partsupp ps on (s.s_suppkey = ps.ps_suppkey) +where t.n_name in ('ARGENTINA','ETHIOPIA', 'MOROCCO'); diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithOrPredicates.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithOrPredicates.sql new file mode 100644 index 0000000000..088168cab9 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testJoinWithOrPredicates.sql @@ -0,0 +1,6 @@ +explain global select + n1.n_nationkey, + n1.n_name, + n2.n_name +from nation n1, nation n2 where n1.n_name = n2.n_name and (n1.n_nationkey in (1, 2) or n2.n_nationkey in (2)) +order by n1.n_nationkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoin1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoin1.sql new file mode 100644 index 0000000000..a4076c768a --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoin1.sql @@ -0,0 +1,9 @@ +explain global select + c_custkey, + orders.o_orderkey, + orders.o_orderstatus, + orders.o_orderdate +from + customer left outer join orders on c_custkey = o_orderkey +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.sql new file mode 100644 index 0000000000..9d58b24641 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.sql @@ -0,0 +1,9 @@ +explain global select + c_custkey, + orders.o_orderkey, + 'val' as val +from + customer left outer join orders on c_custkey = o_orderkey +order by + c_custkey, + o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.sql new file mode 100644 index 0000000000..dab1d9eaff --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.sql @@ -0,0 +1,9 @@ +explain global select + c_custkey, + o.o_orderkey, + 'val' as val +from + customer left outer join (select * from orders) o on c_custkey = o.o_orderkey +order by + c_custkey, + o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.sql new file mode 100644 index 0000000000..7571e59b85 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.sql @@ -0,0 +1,17 @@ +explain global select + a.c_custkey, + 123::INT8 as const_val, + b.min_name +from + customer a +left outer join ( + select + c_custkey, + min(c_name) as min_name + from customer + group by + c_custkey) + b +on a.c_custkey = b.c_custkey +order by + a.c_custkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.sql new file mode 100644 index 0000000000..b00daf30f1 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.sql @@ -0,0 +1,6 @@ +explain global SELECT + l.l_orderkey, + o.o_orderkey, + '201405' as key1, + '5-LOW' as key2 +from lineitem l left outer join orders o on l.l_orderkey = o.o_orderkey and o_orderpriority = '5-LOW'; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.sql new file mode 100644 index 0000000000..00ff6f02c3 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.sql @@ -0,0 +1,9 @@ +explain global SELECT + l.l_orderkey, + o.o_orderkey, + '201405' as key1, + '5-LOW' as key2 +from + lineitem l left outer join orders o on l.l_orderkey = o.o_orderkey +WHERE + o_orderpriority = '5-LOW' diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.sql new file mode 100644 index 0000000000..8f21761434 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.sql @@ -0,0 +1,9 @@ +explain global select + c_custkey, + empty_orders.o_orderkey, + empty_orders.o_orderstatus, + empty_orders.o_orderdate +from + customer left outer join empty_orders on c_custkey = o_orderkey +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.sql new file mode 100644 index 0000000000..292115dd2b --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.sql @@ -0,0 +1,9 @@ +explain global select + c_custkey, + sum(empty_orders.o_orderkey), + max(empty_orders.o_orderstatus), + max(empty_orders.o_orderdate) +from + customer left outer join empty_orders on c_custkey = o_orderkey + group by c_custkey +order by c_custkey ; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.sql new file mode 100644 index 0000000000..d28c4acc1c --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.sql @@ -0,0 +1,14 @@ +explain global select count(*) +from ( + select + c_custkey, + sum(empty_orders.o_orderkey) as total1, + max(empty_orders.o_orderstatus) as total2, + max(empty_orders.o_orderdate) as total3 + from + customer left outer join empty_orders on c_custkey = o_orderkey + group by c_custkey +) t1 +group by + c_custkey +order by c_custkey ; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.sql new file mode 100644 index 0000000000..1ffe1a3023 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.sql @@ -0,0 +1,17 @@ +explain global + select + max(c_custkey), + sum(orders.o_orderkey), + max(orders.o_orderstatus), + max(orders.o_orderdate) + from + customer left outer join orders on c_custkey = o_orderkey + union + select + max(c_custkey), + sum(empty_orders.o_orderkey), + max(empty_orders.o_orderstatus), + max(empty_orders.o_orderdate) + from + customer left outer join empty_orders on c_custkey = o_orderkey +; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.sql new file mode 100644 index 0000000000..d81e3351b6 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.sql @@ -0,0 +1,11 @@ +explain global select + l_linenumber, + sum(empty_orders.o_orderkey), + max(empty_orders.o_orderstatus), + max(empty_orders.o_orderdate), + avg(l_quantity), + sum(l_quantity) +from + lineitem left outer join empty_orders on l_orderkey = o_orderkey + group by l_linenumber +order by l_linenumber ; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.sql new file mode 100644 index 0000000000..1f5eacbe52 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.sql @@ -0,0 +1,10 @@ +explain global select + c_custkey, + orders.o_orderkey, + coalesce(orders.o_orderstatus, 'N/A'), + orders.o_orderdate +from + customer left outer join orders on c_custkey = o_orderkey +where o_orderkey is null +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.sql new file mode 100644 index 0000000000..2bc4f270c1 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.sql @@ -0,0 +1,11 @@ +explain global select + c_custkey, + orders.o_orderkey, + coalesce(orders.o_orderstatus, 'N/A'), + orders.o_orderdate +from + customer left outer join orders on c_custkey = o_orderkey +where orders.o_orderdate is not null +and orders.o_orderdate like '1996%' +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.sql new file mode 100644 index 0000000000..065b4eb02d --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.sql @@ -0,0 +1,10 @@ +explain global select + c_custkey, + orders.o_orderkey, + coalesce(orders.o_orderstatus, 'N/A'), + orders.o_orderdate +from + customer left outer join orders on c_custkey = o_orderkey +where orders.o_orderkey = 100 +order by + c_custkey, o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.sql new file mode 100644 index 0000000000..faf239c657 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.sql @@ -0,0 +1,3 @@ +explain global select * from region a left outer join customer b +on a.r_regionkey = b.c_custkey +where a.r_name < b.c_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.sql new file mode 100644 index 0000000000..acfeb6eb6d --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.sql @@ -0,0 +1,12 @@ +explain global select + a.id, + a.name, + b.id as id2, + b.name as name2, + case when b.name is null then '9991231' else b.name end as c1, + case when c.name is null then '9991231' else c.name end as c2 +from + table1 a left outer join table2 b on a.id = b.id left outer join table1 c on b.id = c.id +order by + a.id, + a.name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoin1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoin1.sql new file mode 100644 index 0000000000..e68504b0ff --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoin1.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + orders.o_orderkey +from + orders right outer join customer on c_custkey = o_orderkey +order by + c_custkey, + orders.o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.sql new file mode 100644 index 0000000000..2c87309001 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.sql @@ -0,0 +1,8 @@ +explain global select + c_custkey, + empty_orders.o_orderkey +from + empty_orders right outer join customer on c_custkey = o_orderkey +order by + c_custkey, + empty_orders.o_orderkey; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.sql new file mode 100644 index 0000000000..f11e5b1077 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.sql @@ -0,0 +1,3 @@ +explain global select * from region a right outer join customer b +on a.r_regionkey = b.c_custkey +where a.r_name < b.c_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTPCHQ2Join.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTPCHQ2Join.sql new file mode 100644 index 0000000000..829e8e938f --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTPCHQ2Join.sql @@ -0,0 +1,25 @@ +explain global select + s_acctbal, + s_name, + n_name, + p_partkey, + p_mfgr, + s_address, + s_phone, + s_comment +from + part, + supplier, + partsupp, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey +order by + s_acctbal, + s_name, + n_name, + p_partkey; diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql index cb7109b988..583f787c5c 100644 --- a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testTwoPartJoin.sql @@ -1,4 +1,4 @@ -explain global select +explain global explain global select l_orderkey, p_name, n_name diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin1.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin1.sql new file mode 100644 index 0000000000..4ae0e7ee43 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin1.sql @@ -0,0 +1,11 @@ +explain global select + n_name, + r_name, + n_regionkey, + r_regionkey +from + nation, + region +where + n_regionkey = r_regionkey +order by n_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin2.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin2.sql new file mode 100644 index 0000000000..059d5be605 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin2.sql @@ -0,0 +1,9 @@ +explain global select + n_name, + r_name +from + nation, + region +where + n_regionkey = r_regionkey +order by n_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin3.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin3.sql new file mode 100644 index 0000000000..9e4faa3353 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin3.sql @@ -0,0 +1,10 @@ +explain global select + n_name, + r_name, + n_nationkey + 1 as p1, + r_regionkey + 1 as p2 +from + nation, region +where + n_regionkey = r_regionkey +order by n_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin4.sql b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin4.sql new file mode 100644 index 0000000000..6a7bbeb957 --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinOrderOptimize/testWhereClauseJoin4.sql @@ -0,0 +1,9 @@ +explain global select + n_name, + r_name, + n_nationkey + r_regionkey +from + nation, region +where + n_regionkey = r_regionkey +order by n_name; \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition1.result new file mode 100644 index 0000000000..1108697a6f --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) + +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(6)(INNER) + => Join Cond: default.n1.n_name (TEXT) = ?upper_1 (TEXT) + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition2.result new file mode 100644 index 0000000000..718fffa71d --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition2.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) + +SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(6)(INNER) + => Join Cond: default.n1.n_name (TEXT) = name (TEXT) + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} + => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) name (TEXT)} + => in schema: {(1) name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} + => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition3.result new file mode 100644 index 0000000000..3ed64577a3 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition3.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 + => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) + +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(6)(INNER) + => Join Cond: ?lower_1 (TEXT) = ?lower_2 (TEXT) + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition4.result new file mode 100644 index 0000000000..01a98f853d --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition4.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) + +SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(6)(INNER) + => Join Cond: name1 (TEXT) = name2 (TEXT) + => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition5.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition5.result new file mode 100644 index 0000000000..bd75d977a7 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition5.result @@ -0,0 +1,96 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) + +TABLE_SUBQUERY(3) as default.n2 + => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + PROJECTION(2) + => Targets: default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(12) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(8)(INNER) + => Join Cond: name1 (TEXT) = name2 (TEXT) + => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(5) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition6.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition6.result new file mode 100644 index 0000000000..3b4d4d8b68 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition6.result @@ -0,0 +1,111 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) + +TABLE_SUBQUERY(13) as default.n2 + => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) + +TABLE_SUBQUERY(14) as default.n2 + => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(18) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + JOIN(11)(INNER) + => Join Cond: name1 (TEXT) = name2 (TEXT) + => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(17) on eb_0000000000000_0000_000004 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.n2.name2 (TEXT)} + => in schema: {(1) default.n2.name2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(8) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition7.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition7.result new file mode 100644 index 0000000000..ab3655ff0c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinCondition7.result @@ -0,0 +1,111 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) + +TABLE_SUBQUERY(13) as default.n2 + => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 + => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) + +TABLE_SUBQUERY(14) as default.n2 + => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 + => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) + +SORT(18) + => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) + JOIN(11)(INNER) + => Join Cond: ?substr_1 (TEXT) = ?substr_2 (TEXT) + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(17) on eb_0000000000000_0000_000004 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(8) + => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.result new file mode 100644 index 0000000000..42ffc6719c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen.result @@ -0,0 +1,127 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +SCAN(3) on default.supplier + => target list: default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(2) default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_regionkey (INT4), default.supplier.s_name (TEXT) + => out schema: {(2) default.nation.n_regionkey (INT4), default.supplier.s_name (TEXT)} + => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(2) default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(2) default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) + +SORT(15) + => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) + JOIN(9)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: CASE WHEN default.supplier.s_name (TEXT) IS NULL THEN N/O ELSE default.supplier.s_name (TEXT) END as s1, default.region.r_name (TEXT) + => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + => in schema: {(4) default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.supplier.s_name (TEXT)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_regionkey (INT4), default.supplier.s_name (TEXT)} + => in schema: {(2) default.nation.n_regionkey (INT4), default.supplier.s_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000005 + +SORT(5) + => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) + SCAN(16) on eb_0000000000000_0000_000005 + => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + => in schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.result new file mode 100644 index 0000000000..35b730d3f8 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testComplexJoinsWithCaseWhen2.result @@ -0,0 +1,135 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +SCAN(2) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) + +TABLE_SUBQUERY(5) as default.t + => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) + => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + => in schema: {(11) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.s_acctbal (FLOAT8), default.t.s_address (TEXT), default.t.s_comment (TEXT), default.t.s_name (TEXT), default.t.s_nationkey (INT4), default.t.s_phone (TEXT), default.t.s_suppkey (INT4)} + PROJECTION(4) + => Targets: default.nation.n_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_comment (TEXT), default.supplier.s_suppkey (INT4), default.supplier.s_name (TEXT), default.supplier.s_address (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_comment (TEXT) + => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(10)(LEFT_OUTER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) + +SORT(17) + => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) + JOIN(11)(INNER) + => Join Cond: default.t.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.region.r_name (TEXT), s1 (TEXT) + => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000005 + +SORT(7) + => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) + SCAN(18) on eb_0000000000000_0000_000005 + => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + => in schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoin.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoin.result new file mode 100644 index 0000000000..a17843c9a7 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoin.result @@ -0,0 +1,87 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.region.r_name (TEXT), num=32) + +SORT(10) + => Sort Keys: default.nation.n_name (TEXT) (asc),default.region.r_name (TEXT) (asc) + JOIN(6)(CROSS) + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.region.r_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(2) + => Sort Keys: default.nation.n_name (TEXT) (asc),default.region.r_name (TEXT) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.result new file mode 100644 index 0000000000..d1145b0461 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk1.result @@ -0,0 +1,87 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + JOIN(6)(CROSS) + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(2) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.result new file mode 100644 index 0000000000..f64b2a8e6a --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk2.result @@ -0,0 +1,87 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + JOIN(6)(CROSS) + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(2) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.result new file mode 100644 index 0000000000..4480cc9034 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk3.result @@ -0,0 +1,87 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.customer.c_name (TEXT), default.region.r_regionkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.customer.c_name (TEXT) (asc),default.region.r_regionkey (INT4) (asc) + JOIN(6)(CROSS) + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.customer.c_name (TEXT), default.region.r_regionkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(2) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.customer.c_name (TEXT) (asc),default.region.r_regionkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.result new file mode 100644 index 0000000000..54bf3bcef8 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithAsterisk4.result @@ -0,0 +1,87 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4), num=32) + +SORT(10) + => Sort Keys: len (INT4) (asc),default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + JOIN(6)(CROSS) + => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) + => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(2) + => Sort Keys: len (INT4) (asc),default.region.r_regionkey (INT4) (asc),default.region.r_name (TEXT) (asc),default.customer.c_custkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.result new file mode 100644 index 0000000000..baa194570c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithEmptyTable1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + JOIN(7)(INNER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.result new file mode 100644 index 0000000000..146c7ccef3 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testCrossJoinWithThetaJoinConditionInWhere.result @@ -0,0 +1,93 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) + +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=a_name (TEXT), num=32) + +SORT(11) + => Sort Keys: a_name (TEXT) (asc) + SELECTION(2) + => Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT) + JOIN(7)(CROSS) + => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) + => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=a_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +PROJECTION(4) + => Targets: a_name (TEXT), b_name (TEXT) + => out schema: {(2) a_name (TEXT), b_name (TEXT)} + => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} + SORT(3) + => Sort Keys: a_name (TEXT) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testDifferentTypesJoinCondition.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testDifferentTypesJoinCondition.result new file mode 100644 index 0000000000..d5b7510b4c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testDifferentTypesJoinCondition.result @@ -0,0 +1,7 @@ +id,name,score,type,id,name,score,type +------------------------------- +1,ooo,1.1,a,1,ooo,1.1,a +2,ppp,2.3,b,2,ppp,2.3,b +3,qqq,3.4,c,3,qqq,3.4,c +4,rrr,4.5,d,4,rrr,4.5,d +5,xxx,5.6,e,5,xxx,5.6,e \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoin1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoin1.result new file mode 100644 index 0000000000..340575a2e1 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoin1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + JOIN(6)(FULL_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(1) default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinPredicationCaseByCase1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinPredicationCaseByCase1.result new file mode 100644 index 0000000000..bb66d2301e --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinPredicationCaseByCase1.result @@ -0,0 +1,127 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(1) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(8)(FULL_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +SCAN(3) on default.table14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) + +SORT(15) + => Sort Keys: default.t4.id (INT4) (asc) + JOIN(9)(FULL_OUTER) + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000005 + +SORT(5) + => Sort Keys: default.t4.id (INT4) (asc) + SCAN(16) on eb_0000000000000_0000_000005 + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyIntermediateData.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyIntermediateData.result new file mode 100644 index 0000000000..d3cfbfd2f1 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyIntermediateData.result @@ -0,0 +1,83 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) + +TABLE_SUBQUERY(3) as default.a + => Targets: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + PROJECTION(2) + => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(0) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + +TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + PROJECTION(6) + => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(4) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + +JOIN(11)(FULL_OUTER) + => Join Cond: default.a.l_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(1) default.b.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(1) default.a.l_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.result new file mode 100644 index 0000000000..02515c8709 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testFullOuterJoinWithEmptyTable1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + JOIN(6)(FULL_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.result new file mode 100644 index 0000000000..5436938f1b --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinAndCaseWhen.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + JOIN(7)(INNER) + => Join Cond: default.region.r_regionkey (INT4) = default.nation.n_regionkey (INT4) + => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) + => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.result new file mode 100644 index 0000000000..baa194570c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithEmptyTable.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + JOIN(7)(INNER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.result new file mode 100644 index 0000000000..4cd37046ec --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testInnerJoinWithThetaJoinConditionInWhere.result @@ -0,0 +1,67 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) + +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) + +SELECTION(3) + => Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT) + JOIN(6)(INNER) + => Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4) + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) + => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} + => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinAsterisk.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinAsterisk.result new file mode 100644 index 0000000000..90274c60be --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinAsterisk.result @@ -0,0 +1,65 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) + +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) + +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) + +JOIN(5)(INNER) + => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000002 + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvals1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvals1.result new file mode 100644 index 0000000000..02c8f532b3 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvals1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + JOIN(7)(INNER) + => Join Cond: default.region.r_regionkey (INT4) = default.nation.n_regionkey (INT4) + => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus + => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.region.r_regionkey (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} + => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.result new file mode 100644 index 0000000000..9658f1bc3f --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs1.result @@ -0,0 +1,93 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) + +SORT(11) + => Sort Keys: v1 (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + JOIN(7)(INNER) + => Join Cond: default.region.r_regionkey (INT4) = default.nation.n_regionkey (INT4) + => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 + => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} + => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +PROJECTION(4) + => Targets: v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), plus1 (INT4) as plus2, result (INT4) + => out schema: {(6) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), plus2 (INT4), result (INT4), v1 (INT4)} + => in schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} + SORT(3) + => Sort Keys: v1 (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} + => in schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.result new file mode 100644 index 0000000000..6feb723f2e --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinCoReferredEvalsWithSameExprs2.result @@ -0,0 +1,119 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) + +GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) + => exprs: (sum(?plus (INT4))) + => target list: v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4), result (INT4), ?sum_3 (INT8) + => out schema:{(6) v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4), result (INT4), ?sum_3 (INT8)} + => in schema:{(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} + JOIN(8)(INNER) + => Join Cond: default.region.r_regionkey (INT4) = default.nation.n_regionkey (INT4) + => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus + => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} + => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) + +SORT(14) + => Sort Keys: v1 (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + GROUP_BY(3)(v1,n_regionkey,r_regionkey,?plus,result) + => exprs: (sum(?sum_3 (INT8))) + => target list: v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4) as plus1, result (INT4), total (INT8) + => out schema:{(6) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), total (INT8), v1 (INT4)} + => in schema:{(6) v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4), result (INT4), ?sum_3 (INT8)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(6) v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4), result (INT4), ?sum_3 (INT8)} + => in schema: {(6) v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), ?plus (INT4), result (INT4), ?sum_3 (INT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000004 + +PROJECTION(5) + => Targets: v1 (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), plus1 (INT4) as plus2, result (INT4), total (INT8) + => out schema: {(7) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), plus2 (INT4), result (INT4), total (INT8), v1 (INT4)} + => in schema: {(6) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), total (INT8), v1 (INT4)} + SORT(4) + => Sort Keys: v1 (INT4) (asc),default.nation.n_regionkey (INT4) (asc) + SCAN(15) on eb_0000000000000_0000_000004 + => out schema: {(6) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), total (INT8), v1 (INT4)} + => in schema: {(6) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), total (INT8), v1 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.result new file mode 100644 index 0000000000..98d7cd6b13 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinFilterOfRowPreservedTable1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), num=32) + +SORT(10) + => Sort Keys: default.region.r_name (TEXT) (asc) + JOIN(6)(LEFT_OUTER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) AND default.region.r_name (TEXT) IN (AMERICA, ASIA) + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.region.r_name (TEXT) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result new file mode 100644 index 0000000000..9178c7ee58 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result @@ -0,0 +1,205 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +10: eb_0000000000000_0000_000010 +11: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(4) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +SORT(26) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.result new file mode 100644 index 0000000000..dfb4e94232 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual2.result @@ -0,0 +1,113 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) = MOROCCO + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(4) as default.t + => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) + => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + PROJECTION(3) + => Targets: default.n.n_nationkey (INT4), name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + JOIN(10)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(14) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) + => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(1) default.s.s_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.result new file mode 100644 index 0000000000..096fe6f308 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual3.result @@ -0,0 +1,152 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) + +TABLE_SUBQUERY(4) as default.t + => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + PROJECTION(3) + => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(12)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000005 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) + => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000006 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result index c5f46f5de8..58096a3211 100644 --- a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithMultipleJoinQual4.result @@ -63,10 +63,10 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} PROJECTION(3) => Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT) - => out schema: {(4) default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)} + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} JOIN(12)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithOrPredicates.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithOrPredicates.result new file mode 100644 index 0000000000..49848c27c2 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinWithOrPredicates.result @@ -0,0 +1,94 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) + +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SELECTION(2) + => Search Cond: default.n1.n_nationkey (INT4) IN (1, 2) OR default.n2.n_nationkey (INT4) IN (2) + JOIN(7)(INNER) + => Join Cond: default.n1.n_name (TEXT) = default.n2.n_name (TEXT) + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +PROJECTION(4) + => Targets: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n2.n_name (TEXT) + => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + SORT(3) + => Sort Keys: default.n1.n_nationkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoin1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoin1.result new file mode 100644 index 0000000000..c008559c6a --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoin1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + JOIN(6)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result index 3d2efd4a01..15d5053f2c 100644 --- a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2.result @@ -8,16 +8,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 @@ -25,60 +25,60 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -SCAN(1) on default.table12 as t2 +SCAN(0) on default.table12 as t2 => target list: default.t2.id (INT4) => out schema: {(1) default.t2.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(3) on default.table13 as t3 +SCAN(1) on default.table13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(9)(LEFT_OUTER) => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) => target list: default.t2.id (INT4), default.t3.id (INT4) => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - SCAN(14) on eb_0000000000000_0000_000003 + SCAN(14) on eb_0000000000000_0000_000002 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 + SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.t2.id (INT4)} => in schema: {(1) default.t2.id (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(0) on default.table11 as t1 +SCAN(3) on default.table11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} @@ -88,23 +88,23 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(10)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => Join Cond: default.t3.id (INT4) = default.t1.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2_1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2_1.result new file mode 100644 index 0000000000..44c9bf376c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase2_1.result @@ -0,0 +1,146 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +SCAN(1) on default.table14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => filter: default.t3.id (INT4) = 2 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +JOIN(10)(LEFT_OUTER) + => Join Cond: default.t4.id (INT4) = default.t3.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.t1.id (INT4) = default.t4.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(17) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(16) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(5) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(12)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(5) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(19) on eb_0000000000000_0000_000006 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(18) on eb_0000000000000_0000_000005 + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase3.result new file mode 100644 index 0000000000..7f6276655e --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase3.result @@ -0,0 +1,104 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(7)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) AND concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-11 OR concat(default.t1.name (TEXT),CAST (default.t2.id (INT4) AS TEXT)) = table11-33 + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase4.result new file mode 100644 index 0000000000..904dc4578f --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase4.result @@ -0,0 +1,105 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => filter: default.t2.id (INT4) > 1 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(7)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase5.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase5.result new file mode 100644 index 0000000000..ca6406eb35 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase5.result @@ -0,0 +1,105 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => filter: default.t1.name (TEXT) > table11-1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase6.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase6.result new file mode 100644 index 0000000000..f042cd53bd --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinPredicationCaseByCase6.result @@ -0,0 +1,106 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SELECTION(5) + => Search Cond: default.t3.id (INT4) > 2 + JOIN(9)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.result new file mode 100644 index 0000000000..fddce8f32b --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr1.result @@ -0,0 +1,92 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + JOIN(6)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(1) default.orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +PROJECTION(4) + => Targets: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), val as val + => out schema: {(3) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), val (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.result new file mode 100644 index 0000000000..c28b929687 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr2.result @@ -0,0 +1,100 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +TABLE_SUBQUERY(3) as default.o + => Targets: default.o.o_orderkey (INT4) + => out schema: {(1) default.o.o_orderkey (INT4)} + => in schema: {(9) default.o.o_clerk (TEXT), default.o.o_comment (TEXT), default.o.o_custkey (INT4), default.o.o_orderdate (TEXT), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT), default.o.o_orderstatus (TEXT), default.o.o_shippriority (INT4), default.o.o_totalprice (FLOAT8)} + PROJECTION(2) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderstatus (TEXT), default.orders.o_totalprice (FLOAT8), default.orders.o_orderdate (TEXT), default.orders.o_orderpriority (TEXT), default.orders.o_clerk (TEXT), default.orders.o_shippriority (INT4), default.orders.o_comment (TEXT) + => out schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8) + => out schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), num=32) + +SORT(12) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.o.o_orderkey (INT4) (asc) + JOIN(8)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.o.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.o.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.o.o_orderkey (INT4)} + => in schema: {(1) default.o.o_orderkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +PROJECTION(6) + => Targets: default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), val as val + => out schema: {(3) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), val (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4)} + SORT(5) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.o.o_orderkey (INT4) (asc) + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.o.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.result new file mode 100644 index 0000000000..be17eb9e56 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr3.result @@ -0,0 +1,126 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +GROUP_BY(11)(c_custkey) + => exprs: (min(default.customer.c_name (TEXT))) + => target list: default.customer.c_custkey (INT4), ?min_2 (TEXT) + => out schema:{(2) default.customer.c_custkey (INT4), ?min_2 (TEXT)} + => in schema:{(2) default.customer.c_custkey (INT4), default.customer.c_name (TEXT)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_name (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +TABLE_SUBQUERY(4) as default.b + => Targets: default.b.min_name (TEXT), default.b.c_custkey (INT4) + => out schema: {(2) default.b.min_name (TEXT), default.b.c_custkey (INT4)} + => in schema: {(2) default.b.c_custkey (INT4), default.b.min_name (TEXT)} + PROJECTION(3) + => Targets: default.customer.c_custkey (INT4), min_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), min_name (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), min_name (TEXT)} + GROUP_BY(2)(c_custkey) + => exprs: (min(?min_2 (TEXT))) + => target list: default.customer.c_custkey (INT4), min_name (TEXT) + => out schema:{(2) default.customer.c_custkey (INT4), min_name (TEXT)} + => in schema:{(2) default.customer.c_custkey (INT4), ?min_2 (TEXT)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(2) default.customer.c_custkey (INT4), ?min_2 (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), ?min_2 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4) + => out schema: {(1) default.a.c_custkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.a.c_custkey (INT4), num=32) + +SORT(15) + => Sort Keys: default.a.c_custkey (INT4) (asc) + JOIN(9)(LEFT_OUTER) + => Join Cond: default.a.c_custkey (INT4) = default.b.c_custkey (INT4) + => target list: default.a.c_custkey (INT4), default.b.min_name (TEXT) + => out schema: {(2) default.a.c_custkey (INT4), default.b.min_name (TEXT)} + => in schema: {(3) default.a.c_custkey (INT4), default.b.c_custkey (INT4), default.b.min_name (TEXT)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(2) default.b.min_name (TEXT), default.b.c_custkey (INT4)} + => in schema: {(2) default.b.min_name (TEXT), default.b.c_custkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.c_custkey (INT4)} + => in schema: {(1) default.a.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.a.c_custkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000004 + +PROJECTION(7) + => Targets: default.a.c_custkey (INT4), 123 as const_val, default.b.min_name (TEXT) + => out schema: {(3) const_val (INT8), default.a.c_custkey (INT4), default.b.min_name (TEXT)} + => in schema: {(2) default.a.c_custkey (INT4), default.b.min_name (TEXT)} + SORT(6) + => Sort Keys: default.a.c_custkey (INT4) (asc) + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(2) default.a.c_custkey (INT4), default.b.min_name (TEXT)} + => in schema: {(2) default.a.c_custkey (INT4), default.b.min_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.result new file mode 100644 index 0000000000..1eb9e4f6e6 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr4.result @@ -0,0 +1,70 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.l.l_orderkey (INT4), num=32) + +SCAN(0) on default.lineitem as l + => target list: default.l.l_orderkey (INT4) + => out schema: {(1) default.l.l_orderkey (INT4)} + => in schema: {(16) default.l.l_comment (TEXT), default.l.l_commitdate (TEXT), default.l.l_discount (FLOAT8), default.l.l_extendedprice (FLOAT8), default.l.l_linenumber (INT4), default.l.l_linestatus (TEXT), default.l.l_orderkey (INT4), default.l.l_partkey (INT4), default.l.l_quantity (FLOAT8), default.l.l_receiptdate (TEXT), default.l.l_returnflag (TEXT), default.l.l_shipdate (TEXT), default.l.l_shipinstruct (TEXT), default.l.l_shipmode (TEXT), default.l.l_suppkey (INT4), default.l.l_tax (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders as o + => filter: default.o.o_orderpriority (TEXT) = 5-LOW + => target list: default.o.o_orderkey (INT4) + => out schema: {(1) default.o.o_orderkey (INT4)} + => in schema: {(9) default.o.o_clerk (TEXT), default.o.o_comment (TEXT), default.o.o_custkey (INT4), default.o.o_orderdate (TEXT), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT), default.o.o_orderstatus (TEXT), default.o.o_shippriority (INT4), default.o.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.l.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +PROJECTION(3) + => Targets: default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), 201405 as key1, 5-LOW as key2 + => out schema: {(4) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), key1 (TEXT), key2 (TEXT)} + => in schema: {(2) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4)} + JOIN(5)(LEFT_OUTER) + => Join Cond: default.l.l_orderkey (INT4) = default.o.o_orderkey (INT4) + => target list: default.l.l_orderkey (INT4), default.o.o_orderkey (INT4) + => out schema: {(2) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4)} + => in schema: {(2) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000002 + => out schema: {(1) default.o.o_orderkey (INT4)} + => in schema: {(1) default.o.o_orderkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(1) default.l.l_orderkey (INT4)} + => in schema: {(1) default.l.l_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.result new file mode 100644 index 0000000000..9427cf96a9 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithConstantExpr5.result @@ -0,0 +1,71 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.l.l_orderkey (INT4), num=32) + +SCAN(0) on default.lineitem as l + => target list: default.l.l_orderkey (INT4) + => out schema: {(1) default.l.l_orderkey (INT4)} + => in schema: {(16) default.l.l_comment (TEXT), default.l.l_commitdate (TEXT), default.l.l_discount (FLOAT8), default.l.l_extendedprice (FLOAT8), default.l.l_linenumber (INT4), default.l.l_linestatus (TEXT), default.l.l_orderkey (INT4), default.l.l_partkey (INT4), default.l.l_quantity (FLOAT8), default.l.l_receiptdate (TEXT), default.l.l_returnflag (TEXT), default.l.l_shipdate (TEXT), default.l.l_shipinstruct (TEXT), default.l.l_shipmode (TEXT), default.l.l_suppkey (INT4), default.l.l_tax (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders as o + => target list: default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT) + => out schema: {(2) default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + => in schema: {(9) default.o.o_clerk (TEXT), default.o.o_comment (TEXT), default.o.o_custkey (INT4), default.o.o_orderdate (TEXT), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT), default.o.o_orderstatus (TEXT), default.o.o_shippriority (INT4), default.o.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.l.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.o.o_orderkey (INT4), num=32) + +PROJECTION(4) + => Targets: default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), 201405 as key1, 5-LOW as key2 + => out schema: {(4) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), key1 (TEXT), key2 (TEXT)} + => in schema: {(3) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + SELECTION(3) + => Search Cond: default.o.o_orderpriority (TEXT) = 5-LOW + JOIN(6)(LEFT_OUTER) + => Join Cond: default.l.l_orderkey (INT4) = default.o.o_orderkey (INT4) + => target list: default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT) + => out schema: {(3) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + => in schema: {(3) default.l.l_orderkey (INT4), default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(2) default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + => in schema: {(2) default.o.o_orderkey (INT4), default.o.o_orderpriority (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.l.l_orderkey (INT4)} + => in schema: {(1) default.l.l_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.result new file mode 100644 index 0000000000..29f07a5445 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + JOIN(6)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.result new file mode 100644 index 0000000000..f88efa03fb --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable2.result @@ -0,0 +1,114 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +GROUP_BY(11)(c_custkey) + => exprs: (sum(default.empty_orders.o_orderkey (INT4)),max(default.empty_orders.o_orderstatus (TEXT)),max(default.empty_orders.o_orderdate (TEXT))) + => target list: default.customer.c_custkey (INT4), ?sum_5 (INT8), ?max_6 (TEXT), ?max_7 (TEXT) + => out schema:{(4) default.customer.c_custkey (INT4), ?sum_5 (INT8), ?max_6 (TEXT), ?max_7 (TEXT)} + => in schema:{(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + JOIN(7)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SORT(13) + => Sort Keys: default.customer.c_custkey (INT4) (asc) + GROUP_BY(3)(c_custkey) + => exprs: (sum(?sum_5 (INT8)),max(?max_6 (TEXT)),max(?max_7 (TEXT))) + => target list: default.customer.c_custkey (INT4), ?sum (INT8), ?max_1 (TEXT), ?max_2 (TEXT) + => out schema:{(4) ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), default.customer.c_custkey (INT4)} + => in schema:{(4) default.customer.c_custkey (INT4), ?sum_5 (INT8), ?max_6 (TEXT), ?max_7 (TEXT)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) default.customer.c_custkey (INT4), ?sum_5 (INT8), ?max_6 (TEXT), ?max_7 (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), ?sum_5 (INT8), ?max_6 (TEXT), ?max_7 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000004 + +SORT(4) + => Sort Keys: default.customer.c_custkey (INT4) (asc) + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(4) ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), default.customer.c_custkey (INT4)} + => in schema: {(4) ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.result new file mode 100644 index 0000000000..7f32b7222c --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable3.result @@ -0,0 +1,152 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +GROUP_BY(14)(c_custkey) + => exprs: (sum(default.empty_orders.o_orderkey (INT4)),max(default.empty_orders.o_orderstatus (TEXT)),max(default.empty_orders.o_orderdate (TEXT))) + => target list: default.customer.c_custkey (INT4), ?sum_3 (INT8), ?max_4 (TEXT), ?max_5 (TEXT) + => out schema:{(4) default.customer.c_custkey (INT4), ?sum_3 (INT8), ?max_4 (TEXT), ?max_5 (TEXT)} + => in schema:{(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + JOIN(10)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.c_custkey (INT4), num=32) + +GROUP_BY(16)(c_custkey) + => exprs: (count()) + => target list: default.t1.c_custkey (INT4), ?count_6 (INT8) + => out schema:{(2) default.t1.c_custkey (INT4), ?count_6 (INT8)} + => in schema:{(1) default.t1.c_custkey (INT4)} + TABLE_SUBQUERY(5) as default.t1 + => Targets: default.t1.c_custkey (INT4) + => out schema: {(1) default.t1.c_custkey (INT4)} + => in schema: {(4) default.t1.c_custkey (INT4), default.t1.total1 (INT8), default.t1.total2 (TEXT), default.t1.total3 (TEXT)} + PROJECTION(4) + => Targets: default.customer.c_custkey (INT4), total1 (INT8), total2 (TEXT), total3 (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), total1 (INT8), total2 (TEXT), total3 (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), total1 (INT8), total2 (TEXT), total3 (TEXT)} + GROUP_BY(3)(c_custkey) + => exprs: (sum(?sum_3 (INT8)),max(?max_4 (TEXT)),max(?max_5 (TEXT))) + => target list: default.customer.c_custkey (INT4), total1 (INT8), total2 (TEXT), total3 (TEXT) + => out schema:{(4) default.customer.c_custkey (INT4), total1 (INT8), total2 (TEXT), total3 (TEXT)} + => in schema:{(4) default.customer.c_custkey (INT4), ?sum_3 (INT8), ?max_4 (TEXT), ?max_5 (TEXT)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(4) default.customer.c_custkey (INT4), ?sum_3 (INT8), ?max_4 (TEXT), ?max_5 (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), ?sum_3 (INT8), ?max_4 (TEXT), ?max_5 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t1.c_custkey (INT4), num=32) + +SORT(18) + => Sort Keys: default.t1.c_custkey (INT4) (asc) + GROUP_BY(6)(c_custkey) + => exprs: (count(?count_6 (INT8))) + => target list: default.t1.c_custkey (INT4), ?count (INT8) + => out schema:{(2) ?count (INT8), default.t1.c_custkey (INT4)} + => in schema:{(2) default.t1.c_custkey (INT4), ?count_6 (INT8)} + SCAN(17) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t1.c_custkey (INT4), ?count_6 (INT8)} + => in schema: {(2) default.t1.c_custkey (INT4), ?count_6 (INT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t1.c_custkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000005 + +PROJECTION(8) + => Targets: ?count (INT8) + => out schema: {(1) ?count (INT8)} + => in schema: {(2) ?count (INT8), default.t1.c_custkey (INT4)} + SORT(7) + => Sort Keys: default.t1.c_custkey (INT4) (asc) + SCAN(19) on eb_0000000000000_0000_000005 + => out schema: {(2) ?count (INT8), default.t1.c_custkey (INT4)} + => in schema: {(2) ?count (INT8), default.t1.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.result new file mode 100644 index 0000000000..7fa5c8ded3 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable4.result @@ -0,0 +1,167 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000004 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) + +GROUP_BY(17)() + => exprs: (max(default.customer.c_custkey (INT4)),sum(default.orders.o_orderkey (INT4)),max(default.orders.o_orderstatus (TEXT)),max(default.orders.o_orderdate (TEXT))) + => target list: ?max_12 (INT4), ?sum_13 (INT8), ?max_14 (TEXT), ?max_15 (TEXT) + => out schema:{(4) ?max_12 (INT4), ?sum_13 (INT8), ?max_14 (TEXT), ?max_15 (TEXT)} + => in schema:{(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + JOIN(12)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(16) on eb_0000000000000_0000_000002 + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) + +GROUP_BY(9)() + => exprs: (max(?max_12 (INT4)),sum(?sum_13 (INT8)),max(?max_14 (TEXT)),max(?max_15 (TEXT))) + => target list: ?max (INT4), ?sum_1 (INT8), ?max_2 (TEXT), ?max_3 (TEXT) + => out schema:{(4) ?max (INT4), ?max_2 (TEXT), ?max_3 (TEXT), ?sum_1 (INT8)} + => in schema:{(4) ?max_12 (INT4), ?sum_13 (INT8), ?max_14 (TEXT), ?max_15 (TEXT)} + SCAN(18) on eb_0000000000000_0000_000003 + => out schema: {(4) ?max_12 (INT4), ?sum_13 (INT8), ?max_14 (TEXT), ?max_15 (TEXT)} + => in schema: {(4) ?max_12 (INT4), ?sum_13 (INT8), ?max_14 (TEXT), ?max_15 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(4) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(5) on default.empty_orders + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=, num=1) + +GROUP_BY(21)() + => exprs: (max(default.customer.c_custkey (INT4)),sum(default.empty_orders.o_orderkey (INT4)),max(default.empty_orders.o_orderstatus (TEXT)),max(default.empty_orders.o_orderdate (TEXT))) + => target list: ?max_16 (INT4), ?sum_17 (INT8), ?max_18 (TEXT), ?max_19 (TEXT) + => out schema:{(4) ?max_16 (INT4), ?sum_17 (INT8), ?max_18 (TEXT), ?max_19 (TEXT)} + => in schema:{(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + JOIN(13)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(20) on eb_0000000000000_0000_000006 + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(19) on eb_0000000000000_0000_000005 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=, num=1) + +GROUP_BY(10)() + => exprs: (max(?max_16 (INT4)),sum(?sum_17 (INT8)),max(?max_18 (TEXT)),max(?max_19 (TEXT))) + => target list: ?max_5 (INT4), ?sum_6 (INT8), ?max_7 (TEXT), ?max_8 (TEXT) + => out schema:{(4) ?max_5 (INT4), ?max_7 (TEXT), ?max_8 (TEXT), ?sum_6 (INT8)} + => in schema:{(4) ?max_16 (INT4), ?sum_17 (INT8), ?max_18 (TEXT), ?max_19 (TEXT)} + SCAN(22) on eb_0000000000000_0000_000007 + => out schema: {(4) ?max_16 (INT4), ?sum_17 (INT8), ?max_18 (TEXT), ?max_19 (TEXT)} + => in schema: {(4) ?max_16 (INT4), ?sum_17 (INT8), ?max_18 (TEXT), ?max_19 (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.result new file mode 100644 index 0000000000..6daf48c124 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithEmptyTable5.result @@ -0,0 +1,114 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) + +SCAN(0) on default.lineitem + => target list: default.lineitem.l_linenumber (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_quantity (FLOAT8) + => out schema: {(3) default.lineitem.l_linenumber (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_quantity (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT) + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_linenumber (INT4), num=32) + +GROUP_BY(11)(l_linenumber) + => exprs: (sum(default.empty_orders.o_orderkey (INT4)),max(default.empty_orders.o_orderstatus (TEXT)),max(default.empty_orders.o_orderdate (TEXT)),avg(default.lineitem.l_quantity (FLOAT8)),sum(default.lineitem.l_quantity (FLOAT8))) + => target list: default.lineitem.l_linenumber (INT4), ?sum_7 (INT8), ?max_8 (TEXT), ?max_9 (TEXT), ?avg_10 (PROTOBUF), ?sum_11 (FLOAT8) + => out schema:{(6) default.lineitem.l_linenumber (INT4), ?sum_7 (INT8), ?max_8 (TEXT), ?max_9 (TEXT), ?avg_10 (PROTOBUF), ?sum_11 (FLOAT8)} + => in schema:{(5) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8)} + JOIN(7)(LEFT_OUTER) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8) + => out schema: {(5) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8)} + => in schema: {(6) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT), default.lineitem.l_linenumber (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_quantity (FLOAT8)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + => in schema: {(3) default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.lineitem.l_linenumber (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_quantity (FLOAT8)} + => in schema: {(3) default.lineitem.l_linenumber (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_quantity (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_linenumber (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.lineitem.l_linenumber (INT4), num=32) + +SORT(13) + => Sort Keys: default.lineitem.l_linenumber (INT4) (asc) + GROUP_BY(3)(l_linenumber) + => exprs: (sum(?sum_7 (INT8)),max(?max_8 (TEXT)),max(?max_9 (TEXT)),avg(?avg_10 (PROTOBUF)),sum(?sum_11 (FLOAT8))) + => target list: default.lineitem.l_linenumber (INT4), ?sum (INT8), ?max_1 (TEXT), ?max_2 (TEXT), ?avg_3 (FLOAT8), ?sum_4 (FLOAT8) + => out schema:{(6) ?avg_3 (FLOAT8), ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), ?sum_4 (FLOAT8), default.lineitem.l_linenumber (INT4)} + => in schema:{(6) default.lineitem.l_linenumber (INT4), ?sum_7 (INT8), ?max_8 (TEXT), ?max_9 (TEXT), ?avg_10 (PROTOBUF), ?sum_11 (FLOAT8)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(6) default.lineitem.l_linenumber (INT4), ?sum_7 (INT8), ?max_8 (TEXT), ?max_9 (TEXT), ?avg_10 (PROTOBUF), ?sum_11 (FLOAT8)} + => in schema: {(6) default.lineitem.l_linenumber (INT4), ?sum_7 (INT8), ?max_8 (TEXT), ?max_9 (TEXT), ?avg_10 (PROTOBUF), ?sum_11 (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.lineitem.l_linenumber (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000004 + +SORT(4) + => Sort Keys: default.lineitem.l_linenumber (INT4) (asc) + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(6) ?avg_3 (FLOAT8), ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), ?sum_4 (FLOAT8), default.lineitem.l_linenumber (INT4)} + => in schema: {(6) ?avg_3 (FLOAT8), ?max_1 (TEXT), ?max_2 (TEXT), ?sum (INT8), ?sum_4 (FLOAT8), default.lineitem.l_linenumber (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.result new file mode 100644 index 0000000000..7073c53e4f --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull1.result @@ -0,0 +1,90 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SELECTION(3) + => Search Cond: default.orders.o_orderkey (INT4) IS NULL + JOIN(7)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), coalesce(default.orders.o_orderstatus (TEXT),N/A) as ?coalesce + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(4) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.result new file mode 100644 index 0000000000..b4446089ce --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull2.result @@ -0,0 +1,90 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SELECTION(3) + => Search Cond: default.orders.o_orderdate (TEXT) IS NOT NULL AND default.orders.o_orderdate (TEXT)LIKE'1996%' + JOIN(7)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), coalesce(default.orders.o_orderstatus (TEXT),N/A) as ?coalesce + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(4) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.result new file mode 100644 index 0000000000..5794405289 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithNull3.result @@ -0,0 +1,90 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(1) on default.orders + => target list: default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT) + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(11) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SELECTION(3) + => Search Cond: default.orders.o_orderkey (INT4) = 100 + JOIN(7)(LEFT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), coalesce(default.orders.o_orderstatus (TEXT),N/A) as ?coalesce + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + => in schema: {(3) default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderstatus (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(4) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) ?coalesce (TEXT), default.customer.c_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.result new file mode 100644 index 0000000000..2d7875d26b --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterJoinWithThetaJoinConditionInWhere.result @@ -0,0 +1,67 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) + +SCAN(0) on default.region as a + => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SCAN(1) on default.customer as b + => target list: default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT) + => out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SELECTION(3) + => Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT) + JOIN(6)(LEFT_OUTER) + => Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4) + => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT) + => out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterWithEmptyTable.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterWithEmptyTable.result new file mode 100644 index 0000000000..851a1e8807 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testLeftOuterWithEmptyTable.result @@ -0,0 +1,65 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table15 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +JOIN(5)(LEFT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(8) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.result new file mode 100644 index 0000000000..8f204fb19e --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testOuterJoinAndCaseWhen1.result @@ -0,0 +1,7 @@ +id,name,id2,name2,c1,c2 +------------------------------- +1,ooo,1,null,9991231,ooo +2,ppp,2,null,9991231,ppp +3,qqq,null,null,9991231,9991231 +4,rrr,null,null,9991231,9991231 +5,xxx,null,null,9991231,9991231 \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoin1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoin1.result new file mode 100644 index 0000000000..7503733b33 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoin1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + JOIN(6)(RIGHT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(1) default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase1.result new file mode 100644 index 0000000000..9c65f18b30 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase1.result @@ -0,0 +1,104 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +SCAN(1) on default.table12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) + +JOIN(7)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(1) default.t2.id (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), default.t2.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), default.t3.id (INT4), num=32) + +JOIN(8)(RIGHT_OUTER) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) AND default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase2.result new file mode 100644 index 0000000000..a283006b29 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinPredicationCaseByCase2.result @@ -0,0 +1,106 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.table11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +SCAN(1) on default.table14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) + +JOIN(8)(INNER) + => Join Cond: default.t1.id (INT4) = default.t4.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000002 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +SCAN(3) on default.table13 as t3 + => filter: default.t3.id (INT4) > 1 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) + +JOIN(9)(RIGHT_OUTER) + => Join Cond: default.t3.id (INT4) = 2 AND default.t4.id (INT4) = default.t3.id (INT4) + => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.result new file mode 100644 index 0000000000..84108c0eeb --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithEmptyTable1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) + +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +SORT(10) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + JOIN(6)(RIGHT_OUTER) + => Join Cond: default.customer.c_custkey (INT4) = default.empty_orders.o_orderkey (INT4) + => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.customer.c_custkey (INT4) (asc),default.empty_orders.o_orderkey (INT4) (asc) + SCAN(11) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.result new file mode 100644 index 0000000000..3681ab55a7 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testRightOuterJoinWithThetaJoinConditionInWhere.result @@ -0,0 +1,67 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000004) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) + +SCAN(0) on default.region as a + => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SCAN(1) on default.customer as b + => target list: default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT) + => out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SELECTION(3) + => Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT) + JOIN(6)(RIGHT_OUTER) + => Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4) + => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT) + => out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + SCAN(9) on eb_0000000000000_0000_000002 + => out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + => in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testTPCHQ2Join.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testTPCHQ2Join.result new file mode 100644 index 0000000000..0eeda3d8a0 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testTPCHQ2Join.result @@ -0,0 +1,205 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +10: eb_0000000000000_0000_000010 +11: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(0) on default.part + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +SORT(26) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin1.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin1.result new file mode 100644 index 0000000000..c728e84193 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin1.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +SORT(11) + => Sort Keys: default.nation.n_name (TEXT) (asc) + JOIN(7)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.nation.n_name (TEXT) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin2.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin2.result new file mode 100644 index 0000000000..5d84bf166b --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin2.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +SORT(11) + => Sort Keys: default.nation.n_name (TEXT) (asc) + JOIN(7)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) + => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.nation.n_name (TEXT) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} + => in schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin3.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin3.result new file mode 100644 index 0000000000..f31dcfb5cf --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin3.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +SORT(11) + => Sort Keys: default.nation.n_name (TEXT) (asc) + JOIN(7)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.nation.n_name (TEXT) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin4.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin4.result new file mode 100644 index 0000000000..9de72bbee6 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testWhereClauseJoin4.result @@ -0,0 +1,88 @@ +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000005) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +SORT(11) + => Sort Keys: default.nation.n_name (TEXT) (asc) + JOIN(7)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus + => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} + => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000002 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000003 + +SORT(3) + => Sort Keys: default.nation.n_name (TEXT) (asc) + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} + => in schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [TERMINAL] +======================================================= \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result b/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result index 7946c5bf83..1087036454 100644 --- a/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result +++ b/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result @@ -25,7 +25,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) -SCAN(0) on default.nation as n2 +SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} @@ -37,9 +37,9 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT) - => out schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= @@ -61,8 +61,8 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} - => in schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} => in schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 09b8b8c6fa..33e7f18d5e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -141,6 +141,11 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra double minNonCrossJoinCost = Double.MAX_VALUE; JoinEdge bestNonCrossJoin = null; + LOG.info("outer"); + for (JoinVertex vertex : vertexes) { + + } + for (JoinVertex outer : vertexes) { for (JoinVertex inner : vertexes) { if (outer.equals(inner)) { From eadc71365ffbc2d0edba3ba68f8027a6d7e84653 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 15:27:03 +0900 Subject: [PATCH 27/43] TAJO-1352_4 --- .../exec/ExplainPlanPreprocessorForTest.java | 20 +- .../engine/planner/QueryPlanTestCaseBase.java | 506 ------------------ .../planner/TajoPlanTestingUtility.java | 302 ----------- .../tajo/engine/planner/TpchPlanTestBase.java | 119 ---- .../apache/tajo/plan/LogicalOptimizer.java | 122 +---- .../GreedyHeuristicJoinOrderAlgorithm.java | 126 +---- .../apache/tajo/plan/joinorder/JoinEdge.java | 9 - .../apache/tajo/plan/joinorder/JoinGraph.java | 67 --- .../tajo/plan/joinorder/JoinOrderingUtil.java | 50 +- .../tajo/plan/joinorder/JoinVertex.java | 1 - .../tajo/plan/joinorder/RelationVertex.java | 2 - .../apache/tajo/plan/logical/JoinNode.java | 9 +- 12 files changed, 20 insertions(+), 1313 deletions(-) delete mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java delete mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java delete mode 100644 tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index cce083a1b0..db93781ef4 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -25,7 +25,10 @@ import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.*; +import org.apache.tajo.plan.logical.JoinNode; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.ScanNode; +import org.apache.tajo.plan.logical.SelectionNode; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@ -50,10 +53,11 @@ public void prepareTest(LogicalPlan plan) throws PlanningException { shapeFixerContext.reset(); shapeFixer.visit(shapeFixerContext, plan, plan.getRootBlock()); - // Pid reseter + // Pid collector collectorContext.reset(); joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); + // Pid resetter resetContext.reset(collectorContext.joinPids); joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); } @@ -138,10 +142,6 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo } } -// if (node.hasJoinQual()) { -// node.setJoinQual(sortQual(node.getJoinSpec().getPredicates())); -// } - if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); } @@ -167,11 +167,6 @@ private EvalNode sortQual(EvalNode qual) { return sortQual(cnf); } - private EvalNode sortQual(Set quals) { - EvalNode[] cnf = quals.toArray(new EvalNode[quals.size()]); - return sortQual(cnf); - } - private EvalNode sortQual(EvalNode[] cnf) { Arrays.sort(cnf, evalNodeComparator); return AlgebraicUtil.createSingletonExprFromCNF(cnf); @@ -184,9 +179,6 @@ private Target[] sortTargets(Target[] targets) { private static void swapChildren(JoinNode node) { LogicalNode tmpChild = node.getLeftChild(); -// int tmpId = tmpChild.getPID(); -// tmpChild.setPID(node.getRightChild().getPID()); -// node.getRightChild().setPID(tmpId); node.setLeftChild(node.getRightChild()); node.setRightChild(tmpChild); } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java deleted file mode 100644 index 546a79598c..0000000000 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/QueryPlanTestCaseBase.java +++ /dev/null @@ -1,506 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.engine.planner; - -import com.google.protobuf.ServiceException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.fs.FSDataOutputStream; -import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.apache.tajo.TajoConstants; -import org.apache.tajo.algebra.CreateTable; -import org.apache.tajo.algebra.DropTable; -import org.apache.tajo.algebra.Expr; -import org.apache.tajo.algebra.OpType; -import org.apache.tajo.annotation.Nullable; -import org.apache.tajo.catalog.CatalogService; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.TableDesc; -import org.apache.tajo.cli.tsql.ParsedResult; -import org.apache.tajo.cli.tsql.SimpleParser; -import org.apache.tajo.conf.TajoConf; -import org.apache.tajo.engine.planner.global.MasterPlan; -import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.storage.StorageUtil; -import org.apache.tajo.util.FileUtil; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.rules.TestName; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.*; - -public class QueryPlanTestCaseBase { - private static final Log LOG = LogFactory.getLog(QueryPlanTestCaseBase.class); - protected static final TpchPlanTestBase testBase; - protected static final CatalogService catalog; - protected static TajoConf conf; - - /** the base path of dataset directories */ - protected static final Path datasetBasePath; - /** the base path of query directories */ - protected static final Path queryBasePath; - /** the base path of result directories */ - protected static final Path resultBasePath; - - static { - testBase = TpchPlanTestBase.getInstance(); - conf = testBase.getUtilility().getConf(); - catalog = testBase.getUtilility().getCatalog(); - - URL datasetBaseURL = ClassLoader.getSystemResource("dataset"); - datasetBasePath = new Path(datasetBaseURL.toString()); - URL queryBaseURL = ClassLoader.getSystemResource("queries"); - queryBasePath = new Path(queryBaseURL.toString()); - URL resultBaseURL = ClassLoader.getSystemResource("plans"); - resultBasePath = new Path(resultBaseURL.toString()); - } - - /** It transiently contains created tables for the running test class. */ - private static String currentDatabase; - private static Set createdTableGlobalSet = new HashSet(); - // queries and results directory corresponding to subclass class. - protected Path currentQueryPath; - protected Path currentResultPath; - protected Path currentDatasetPath; - - // for getting a method name - @Rule - public TestName name = new TestName(); - - @BeforeClass - public static void setUpClass() throws Exception { - conf = testBase.getUtilility().getConf(); - } - - @AfterClass - public static void tearDownClass() throws ServiceException { - for (String tableName : createdTableGlobalSet) { - String denormalizedName = CatalogUtil.denormalizeIdentifier(tableName); - if (catalog.existsTable(denormalizedName)) { - catalog.dropTable(denormalizedName); - } - } - createdTableGlobalSet.clear(); - - // if the current database is "default", shouldn't drop it. - if (!currentDatabase.equals(TajoConstants.DEFAULT_DATABASE_NAME)) { - for (String tableName : catalog.getAllTableNames(currentDatabase)) { - if (catalog.existsTable(tableName)) { - catalog.dropTable(tableName); - } - } - - catalog.dropDatabase(currentDatabase); - } - } - - @Before - public void printTestName() { - /* protect a travis stalled build */ - System.out.println("Run: " + name.getMethodName()); - } - - public QueryPlanTestCaseBase() { - this.currentDatabase = getClass().getSimpleName(); - init(); - } - - public QueryPlanTestCaseBase(String currentDatabase) { - this.currentDatabase = currentDatabase; - init(); - } - - private void init() { - String className = getClass().getSimpleName(); - currentQueryPath = new Path(queryBasePath, className); - currentResultPath = new Path(resultBasePath, className); - currentDatasetPath = new Path(datasetBasePath, className); - - // if the current database is "default", we don't need create it because it is already prepated at startup time. - if (!currentDatabase.equals(TajoConstants.DEFAULT_DATABASE_NAME)) { -// String denormalizedDatabaseName = CatalogUtil.denormalizeIdentifier(currentDatabase); - if (!catalog.existDatabase(currentDatabase)) { - catalog.createDatabase(currentDatabase, TajoConstants.DEFAULT_TABLESPACE_NAME); - } - } - - conf.set(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); - } - - public String getCurrentDatabase() { - return currentDatabase; - } - - protected LogicalPlan buildLogicalPlanFromString(String sql) throws Exception { - return testBase.buildLogicalPlan(sql); - } - - /** - * Execute a query contained in the file located in src/test/resources/results/ClassName/MethodName. - * ClassName and MethodName will be replaced by actual executed class and methods. - * - * @return ResultSet of query execution. - */ - public LogicalPlan buildLogicalPlan() throws Exception { - return buildLogicalPlan(getMethodName() + ".sql"); - } - - public MasterPlan buildMasterPlan(LogicalPlan logicalPlan) throws IOException, PlanningException { - return testBase.buildMasterPlan(logicalPlan); - } - - public MasterPlan buildPlan() throws Exception { - return buildMasterPlan(buildLogicalPlan()); - } - - protected String getMethodName() { - String methodName = name.getMethodName(); - // In the case of parameter execution name's pattern is methodName[0] - if (methodName.endsWith("]")) { - methodName = methodName.substring(0, methodName.length() - 3); - } - return methodName; - } - - /** - * Execute a query contained in the given named file. This methods tries to find the given file within the directory - * src/test/resources/results/ClassName. - * - * @param queryFileName The file name to be used to buildLogicalPlan a query. - * @return ResultSet of query execution. - */ - public LogicalPlan buildLogicalPlan(String queryFileName) throws Exception { - Path queryFilePath = getQueryFilePath(queryFileName); - - List parsedResults = SimpleParser.parseScript(FileUtil.readTextFile(new File(queryFilePath.toUri()))); - if (parsedResults.size() > 1) { - assertNotNull("This script \"" + queryFileName + "\" includes two or more queries"); - } - - int idx = 0; - for (; idx < parsedResults.size() - 1; idx++) { - testBase.buildLogicalPlan(parsedResults.get(idx).getHistoryStatement()); - } - - LogicalPlan result = testBase.buildLogicalPlan(parsedResults.get(idx).getHistoryStatement()); - assertNotNull("Query succeeded test", result); - return result; - } - - private Path getQueryFilePath(String fileName) throws IOException { - Path queryFilePath = StorageUtil.concatPath(currentQueryPath, fileName); - FileSystem fs = currentQueryPath.getFileSystem(testBase.getUtilility().getConf()); - assertTrue(queryFilePath.toString() + " existence check", fs.exists(queryFilePath)); - return queryFilePath; - } - - private Path getResultFile(String fileName) throws IOException { - Path resultPath = StorageUtil.concatPath(currentResultPath, fileName); - FileSystem fs = currentResultPath.getFileSystem(testBase.getUtilility().getConf()); - assertTrue(resultPath.toString() + " existence check", fs.exists(resultPath)); - return resultPath; - } - - private Path getDataSetFile(String fileName) throws IOException { - Path dataFilePath = StorageUtil.concatPath(currentDatasetPath, fileName); - FileSystem fs = currentDatasetPath.getFileSystem(testBase.getUtilility().getConf()); - assertTrue(dataFilePath.toString() + " existence check", fs.exists(dataFilePath)); - return dataFilePath; - } - - /** - * Assert the equivalence between the expected result and an actual query result. - * If it isn't it throws an AssertionError. - * - * @param result Query result to be compared. - */ - public final void assertLogicalPlan(LogicalPlan result) throws IOException { - assertLogicalPlan("Result Verification", result, getMethodName() + ".logical.plan"); - } - - public final void assertLogicalPlan(String message, LogicalPlan result, String resultFileName) throws IOException { - Path resultFile = getResultFile(resultFileName); - try { - verifyLogicalPlan(message, result, resultFile); - } catch (SQLException e) { - throw new IOException(e); - } - } - - public final void assertMasterPlan(MasterPlan result) throws IOException { - assertMasterPlan("Result Verification", result, getMethodName() + ".master.plan"); - } - - public final void assertMasterPlan(String message, MasterPlan result, String resultFileName) throws IOException { - Path resultFile = getResultFile(resultFileName); - try { - verifyMasterPlan(message, result, resultFile); - } catch (SQLException e) { - throw new IOException(e); - } - } - - private void verifyLogicalPlan(String message, LogicalPlan res, Path resultFile) throws SQLException, IOException { - LogicalPlan actualResult = res; - String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); - assertEquals(message, expectedResult.trim(), actualResult.getLogicalPlanAsString().trim()); - } - - private void verifyMasterPlan(String message, MasterPlan res, Path resultFile) throws SQLException, IOException { - MasterPlan actualResult = res; - String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); - assertEquals(message, expectedResult.trim(), actualResult.toString().trim()); - } - - public void executeDDLString(String ddl) throws IOException, PlanningException { - testBase.util.executeDDL(ddl); - } - - public List executeDDL(String ddlFileName, @Nullable String [] args) throws Exception { - return executeDDL(ddlFileName, null, true, args); - } - - /** - * - * Execute a data definition language (DDL) template. A general SQL DDL statement can be included in this file. But, - * for user-specified table name or exact external table path, you must use some format string to indicate them. - * The format string will be replaced by the corresponding arguments. - * - * The below is predefined format strings: - *
    - *
  • ${table.path} - It is replaced by the absolute file path that dataFileName points.
  • - *
  • ${i} - It is replaced by the corresponding element of args. For example, ${0} and ${1} are - * replaced by the first and second elements of args respectively
  • . It uses zero-based index. - *
- * - * Example ddl - *
-   *   CREATE EXTERNAL TABLE ${0} (
-   *     t_timestamp  TIMESTAMP,
-   *     t_date    DATE
-   *   ) USING CSV LOCATION ${table.path}
-   * 
- * - * @param ddlFileName A file name, containing a data definition statement. - * @param dataFileName A file name, containing data rows, which columns have to be separated by vertical bar '|'. - * This file name is used for replacing some format string indicating an external table location. - * @param args A list of arguments, each of which is used to replace corresponding variable which has a form of ${i}. - * @return The table names created - */ - public List executeDDL(String ddlFileName, @Nullable String dataFileName, @Nullable String ... args) - throws Exception { - - return executeDDL(ddlFileName, dataFileName, true, args); - } - - private List executeDDL(String ddlFileName, @Nullable String dataFileName, boolean isLocalTable, - @Nullable String[] args) throws Exception { - - Path ddlFilePath = new Path(currentQueryPath, ddlFileName); - FileSystem fs = ddlFilePath.getFileSystem(conf); - assertTrue(ddlFilePath + " existence check", fs.exists(ddlFilePath)); - - String template = FileUtil.readTextFile(new File(ddlFilePath.toUri())); - String dataFilePath = null; - if (dataFileName != null) { - dataFilePath = getDataSetFile(dataFileName).toString(); - } - String compiled = compileTemplate(template, dataFilePath, args); - - List parsedResults = SimpleParser.parseScript(compiled); - List createdTableNames = new ArrayList(); - - for (ParsedResult parsedResult : parsedResults) { - // parse a statement - Expr expr = testBase.util.getSQLAnalyzer().parse(parsedResult.getHistoryStatement()); - assertNotNull(ddlFilePath + " cannot be parsed", expr); - - if (expr.getType() == OpType.CreateTable) { - CreateTable createTable = (CreateTable) expr; - String tableName = createTable.getTableName(); - assertTrue("Table [" + tableName + "] creation is failed.", - testBase.util.executeDDL(parsedResult.getHistoryStatement())); - - TableDesc createdTable = catalog.getTableDesc(tableName); - String createdTableName = createdTable.getName(); - - assertTrue("table '" + createdTableName + "' creation check", catalog.existsTable(createdTableName)); - if (isLocalTable) { - createdTableGlobalSet.add(createdTableName); - createdTableNames.add(tableName); - } - } else if (expr.getType() == OpType.DropTable) { - DropTable dropTable = (DropTable) expr; - String tableName = dropTable.getTableName(); - assertTrue("table '" + tableName + "' existence check", - catalog.existsTable(CatalogUtil.buildFQName(currentDatabase, tableName))); - assertTrue("table drop is failed.", testBase.util.executeDDL(parsedResult.getHistoryStatement())); - assertFalse("table '" + tableName + "' dropped check", - catalog.existsTable(CatalogUtil.buildFQName(currentDatabase, tableName))); - if (isLocalTable) { - createdTableGlobalSet.remove(tableName); - } - } else if (expr.getType() == OpType.AlterTable) { - assertTrue(ddlFilePath + ": ALTER TABLE is not supported yet.", false); - } else { - assertTrue(ddlFilePath + " is not a Create or Drop Table statement", false); - } - } - - return createdTableNames; - } - - /** - * Replace format strings by a given parameters. - * - * @param template - * @param dataFileName The data file name to replace ${table.path} - * @param args The list argument to replace each corresponding format string ${i}. ${i} uses zero-based index. - * @return A string compiled - */ - private String compileTemplate(String template, @Nullable String dataFileName, @Nullable String ... args) { - String result; - if (dataFileName != null) { - result = template.replace("${table.path}", "\'" + dataFileName + "'"); - } else { - result = template; - } - - if (args != null) { - for (int i = 0; i < args.length; i++) { - result = result.replace("${" + i + "}", args[i]); - } - } - return result; - } - - public void createTable(String ddl, String location, String[] dataRows) throws IOException, PlanningException { - Path tablePath = new Path(location); - FileSystem fs = tablePath.getFileSystem(testBase.util.getConf()); - FSDataOutputStream out = fs.create(tablePath); - for (String row : dataRows) { - out.writeUTF(row); - } - out.close(); - - executeDDLString(ddl); - } - - /** - * Reads data file from Test Cluster's HDFS - * @param path data parent path - * @return data file's contents - * @throws Exception - */ - public String getTableFileContents(Path path) throws Exception { - FileSystem fs = path.getFileSystem(conf); - - FileStatus[] files = fs.listStatus(path); - - if (files == null || files.length == 0) { - return ""; - } - - StringBuilder sb = new StringBuilder(); - byte[] buf = new byte[1024]; - - for (FileStatus file: files) { - if (file.isDirectory()) { - sb.append(getTableFileContents(file.getPath())); - continue; - } - - InputStream in = fs.open(file.getPath()); - try { - while (true) { - int readBytes = in.read(buf); - if (readBytes <= 0) { - break; - } - - sb.append(new String(buf, 0, readBytes)); - } - } finally { - in.close(); - } - } - - return sb.toString(); - } - -// /** -// * Reads data file from Test Cluster's HDFS -// * @param tableName -// * @return data file's contents -// * @throws Exception -// */ -// public String getTableFileContents(String tableName) throws Exception { -// TableDesc tableDesc = testingCluster.getMaster().getCatalog().getTableDesc(getCurrentDatabase(), tableName); -// if (tableDesc == null) { -// return null; -// } -// -// Path path = new Path(tableDesc.getPath()); -// return getTableFileContents(path); -// } -// -// public List listTableFiles(String tableName) throws Exception { -// TableDesc tableDesc = testingCluster.getMaster().getCatalog().getTableDesc(getCurrentDatabase(), tableName); -// if (tableDesc == null) { -// return null; -// } -// -// Path path = new Path(tableDesc.getPath()); -// FileSystem fs = path.getFileSystem(conf); -// -// return listFiles(fs, path); -// } - - private List listFiles(FileSystem fs, Path path) throws Exception { - List result = new ArrayList(); - FileStatus[] files = fs.listStatus(path); - if (files == null || files.length == 0) { - return result; - } - - for (FileStatus eachFile: files) { - if (eachFile.isDirectory()) { - result.addAll(listFiles(fs, eachFile.getPath())); - } else { - result.add(eachFile.getPath()); - } - } - return result; - } -} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java deleted file mode 100644 index fd67545459..0000000000 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TajoPlanTestingUtility.java +++ /dev/null @@ -1,302 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.engine.planner; - -import com.sun.org.apache.commons.logging.Log; -import com.sun.org.apache.commons.logging.LogFactory; -import org.apache.hadoop.fs.Path; -import org.apache.tajo.*; -import org.apache.tajo.algebra.Expr; -import org.apache.tajo.catalog.*; -import org.apache.tajo.catalog.proto.CatalogProtos; -import org.apache.tajo.conf.TajoConf; -import org.apache.tajo.engine.function.FunctionLoader; -import org.apache.tajo.engine.parser.SQLAnalyzer; -import org.apache.tajo.engine.planner.global.GlobalPlanner; -import org.apache.tajo.engine.planner.global.MasterPlan; -import org.apache.tajo.engine.query.QueryContext; -import org.apache.tajo.master.exec.DDLExecutor; -import org.apache.tajo.plan.*; -import org.apache.tajo.plan.expr.AlgebraicUtil; -import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.JoinNode; -import org.apache.tajo.plan.logical.LogicalNode; -import org.apache.tajo.plan.logical.ScanNode; -import org.apache.tajo.plan.util.PlannerUtil; -import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; -import org.apache.tajo.util.KeyValueSet; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Stack; - -import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME; -import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME; - -public class TajoPlanTestingUtility { - private static final Log LOG = LogFactory.getLog(TajoPlanTestingUtility.class); - - /** - * Default parent directory for test output. - */ - public static final String DEFAULT_TEST_DIRECTORY = "target/" + - System.getProperty("tajo.test.data.dir", "test-data"); - - private TajoConf conf; - private TajoTestingCluster util; - private CatalogService catalog; - private SQLAnalyzer analyzer; - private QueryContext defaultContext; - private LogicalPlanner planner; - private LogicalOptimizer optimizer; - private GlobalPlanner globalPlanner; - private DDLExecutor ddlExecutor; -// private final PlanShapeFixerContext planShapeFixerContext = new PlanShapeFixerContext(); -// private final PlanShapeFixer verifyPreprocessor = new PlanShapeFixer(); -// private final PidResetContext resetContext = new PidResetContext(); -// private final PidReseter pidReseter = new PidReseter(); - - public void setup(String[] names, - String[] tablepaths, - Schema[] schemas, - KeyValueSet option) throws Exception { - util = new TajoTestingCluster(); - conf = util.getConfiguration(); - conf.setLongVar(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD, 500 * 1024); - conf.setBoolVar(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED, true); - - catalog = util.startCatalogCluster().getCatalog(); - catalog.createTablespace(DEFAULT_TABLESPACE_NAME, conf.getVar(TajoConf.ConfVars.WAREHOUSE_DIR)); - catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); - util.getMiniCatalogCluster().getCatalogServer().reloadBuiltinFunctions(FunctionLoader.findLegacyFunctions()); - - defaultContext = LocalTajoTestingUtility.createDummyContext(conf); - analyzer = new SQLAnalyzer(); - planner = new LogicalPlanner(catalog); - optimizer = new LogicalOptimizer(conf); - globalPlanner = new GlobalPlanner(conf, catalog); - ddlExecutor = new DDLExecutor(catalog); - - -// FileSystem fs = FileSystem.getLocal(conf); -// Path rootDir = TajoConf.getWarehouseDir(conf); -// fs.mkdirs(rootDir); -// for (int i = 0; i < tablepaths.length; i++) { -// Path localPath = new Path(tablepaths[i]); -// Path tablePath = new Path(rootDir, names[i]); -// fs.mkdirs(tablePath); -// Path dfsPath = new Path(tablePath, localPath.getName()); -// fs.copyFromLocalFile(localPath, dfsPath); -// TableMeta meta = CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option); -// -// // Add fake table statistic data to tables. -// // It gives more various situations to unit tests. -// TableStats stats = new TableStats(); -// stats.setNumBytes(TPCH.tableVolumes.get(names[i])); -// TableDesc tableDesc = new TableDesc( -// CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), schemas[i], meta, -// tablePath.toUri()); -// tableDesc.setStats(stats); -// catalog.createTable(tableDesc); -// } - - for (int i = 0; i < tablepaths.length; i++) { - ddlExecutor.createTable(defaultContext, CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, names[i]), - CatalogProtos.StoreType.CSV, schemas[i], CatalogUtil.newTableMeta(CatalogProtos.StoreType.CSV, option), - new Path(tablepaths[i]), true, null, true); - } - } - - public void shutdown() { - util.shutdownCatalogCluster(); - } - - public LogicalPlan buildLogicalPlan(String query) throws PlanningException { - Expr expr = analyzer.parse(query); - LogicalPlan plan = planner.createPlan(defaultContext, expr); - optimizer.optimize(defaultContext, plan); -// planShapeFixerContext.reset(); -// resetContext.reset(); -// pidReseter.visit(resetContext, plan, plan.getRootBlock()); -// verifyPreprocessor.visit(planShapeFixerContext, plan, plan.getRootBlock()); - - return plan; - } - - public MasterPlan buildMasterPlan(LogicalPlan plan) throws IOException, PlanningException { - QueryId queryId = QueryIdFactory.newQueryId(0, 0); - MasterPlan masterPlan = new MasterPlan(queryId, defaultContext, plan); - globalPlanner.build(masterPlan); - return masterPlan; - } - - public TajoConf getConf() { - return conf; - } - - public CatalogService getCatalog() { - return catalog; - } - - public SQLAnalyzer getSQLAnalyzer() { - return analyzer; - } - - public boolean executeDDL(String query) throws PlanningException, IOException { - Expr expr = analyzer.parse(query); - LogicalPlan plan = planner.createPlan(defaultContext, expr); - optimizer.optimize(defaultContext, plan); - - return ddlExecutor.execute(defaultContext, plan); - } - -// private static class PidResetContext { -// int seqId = 0; -// public void reset() { -// seqId = 0; -// } -// } - -// private static class PidReseter extends BasicLogicalPlanVisitor { -// -// @Override -// public void preHook(LogicalPlan plan, LogicalNode node, Stack stack, PidResetContext context) -// throws PlanningException { -// node.setPID(context.seqId++); -// } -// } -// -// private static class PlanShapeFixerContext { -// -// Stack childNumbers = new Stack(); -// public void reset() { -// childNumbers.clear(); -// } -// } - -// private static final ColumnComparator columnComparator = new ColumnComparator(); -// private static final EvalNodeComparator evalNodeComparator = new EvalNodeComparator(); -// private static final TargetComparator targetComparator = new TargetComparator(); - -// private static class PlanShapeFixer extends BasicLogicalPlanVisitor { -// -// @Override -// public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, -// ScanNode node, Stack stack) throws PlanningException { -// super.visitScan(context, plan, block, node, stack); -// context.childNumbers.push(1); -// node.setInSchema(sortSchema(node.getInSchema())); -// if (node.hasQual()) { -// node.setQual(sortQual(node.getQual())); -// } -// return null; -// } -// -// @Override -// public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, -// JoinNode node, Stack stack) throws PlanningException { -// super.visitJoin(context, plan, block, node, stack); -// int rightChildNum = context.childNumbers.pop(); -// int leftChildNum = context.childNumbers.pop(); -// -// if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { -// -// if (leftChildNum < rightChildNum) { -// swapChildren(node); -// } else if (leftChildNum == rightChildNum) { -// if (node.getLeftChild().toString().compareTo(node.getRightChild().toString()) < -// 0) { -// swapChildren(node); -// } -// } -// } -// -// node.setInSchema(sortSchema(node.getInSchema())); -// node.setOutSchema(sortSchema(node.getOutSchema())); -// -// if (node.hasJoinQual()) { -// node.setJoinQual(sortQual(node.getJoinQual())); -// } -// -// if (node.hasTargets()) { -// node.setTargets(sortTargets(node.getTargets())); -// } -// -// context.childNumbers.push(rightChildNum + leftChildNum); -// -// return null; -// } -// -// private Schema sortSchema(Schema schema) { -// Column[] columns = schema.toArray(); -// Arrays.sort(columns, columnComparator); -// -// Schema sorted = new Schema(); -// for (Column col : columns) { -// sorted.addColumn(col); -// } -// return sorted; -// } -// -// private EvalNode sortQual(EvalNode qual) { -// EvalNode[] cnf = AlgebraicUtil.toConjunctiveNormalFormArray(qual); -// Arrays.sort(cnf, evalNodeComparator); -// return AlgebraicUtil.createSingletonExprFromCNF(cnf); -// } -// -// private Target[] sortTargets(Target[] targets) { -// Arrays.sort(targets, targetComparator); -// return targets; -// } -// -// private static void swapChildren(JoinNode node) { -// LogicalNode tmpChild = node.getLeftChild(); -// int tmpId = tmpChild.getPID(); -// tmpChild.setPID(node.getRightChild().getPID()); -// node.getRightChild().setPID(tmpId); -// node.setLeftChild(node.getRightChild()); -// node.setRightChild(tmpChild); -// } -// } - -// private static class ColumnComparator implements Comparator { -// -// @Override -// public int compare(Column o1, Column o2) { -// return o1.getQualifiedName().compareTo(o2.getQualifiedName()); -// } -// } -// -// private static class EvalNodeComparator implements Comparator { -// -// @Override -// public int compare(EvalNode o1, EvalNode o2) { -// return o1.toJson().compareTo(o2.toJson()); -// } -// } -// -// private static class TargetComparator implements Comparator { -// -// @Override -// public int compare(Target o1, Target o2) { -// return o1.toJson().compareTo(o2.toJson()); -// } -// } -} diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java deleted file mode 100644 index e5960b46a3..0000000000 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/TpchPlanTestBase.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.engine.planner; - -import com.google.common.collect.Maps; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.tajo.benchmark.TPCH; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.engine.planner.global.MasterPlan; -import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.storage.StorageConstants; -import org.apache.tajo.util.FileUtil; -import org.apache.tajo.util.KeyValueSet; - -import java.io.File; -import java.io.IOException; -import java.util.Map; - -public class TpchPlanTestBase { - private static final Log LOG = LogFactory.getLog(TpchPlanTestBase.class); - - String [] names; - String [] paths; - String [][] tables; - Schema[] schemas; - Map nameMap = Maps.newHashMap(); - protected TPCH tpch; - protected TajoPlanTestingUtility util; - - private static TpchPlanTestBase testBase; - - static { - try { - testBase = new TpchPlanTestBase(); - testBase.setUp(); - } catch (Exception e) { - LOG.error(e.getMessage(), e); - } - } - - private TpchPlanTestBase() throws IOException { - names = new String[] {"customer", "lineitem", "nation", "orders", "part", "partsupp", "region", "supplier", "empty_orders"}; - paths = new String[names.length]; - for (int i = 0; i < names.length; i++) { - nameMap.put(names[i], i); - } - - tpch = new TPCH(); - tpch.loadSchemas(); - tpch.loadQueries(); - - schemas = new Schema[names.length]; - for (int i = 0; i < names.length; i++) { - schemas[i] = tpch.getSchema(names[i]); - } - - tables = new String[names.length][]; - File file; - for (int i = 0; i < names.length; i++) { - file = TPCH.getDataFile(names[i]); - tables[i] = FileUtil.readTextFile(file).split("\n"); - paths[i] = file.getAbsolutePath(); - } - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - private void setUp() throws Exception { - util = new TajoPlanTestingUtility(); - KeyValueSet opt = new KeyValueSet(); - opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); - util.setup(names, paths, schemas, opt); - } - - public static TpchPlanTestBase getInstance() { - return testBase; - } - - public LogicalPlan buildLogicalPlan(String query) throws PlanningException { - return util.buildLogicalPlan(query); - } - - public MasterPlan buildMasterPlan(LogicalPlan plan) throws IOException, PlanningException { - return util.buildMasterPlan(plan); - } - - public TajoPlanTestingUtility getUtilility() { - return util; - } - - public void tearDown() throws IOException { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - util.shutdown(); - } -} diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index ea1a3f8b90..ddeec46241 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -26,12 +26,9 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.SessionVars; import org.apache.tajo.algebra.JoinType; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Column; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.plan.expr.AlgebraicUtil; -import org.apache.tajo.plan.expr.BinaryEval; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.expr.EvalTreeUtil; import org.apache.tajo.plan.joinorder.*; @@ -45,7 +42,9 @@ import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; -import java.util.*; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.Stack; import static org.apache.tajo.plan.LogicalPlan.BlockEdge; import static org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm.getCost; @@ -113,7 +112,6 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding relations and filter expressions JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); -// addJoinEdgesFromQuals(block, joinGraphContext); // finding join order and restore remain filter order FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); @@ -154,7 +152,6 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni newJoinNode.setTargets(targets.toArray(new Target[targets.size()])); } PlannerUtil.replaceNode(plan, block.getRoot(), old, newNode); -// PlannerUtil.replaceNode(plan, block.getRoot(), old, newJoinNode); // End of replacement logic String optimizedOrder = JoinOrderStringBuilder.buildJoinOrderString(plan, block); @@ -163,118 +160,6 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } } -// private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context) -// throws PlanningException { -// Map relationNodeMap = TUtil.newHashMap(); -// for (RelationNode relationNode : block.getRelations()) { -// relationNodeMap.put(relationNode.getCanonicalName(), relationNode); -// } -// addJoinEdgesFromQuals(block, context, context.getJoinGraph(), -// new HashSet(context.getCandidateJoinConditions()), relationNodeMap); -// addJoinEdgesFromQuals(block, context, context.getJoinGraph(), -// new HashSet(context.getCandidateJoinFilters()), relationNodeMap); -// } - -// private void addJoinEdgesFromQuals(LogicalPlan.QueryBlock block, JoinGraphContext context, JoinGraph graph, -// Set quals, Map relationNodeMap) -// throws PlanningException { -// for (EvalNode condition : quals) { -// if (EvalTreeUtil.isJoinQual(condition, false)) { -// String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) condition); -// String leftExprRelName = relations[0]; -// String rightExprRelName = relations[1]; -// RelationVertex left = null, right = null; -// if (relationNodeMap.containsKey(leftExprRelName)) { -// left = new RelationVertex(relationNodeMap.get(leftExprRelName)); -// } -// if (relationNodeMap.containsKey(rightExprRelName)) { -// right = new RelationVertex(relationNodeMap.get(rightExprRelName)); -// } -// if (left != null && right != null) { -// JoinEdge edge = graph.getEdge(left, right); -// if (edge == null) { -// // check if they are connectable -// Set leftInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, left); -// Set rightInterchangeables = JoinOrderingUtil.getAllInterchangeableVertexes(context, right); -// for (JoinVertex leftInterchangeable : leftInterchangeables) { -// for (JoinVertex rightInterchangeable : rightInterchangeables) { -// if (graph.getEdge(leftInterchangeable, rightInterchangeable) != null) { -// // If a join is an implicit join, its type is assumed as the INNER join -// edge = graph.addJoin(context, new JoinSpec(JoinType.INNER), left, right); -// edge.addJoinQual(condition); -// } -// } -// } -// } else { -// if (edge.getJoinType() == JoinType.CROSS) { -// edge.getJoinSpec().setType(JoinType.INNER); -// } -// edge.addJoinQual(condition); -// } -// -// if (edge != null && PlannerUtil.isCommutativeJoin(edge.getJoinType())) { -// graph.addJoin(context, edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); -// } -// } -// } -// } -// } - - private String [] guessRelationsFromJoinQual(LogicalPlan.QueryBlock block, BinaryEval joinCondition) - throws PlanningException { - - // Note that we can guarantee that each join qual used here is a singleton. - // This is because we use dissect a join qual into conjunctive normal forms. - // In other words, each join qual has a form 'col1 = col2'. - Column leftExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getLeftExpr()).get(0); - Column rightExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getRightExpr()).get(0); - - // 0 - left table, 1 - right table - String [] relationNames = new String[2]; - NamedExprsManager namedExprsMgr = block.getNamedExprsManager(); - if (leftExpr.hasQualifier()) { - relationNames[0] = leftExpr.getQualifier(); - } else { - if (namedExprsMgr.isAliasedName(leftExpr.getSimpleName())) { - String columnName = namedExprsMgr.getOriginalName(leftExpr.getSimpleName()); - String qualifier = CatalogUtil.extractQualifier(columnName); - relationNames[0] = qualifier; - } else { - // search for a relation which evaluates a right term included in a join condition - for (RelationNode rel : block.getRelations()) { - if (rel.getOutSchema().contains(leftExpr)) { - String qualifier = rel.getCanonicalName(); - relationNames[0] = qualifier; - } - } - if (relationNames[0] == null) { // if not found - throw new PlanningException("Cannot expect a referenced relation: " + leftExpr); - } - } - } - if (rightExpr.hasQualifier()) { - relationNames[1] = rightExpr.getQualifier(); - } else { - if (namedExprsMgr.isAliasedName(rightExpr.getSimpleName())) { - String columnName = namedExprsMgr.getOriginalName(rightExpr.getSimpleName()); - String qualifier = CatalogUtil.extractQualifier(columnName); - relationNames[1] = qualifier; - } else { - // search for a relation which evaluates a right term included in a join condition - for (RelationNode rel : block.getRelations()) { - if (rel.getOutSchema().contains(rightExpr)) { - String qualifier = rel.getCanonicalName(); - relationNames[1] = qualifier; - } - } - if (relationNames[1] == null) { // if not found - throw new PlanningException("Cannot expect a referenced relation: " + rightExpr); - } - } - } - return relationNames; - } - private static class JoinTargetCollector extends BasicLogicalPlanVisitor, LogicalNode> { @Override public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode node, @@ -305,7 +190,6 @@ private static class JoinGraphBuilder extends BasicLogicalPlanVisitor edges, * Find the best join pair among all joinable operators in candidate set. * * @param context - * @param joinGraph a join graph which consists of vertices and edges, where vertex is relation and - * each edge is join condition. + * @param graphContext a join graph which consists of vertices and edges, where vertex is relation and + * each edge is join condition. * @param vertexes candidate operators to be joined. * @return The best join pair among them * @throws PlanningException @@ -267,104 +268,8 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } // not found return null; -// } } -// private static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { -// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( -// context.getCandidateJoinConditions(), edge, true); -// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( -// context.getCandidateJoinFilters(), edge, false)); -//// context.getCandidateJoinConditions().removeAll(additionalPredicates); -//// context.getCandidateJoinFilters().removeAll(additionalPredicates); -//// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); -// edge.addJoinPredicates(additionalPredicates); -// return edge; -// } -// -// /** -// * Find all edges that are associative with the given edge. -// * -// * @param context -// * @param edge -// * @return -// */ -// private static Set getAllAssociativeEdges(LogicalPlan plan, JoinGraphContext context, JoinEdge edge) { -// Set associativeEdges = TUtil.newHashSet(); -// JoinVertex start = edge.getRightVertex(); -// List candidateEdges = context.getJoinGraph().getOutgoingEdges(start); -// if (candidateEdges != null) { -// for (JoinEdge candidateEdge : candidateEdges) { -// candidateEdge = updateQualIfNecessary(context, candidateEdge); -// if (!isEqualsOrSymmetric(edge, candidateEdge) && -// JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { -// associativeEdges.add(candidateEdge); -// } -// } -// } -// return associativeEdges; -// } -// -// private static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { -// if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { -// return true; -// } -// return false; -// } -// -// private static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { -// if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && -// edge1.getRightVertex().equals(edge2.getLeftVertex()) && -// edge1.getJoinSpec().equals(edge2.getJoinSpec()) && -// PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { -// return true; -// } -// return false; -// } -// -// private static Set getAllInterchangeableVertexes(LogicalPlan plan, JoinGraphContext context, JoinVertex from) { -// Set founds = TUtil.newHashSet(); -// getAllInterchangeableVertexes(founds, plan, context, from); -// return founds; -// } -// -// private static void getAllInterchangeableVertexes(Set founds, LogicalPlan plan, JoinGraphContext context, -// JoinVertex vertex) { -// founds.add(vertex); -// Set foundAtThis = TUtil.newHashSet(); -// List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); -// if (candidateEdges != null) { -// for (JoinEdge candidateEdge : candidateEdges) { -// candidateEdge = updateQualIfNecessary(context, candidateEdge); -// if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) -// && !founds.contains(candidateEdge.getRightVertex())) { -// List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); -// boolean reacheable = true; -// if (rightEdgesOfCandidate != null) { -// for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { -// rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); -//// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { -// if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && -// !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { -// reacheable = false; -// break; -// } -// } -// } -// if (reacheable) { -// foundAtThis.add(candidateEdge.getRightVertex()); -// } -// } -// } -// if (foundAtThis.size() > 0) { -//// founds.addAll(foundAtThis); -// for (JoinVertex v : foundAtThis) { -// getAllInterchangeableVertexes(founds, plan, context, v); -// } -// } -// } -// } - /** * Getting a cost of one join * @param joinEdge @@ -377,32 +282,24 @@ public static double getCost(JoinEdge joinEdge) { // TODO - should consider join type // TODO - should statistic information obtained from query history filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); -// return getCost(joinEdge.getLeftVertex()) * -// getCost(joinEdge.getRightVertex()) * filterFactor; cost = getCost(joinEdge.getLeftVertex()) * getCost(joinEdge.getRightVertex()) * filterFactor; } else { // make cost bigger if cross join -// return Math.pow(getCost(joinEdge.getLeftVertex()) * -// getCost(joinEdge.getRightVertex()), 2); cost = Math.pow(getCost(joinEdge.getLeftVertex()) * getCost(joinEdge.getRightVertex()), 2); } - LOG.info("cost of " + joinEdge + " : " + cost); return cost; } public static double getCost(JoinVertex joinVertex) { double cost; if (joinVertex instanceof RelationVertex) { -// return getCost(((RelationVertex) joinVertex).getRelationNode()); cost = getCost(((RelationVertex) joinVertex).getRelationNode()); } else { -// return getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); cost = getCost(((JoinedRelationsVertex)joinVertex).getJoinEdge()); } - LOG.info("cost of " + joinVertex + " : " + cost); return cost; } @@ -413,7 +310,6 @@ public static double getCost(LogicalNode node) { case PROJECTION: ProjectionNode projectionNode = (ProjectionNode) node; -// return getCost(projectionNode.getChild()); cost = getCost(projectionNode.getChild()); break; @@ -423,25 +319,20 @@ public static double getCost(LogicalNode node) { if (joinNode.hasJoinQual()) { filterFactor = Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual()).length); -// return getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()) * filterFactor; cost = getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()) * filterFactor; } else { -// return Math.pow(getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()), 2); cost = Math.pow(getCost(joinNode.getLeftChild()) * getCost(joinNode.getRightChild()), 2); } break; case SELECTION: SelectionNode selectionNode = (SelectionNode) node; -// return getCost(selectionNode.getChild()) * -// Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(selectionNode.getQual()).length); cost = getCost(selectionNode.getChild()) * Math.pow(DEFAULT_SELECTION_FACTOR, AlgebraicUtil.toConjunctiveNormalFormArray(selectionNode.getQual()).length); break; case TABLE_SUBQUERY: TableSubQueryNode subQueryNode = (TableSubQueryNode) node; -// return getCost(subQueryNode.getSubQuery()); cost = getCost(subQueryNode.getSubQuery()); break; @@ -449,16 +340,13 @@ public static double getCost(LogicalNode node) { ScanNode scanNode = (ScanNode) node; if (scanNode.getTableDesc().getStats() != null) { cost = ((ScanNode)node).getTableDesc().getStats().getNumBytes(); -// return cost; } else { -// return Long.MAX_VALUE; cost = Long.MAX_VALUE; } break; case UNION: UnionNode unionNode = (UnionNode) node; -// return getCost(unionNode.getLeftChild()) + getCost(unionNode.getRightChild()); cost = getCost(unionNode.getLeftChild()) + getCost(unionNode.getRightChild()); break; @@ -469,12 +357,10 @@ public static double getCost(LogicalNode node) { default: // all binary operators (join, union, except, and intersect) are handled in the above cases. // So, we need to handle only unary nodes in default. -// return getCost(((UnaryNode) node).getChild()); cost = getCost(((UnaryNode) node).getChild()); break; } - LOG.info("cost of " + node + " : " + cost); return cost; } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java index 7f5d547917..d44d3da63e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinEdge.java @@ -22,7 +22,6 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.logical.JoinNode; import org.apache.tajo.plan.logical.JoinSpec; import org.apache.tajo.util.TUtil; @@ -33,16 +32,12 @@ public class JoinEdge { private final JoinVertex leftVertex; private final JoinVertex rightVertex; private final Schema schema; -// private final JoinNode correspondingJoinNode; -// public JoinEdge(JoinNode joinNode, JoinVertex leftVertex, JoinVertex rightVertex) { public JoinEdge(JoinSpec joinSpec, JoinVertex leftVertex, JoinVertex rightVertex) { -// this.joinSpec = joinNode.getJoinSpec(); this.joinSpec = joinSpec; this.leftVertex = leftVertex; this.rightVertex = rightVertex; this.schema = SchemaUtil.merge(leftVertex.getSchema(), rightVertex.getSchema()); -// this.correspondingJoinNode = joinNode; } public JoinType getJoinType() { @@ -89,8 +84,4 @@ public JoinVertex getRightVertex() { public Schema getSchema() { return schema; } - -// public JoinNode getCorrespondingJoinNode() { -// return correspondingJoinNode; -// } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 1caacc9deb..6ce30745ed 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -26,77 +26,10 @@ * A join graph must be the connected graph */ public class JoinGraph extends SimpleUndirectedGraph { -// -// private final JoinGraphContext context; -// -// public JoinGraph(JoinGraphContext context) { -// this.context = context; -// this.context.setJoinGraph(this); -// } public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex left, JoinVertex right) throws PlanningException { JoinEdge edge = context.getCachedOrNewJoinEdge(joinSpec, left, right); this.addEdge(left, right, edge); return edge; } - -// private JoinEdge updateJoinPredicates(JoinEdge edge) { -// if (edge != null) { -// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( -// context.getCandidateJoinConditions(), edge, true); -// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( -// context.getCandidateJoinFilters(), edge, false)); -// context.removeCandidateJoinConditions(additionalPredicates); -// context.removeCandidateJoinFilters(additionalPredicates); -// return JoinOrderingUtil.addPredicates(edge, additionalPredicates); -// } -// return null; -// } -// -// @Override -// public JoinEdge getEdge(JoinVertex tail, JoinVertex head) { -// return updateJoinPredicates(super.getEdge(tail, head)); -// } -// -// @Override -// public List getIncomingEdges(JoinVertex vertex) { -// List edges = super.getIncomingEdges(vertex); -// if (edges != null) { -// for (JoinEdge edge : edges) { -// updateJoinPredicates(edge); -// } -// } -// return edges; -// } -// -// @Override -// public List getOutgoingEdges(JoinVertex vertex) { -// List edges = super.getOutgoingEdges(vertex); -// if (edges != null) { -// for (JoinEdge edge : edges) { -// updateJoinPredicates(edge); -// } -// } -// return edges; -// } -// -// @Override -// public Collection getEdgesAll() { -// Collection edges = super.getEdgesAll(); -// if (edges != null) { -// for (JoinEdge edge : edges) { -// updateJoinPredicates(edge); -// } -// } -// return edges; -// } -// -// @Override -// public JoinEdge getReverseEdge(JoinVertex head, JoinVertex tail) { -// return updateJoinPredicates(super.getReverseEdge(head, tail)); -// } -// -// public JoinGraphContext getContext() { -// return context; -// } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 562f530a61..aa0c8ff00e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -25,7 +25,10 @@ import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.expr.EvalTreeUtil; import org.apache.tajo.plan.expr.EvalType; -import org.apache.tajo.plan.logical.*; +import org.apache.tajo.plan.logical.JoinNode; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.NodeType; +import org.apache.tajo.plan.logical.RelationNode; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@ -76,37 +79,6 @@ public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { return edge; } -// public static JoinNode createJoinNode(LogicalPlan plan, JoinType joinType, JoinVertex left, JoinVertex right, -// @Nullable EvalNode predicates) { -// LogicalNode leftChild = left.getCorrespondingNode(); -// LogicalNode rightChild = right.getCorrespondingNode(); -// -// JoinNode joinNode = plan.createNode(JoinNode.class); -// -// if (PlannerUtil.isCommutativeJoin(joinType)) { -// // if only one operator is relation -// if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { -// // for left deep -// joinNode.init(joinType, rightChild, leftChild); -// } else { -// // if both operators are relation or if both are relations -// // we don't need to concern the left-right position. -// joinNode.init(joinType, leftChild, rightChild); -// } -// } else { -// joinNode.init(joinType, leftChild, rightChild); -// } -// -// Schema mergedSchema = SchemaUtil.merge(joinNode.getLeftChild().getOutSchema(), -// joinNode.getRightChild().getOutSchema()); -// joinNode.setInSchema(mergedSchema); -// joinNode.setOutSchema(mergedSchema); -// if (predicates != null) { -// joinNode.setJoinQual(predicates); -// } -// return joinNode; -// } - public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftEdge, JoinEdge rightEdge) { if (isAssociativeJoinType(leftEdge.getJoinType(), rightEdge.getJoinType())) { // TODO: consider when a join qual involves columns from two or more tables @@ -192,16 +164,6 @@ public static boolean isAssociativeJoinType(JoinType leftType, JoinType rightTyp return false; } - - public static Set findRelationVertexes(LogicalPlan plan, LogicalPlan.QueryBlock block, - LogicalNode from) throws PlanningException { - RelationNodeFinderContext context = new RelationNodeFinderContext(); - context.findMostLeft = context.findMostRight = true; - RelationNodeFinder finder = new RelationNodeFinder(); - finder.visit(context, plan, block, from, new Stack()); - return context.founds; - } - public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) throws PlanningException { RelationNodeFinderContext context = new RelationNodeFinderContext(); @@ -279,7 +241,6 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra if (rightEdgesOfCandidate != null) { for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); -// if (!PlannerUtil.isCommutativeJoin(rightEdgeOfCandidate.getJoinType())) { if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { reacheable = false; @@ -293,7 +254,6 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra } } if (foundAtThis.size() > 0) { -// founds.addAll(foundAtThis); for (JoinVertex v : foundAtThis) { getAllInterchangeableVertexes(founds, context, v); } @@ -323,8 +283,6 @@ public static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge context.getCandidateJoinConditions(), edge, true); additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( context.getCandidateJoinFilters(), edge, false)); -// context.getCandidateJoinConditions().removeAll(additionalPredicates); -// context.getCandidateJoinFilters().removeAll(additionalPredicates); edge.addJoinPredicates(additionalPredicates); return edge; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java index 81040bb2b5..328b474009 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinVertex.java @@ -27,7 +27,6 @@ public interface JoinVertex { Schema getSchema(); -// LogicalNode getCorrespondingNode(); Set getRelations(); LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java index b55f2e8ea1..a7e3a4fb16 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/RelationVertex.java @@ -31,10 +31,8 @@ public class RelationVertex implements JoinVertex{ private final RelationNode relationNode; private final LogicalNode topLogicalNode; -// public RelationVertex(LogicalNode topLogicalNode, RelationNode relationNode) { public RelationVertex(RelationNode relationNode) { this.relationNode = relationNode; -// this.topLogicalNode = topLogicalNode; this.topLogicalNode = relationNode; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java index 6750905c6e..1613118c62 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java @@ -22,12 +22,11 @@ package org.apache.tajo.plan.logical; import com.google.gson.annotations.Expose; - import org.apache.tajo.algebra.JoinType; import org.apache.tajo.plan.PlanString; -import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.EvalNode; +import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.util.TUtil; import java.util.ArrayList; @@ -35,8 +34,6 @@ import java.util.List; public class JoinNode extends BinaryNode implements Projectable, Cloneable { -// @Expose private JoinType joinType; -// @Expose private EvalNode joinQual; @Expose private JoinSpec joinSpec = new JoinSpec(); @Expose private Target[] targets; @@ -136,8 +133,6 @@ public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (candidateBroadcast ? 1231 : 1237); -// result = prime * result + ((joinQual == null) ? 0 : joinQual.hashCode()); -// result = prime * result + ((joinType == null) ? 0 : joinType.hashCode()); result = prime * result + joinSpec.hashCode(); result = prime * result + Arrays.hashCode(targets); return result; @@ -158,8 +153,6 @@ public boolean equals(Object obj) { @Override public Object clone() throws CloneNotSupportedException { JoinNode join = (JoinNode) super.clone(); -// join.joinType = this.joinType; -// join.joinQual = this.joinQual == null ? null : (BinaryEval) this.joinQual.clone(); join.joinSpec = (JoinSpec) this.joinSpec.clone(); if (hasTargets()) { join.targets = new Target[targets.length]; From 8f290b8d731a3c71b9e1be720d5c6e405be56bce Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 15:49:40 +0900 Subject: [PATCH 28/43] TAJO-1352_4 --- .../results/TestJoinQuery/testWhereClauseJoin6.result | 5 +++++ .../plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 tajo-core/src/test/resources/results/TestJoinQuery/testWhereClauseJoin6.result diff --git a/tajo-core/src/test/resources/results/TestJoinQuery/testWhereClauseJoin6.result b/tajo-core/src/test/resources/results/TestJoinQuery/testWhereClauseJoin6.result new file mode 100644 index 0000000000..37a6d1e0ea --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinQuery/testWhereClauseJoin6.result @@ -0,0 +1,5 @@ +s_acctbal,s_name,p_partkey,n_name +------------------------------- +4032.68,Supplier#000000002,1,ETHIOPIA +4192.4,Supplier#000000003,2,ARGENTINA +4641.08,Supplier#000000004,3,MOROCCO \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 380853ce51..fedfb4d38a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -142,9 +142,9 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra double minNonCrossJoinCost = Double.MAX_VALUE; JoinEdge bestNonCrossJoin = null; - LOG.info("outer"); + LOG.info("vertexes"); for (JoinVertex vertex : vertexes) { - + LOG.info(vertex); } for (JoinVertex outer : vertexes) { From 9d3f4d92cc519d95f8113efeed65b7d660866fa4 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 16:17:59 +0900 Subject: [PATCH 29/43] TAJO-1352_4 --- .../plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index fedfb4d38a..a5b24076e8 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -142,11 +142,6 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra double minNonCrossJoinCost = Double.MAX_VALUE; JoinEdge bestNonCrossJoin = null; - LOG.info("vertexes"); - for (JoinVertex vertex : vertexes) { - LOG.info(vertex); - } - for (JoinVertex outer : vertexes) { for (JoinVertex inner : vertexes) { if (outer.equals(inner)) { From 8bb3729b295f03e9cc9dcb100a905abbc881d92c Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Wed, 15 Apr 2015 19:08:03 +0900 Subject: [PATCH 30/43] TAJO-1352_4 --- tajo-core/pom.xml | 1 - .../apache/tajo/master/exec/DDLExecutor.java | 9 +- .../exec/ExplainPlanPreprocessorForTest.java | 22 ++-- .../tajo/engine/query/TestJoinQuery.java | 10 +- .../testJoinOnMultipleDatabases.result | 120 +++++++++--------- .../apache/tajo/plan/LogicalOptimizer.java | 48 ++++--- .../GreedyHeuristicJoinOrderAlgorithm.java | 37 ++++-- .../tajo/plan/joinorder/JoinGraphContext.java | 6 +- .../tajo/plan/joinorder/JoinOrderingUtil.java | 56 ++++++-- 9 files changed, 186 insertions(+), 123 deletions(-) diff --git a/tajo-core/pom.xml b/tajo-core/pom.xml index 596b7f3290..ed92aba003 100644 --- a/tajo-core/pom.xml +++ b/tajo-core/pom.xml @@ -77,7 +77,6 @@ src/test/tpch/** src/test/resources/dataset/** src/test/resources/queries/** - src/test/resources/plans/** src/test/resources/results/** src/main/resources/META-INF/services/* src/main/resources/webapps/static/js/* diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java index 022bf44769..ab9c48438b 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java @@ -18,7 +18,6 @@ package org.apache.tajo.master.exec; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,12 +60,6 @@ public DDLExecutor(TajoMaster.MasterContext context) { this.catalog = context.getCatalog(); } - @VisibleForTesting - public DDLExecutor(CatalogService catalog) { - this.catalog = catalog; - this.context = null; - } - public boolean execute(QueryContext queryContext, LogicalPlan plan) throws IOException { LogicalNode root = ((LogicalRootNode) plan.getRootBlock().getRoot()).getChild(); @@ -217,7 +210,7 @@ private TableDesc createTable(QueryContext queryContext, CreateTableNode createT public TableDesc createTable(QueryContext queryContext, String tableName, CatalogProtos.StoreType storeType, Schema schema, TableMeta meta, Path path, boolean isExternal, - @Nullable PartitionMethodDesc partitionDesc, boolean ifNotExists) throws IOException { + PartitionMethodDesc partitionDesc, boolean ifNotExists) throws IOException { String databaseName; String simpleTableName; if (CatalogUtil.isFQTableName(tableName)) { diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index db93781ef4..60701449c2 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -38,7 +38,7 @@ /** * Tajo's logical planner can generate different shapes of logical plans for the same query, * especially when the query involves one or more joins. - * This class guarantees the consistency of the logical plan for the same query. + * This class guarantees the plans' shape determinant. */ public class ExplainPlanPreprocessorForTest { private static final PlanShapeFixerContext shapeFixerContext = new PlanShapeFixerContext(); @@ -53,11 +53,14 @@ public void prepareTest(LogicalPlan plan) throws PlanningException { shapeFixerContext.reset(); shapeFixer.visit(shapeFixerContext, plan, plan.getRootBlock()); - // Pid collector + /* + * During join order optimization, new join nodes are created based on the chosen join order. + * So, they have different pids for each query execution. + * JoinPidCollector and JoinPidReseter reset the pids of join nodes. + */ collectorContext.reset(); joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); - // Pid resetter resetContext.reset(collectorContext.joinPids); joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); } @@ -72,7 +75,7 @@ public void reset() { /** * Given a commutative join, two children of the join node are interchangeable. - * This class fix the logical plan according to the following rules. + * This class change the logical plan according to the following rules. * *

Rules

*
    @@ -95,7 +98,7 @@ public LogicalNode visit(PlanShapeFixerContext context, LogicalPlan plan, Logica super.visit(context, plan, block, node, stack); node.setInSchema(sortSchema(node.getInSchema())); node.setOutSchema(sortSchema(node.getOutSchema())); - context.childNumbers.push(context.childNumbers.pop()+1); + context.childNumbers.push(context.childNumbers.pop() + 1); return null; } @@ -216,9 +219,8 @@ public void reset() { } /** - * During join order optimization, new join nodes are created based on the chosen join order. - * So, they have different pids for each query execution. - * This class sequentially assigns unique pids to all logical nodes. + * {@link JoinPidCollector} collects the pids of all join + * nodes. */ private static class JoinPidCollector extends BasicLogicalPlanVisitor { @@ -241,6 +243,10 @@ public void reset(List joinPids) { } } + /** + * {@link JoinPidReseter} resets pids of join nodes with the pids collected by {@link JoinPidCollector} in ascending + * order while traversing the query plan. + */ private static class JoinPidReseter extends BasicLogicalPlanVisitor { @Override diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 190d444ba2..f517870147 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -681,11 +681,11 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { try { ResultSet res = executeString( "select t1.id, t1.name, t2.id, t3.id, t4.id\n" + - "from table12 t2\n" + + "from table11 t1\n" + + "left outer join table12 t2\n" + + "on t1.id = t2.id\n" + "left outer join table13 t3\n" + "on t2.id = t3.id\n" + - "left outer join table11 t1\n" + - "on t3.id = t1.id\n" + "inner join table14 t4\n" + "on t2.id = t4.id" ); @@ -693,7 +693,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { String expected = "id,name,id,id,id\n" + "-------------------------------\n" + - "null,null,1,null,1\n"; + "1,table11-1,1,null,1\n"; String result = resultSetToString(res); @@ -998,7 +998,7 @@ public final void testFullOuterJoinPredicationCaseByCase1() throws Exception { } } - private void createOuterJoinTestTable() throws Exception { + private void createOuterJoinTestTable() throws Exception { KeyValueSet tableOptions = new KeyValueSet(); tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); diff --git a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result index 9178c7ee58..c71f984375 100644 --- a/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result +++ b/tajo-core/src/test/resources/results/TestJoinOrderOptimize/testJoinOnMultipleDatabases.result @@ -35,7 +35,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) @@ -47,32 +47,32 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} @@ -82,90 +82,90 @@ Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) JOIN(15)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(4) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) @@ -173,16 +173,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(3) default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(24) on eb_0000000000000_0000_000005 - => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index ddeec46241..195662445c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -118,26 +118,8 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // replace join node with FoundJoinOrder. JoinNode newJoinNode = order.getOrderedJoin(); - LogicalNode newNode = newJoinNode; - - if (!joinGraphContext.getCandidateJoinFilters().isEmpty()) { - Set remainings = joinGraphContext.getCandidateJoinFilters(); - LogicalNode topParent = PlannerUtil.findTopParentNode(block.getRoot(), NodeType.JOIN); - if (topParent.getType() == NodeType.SELECTION) { - SelectionNode topParentSelect = (SelectionNode) topParent; - Set filters = TUtil.newHashSet(); - filters.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(topParentSelect.getQual()))); - filters.addAll(remainings); - topParentSelect.setQual(AlgebraicUtil.createSingletonExprFromCNF( - filters.toArray(new EvalNode[filters.size()]))); - } else { - SelectionNode newSelection = plan.createNode(SelectionNode.class); - newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( - remainings.toArray(new EvalNode[remainings.size()]))); - newSelection.setChild(newJoinNode); - newNode = newSelection; - } - } + LogicalNode newNode = handleRemainingFiltersIfNecessary(joinGraphContext, plan, block, newJoinNode); + JoinNode old = PlannerUtil.findTopNode(block.getRoot(), NodeType.JOIN); // TODO: collect all join predicates and set them at the top join node (?) @@ -160,6 +142,32 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni } } + private static LogicalNode handleRemainingFiltersIfNecessary(JoinGraphContext joinGraphContext, + LogicalPlan plan, + LogicalPlan.QueryBlock block, + JoinNode newJoinNode) { + if (!joinGraphContext.getCandidateJoinFilters().isEmpty()) { + Set remainings = joinGraphContext.getCandidateJoinFilters(); + LogicalNode topParent = PlannerUtil.findTopParentNode(block.getRoot(), NodeType.JOIN); + if (topParent.getType() == NodeType.SELECTION) { + SelectionNode topParentSelect = (SelectionNode) topParent; + Set filters = TUtil.newHashSet(); + filters.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(topParentSelect.getQual()))); + filters.addAll(remainings); + topParentSelect.setQual(AlgebraicUtil.createSingletonExprFromCNF( + filters.toArray(new EvalNode[filters.size()]))); + return newJoinNode; + } else { + SelectionNode newSelection = plan.createNode(SelectionNode.class); + newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( + remainings.toArray(new EvalNode[remainings.size()]))); + newSelection.setChild(newJoinNode); + return newSelection; + } + } + return newJoinNode; + } + private static class JoinTargetCollector extends BasicLogicalPlanVisitor, LogicalNode> { @Override public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode node, diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index a5b24076e8..2ea0735a44 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -56,6 +56,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); + // Update most left vertex if the previous most left vertex is merged into a new vertex if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) || (PlannerUtil.isCommutativeJoin(bestPair.getJoinType()) && bestPair.getRightVertex().equals(graphContext.getMostLeftVertex()))) { @@ -65,6 +66,17 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo Set willBeRemoved = TUtil.newHashSet(); Set willBeAdded = TUtil.newHashSet(); + /* + * Once a best pair is chosen, some existing join edges should be removed and new join edges should be added. + * + * There can be some join edges which are equal to or symmetric with the best pair. + * They cannot be chosen anymore, and thus should be removed from the join graph. + * + * The chosen best pair will be regarded as a join vertex again. + * So, the join edges which share any vertexes with the best pair should be updated, too. + */ + + // Find every join edges which should be updated. prepareGraphUpdate(graphContext, joinGraph, bestPair, newVertex, willBeAdded, willBeRemoved); for (JoinEdge edge : willBeRemoved) { @@ -78,6 +90,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo graphContext.removeCandidateJoinFilters(edge.getJoinQual()); } + // Join quals involved by the best pair should be removed. graphContext.removeCandidateJoinConditions(bestPair.getJoinQual()); graphContext.removeCandidateJoinFilters(bestPair.getJoinQual()); @@ -151,14 +164,16 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra context.reset(); JoinEdge foundJoin = findJoin(context, graphContext, graphContext.getMostLeftVertex(), outer, inner); if (foundJoin == null) { - LOG.error("Join between (" + outer + ", " + inner + ") is not found."); continue; } - Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( - graphContext.getCandidateJoinConditions(), foundJoin, true); - additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( - graphContext.getCandidateJoinFilters(), foundJoin, false)); - foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); + // The found join edge may not have join quals even though they can be evaluated during join. + // So, possible join quals should be added to the join node before estimating its cost. +// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( +// graphContext.getCandidateJoinConditions(), foundJoin, true); +// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( +// graphContext.getCandidateJoinFilters(), foundJoin, false)); +// foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); + JoinOrderingUtil.updateQualIfNecessary(graphContext, foundJoin); double cost = getCost(foundJoin); if (cost < minCost) { @@ -200,9 +215,15 @@ public void reset() { } /** - * Find a join between two logical operator trees + * Find a join edge between two join vertexes. * - * @return If there is no join condition between two relation, it returns NULL value. + * @param context context for edge finder + * @param graphContext graph context + * @param begin begin vertex to traverse the join graph + * @param leftTarget left target join vertex + * @param rightTarget right target join vertex + * @return If there is no join edge between two vertexes, it returns null. + * @throws PlanningException */ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraphContext graphContext, JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 2656d717d4..27e6a57c8a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -28,10 +28,12 @@ import java.util.Set; public class JoinGraphContext { - private JoinVertex mostLeftVertex; + private JoinVertex mostLeftVertex; // most left vertex in the join plan private JoinGraph joinGraph = new JoinGraph(); + // New join edges are frequently created during join order optimization. + // This cache is to reduce the overhead of join edge creation. private Map, JoinEdge> edgeCache = TUtil.newHashMap(); - private Pair cacheKey = new Pair(); + private Pair cacheKey = new Pair(); // Join private Set candidateJoinConditions = TUtil.newHashSet(); // predicates from the on clause private Set candidateJoinFilters = TUtil.newHashSet(); // predicates from the where clause diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index aa0c8ff00e..0d43cbd284 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -81,8 +81,10 @@ public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftEdge, JoinEdge rightEdge) { if (isAssociativeJoinType(leftEdge.getJoinType(), rightEdge.getJoinType())) { - // TODO: consider when a join qual involves columns from two or more tables - // create a temporal left-deep join node + // There will be more quals which can be evaluated at input edges. + // In this case, the input edges are not associative to evaluate quals at proper join edges. + + // Create a temporal left-deep join node to find the potentially evaluatable quals. JoinedRelationsVertex tempLeftChild = new JoinedRelationsVertex(leftEdge); JoinEdge tempEdge = context.getCachedOrNewJoinEdge(rightEdge.getJoinSpec(), tempLeftChild, rightEdge.getRightVertex()); @@ -101,7 +103,9 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE } /** - * Associativity rules + * Check two join types are associative according to the following rule. + * + *

    Associativity rules

    * * ============================================================== * Left-Hand Bracketed | Right-Hand Bracketed | Equivalence @@ -123,6 +127,10 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE * (A right B) full C | A right (B full C) | Equivalent * (A full B) full C | A full (B full C) | Equivalent * ============================================================== + * + * @param leftType + * @param rightType + * @return true if two join types are associative. */ public static boolean isAssociativeJoinType(JoinType leftType, JoinType rightType) { if (leftType == rightType) { @@ -164,8 +172,16 @@ public static boolean isAssociativeJoinType(JoinType leftType, JoinType rightTyp return false; } - public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, - LogicalNode from) throws PlanningException { + /** + * Find the most left relation node in the join tree. + * @param plan + * @param block + * @param from + * @return + * @throws PlanningException + */ + public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) + throws PlanningException { RelationNodeFinderContext context = new RelationNodeFinderContext(); context.findMostLeft = true; RelationNodeFinder finder = new RelationNodeFinder(); @@ -173,8 +189,16 @@ public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.Qu return context.founds.isEmpty() ? null : context.founds.iterator().next(); } - public static RelationNode findMostRightRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, - LogicalNode from) throws PlanningException { + /** + * Find the most right relation node in the join tree. + * @param plan + * @param block + * @param from + * @return + * @throws PlanningException + */ + public static RelationNode findMostRightRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) + throws PlanningException { RelationNodeFinderContext context = new RelationNodeFinderContext(); context.findMostRight = true; RelationNodeFinder finder = new RelationNodeFinder(); @@ -220,26 +244,36 @@ public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan } } + /** + * Find all interchangeable vertexes from the given vertex. + * A vertex is interchangeable with the given vertex if they are reachable. + * + * @param context + * @param from + * @return + */ public static Set getAllInterchangeableVertexes(JoinGraphContext context, JoinVertex from) { Set founds = TUtil.newHashSet(); getAllInterchangeableVertexes(founds, context, from); return founds; } - public static void getAllInterchangeableVertexes(Set founds, JoinGraphContext context, - JoinVertex vertex) { + public static void getAllInterchangeableVertexes(Set founds, JoinGraphContext context, JoinVertex vertex) { founds.add(vertex); Set foundAtThis = TUtil.newHashSet(); List candidateEdges = context.getJoinGraph().getOutgoingEdges(vertex); if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { + // Evaluatable quals must be added to check the associativity of join edges. candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) - && !founds.contains(candidateEdge.getRightVertex())) { +// if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) +// && !founds.contains(candidateEdge.getRightVertex())) { + if (founds.contains(candidateEdge.getRightVertex())) { List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); boolean reacheable = true; if (rightEdgesOfCandidate != null) { for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { + // Evaluatable quals must be added to check the associativity of join edges. rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { From 1c34579ad1c098c4317eba5d2fb011a7abd3076c Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 16 Apr 2015 15:11:52 +0900 Subject: [PATCH 31/43] TAJO-1352_4 --- .../planner/global/TestBroadcastJoinPlan.java | 3 - .../tajo/engine/query/TestJoinBroadcast.java | 68 +++++++++---------- 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index 4590325574..04a6eaf822 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -18,9 +18,7 @@ package org.apache.tajo.engine.planner.global; -import junit.framework.Assert; import junit.framework.TestCase; -import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.LocalTajoTestingUtility; @@ -164,7 +162,6 @@ private TableDesc makeTestData(String tableName, Schema schema, int dataSize) th TableDesc tableDesc = CatalogUtil.newTableDesc(tableName, schema, tableMeta, dataPath); TableStats tableStats = new TableStats(); FileSystem fs = dataPath.getFileSystem(conf); - FileStatus fileStatus = fs.getFileStatus(dataPath); tableStats.setNumBytes(fs.getFileStatus(dataPath).getLen()); tableDesc.setStats(tableStats); diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java index 5b51167414..1b67b66b8a 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinBroadcast.java @@ -359,38 +359,38 @@ public final void testBroadcastBasicJoin() throws Exception { assertTrue(firstEB.getBroadcastTables().contains("default.part")); } -// @Test -// public final void testBroadcastTwoPartJoin() throws Exception { -// ResultSet res = executeQuery(); -// assertEquals(FetchResultSet.class, res.getClass()); -// FetchResultSet resultSet = (FetchResultSet)res; -// -// assertResultSet(res); -// cleanupQuery(res); -// -// MasterPlan plan = getQueryPlan(resultSet.getQueryId()); -// ExecutionBlock rootEB = plan.getRoot(); -// -// /* -// |-eb_1395996354406_0001_000010 -// |-eb_1395996354406_0001_000009 -// |-eb_1395996354406_0001_000008 -// |-eb_1395996354406_0001_000005 -// */ -// assertEquals(1, plan.getChildCount(rootEB.getId())); -// -// ExecutionBlock firstJoinEB = plan.getChild(rootEB.getId(), 0); -// assertNotNull(firstJoinEB); -// assertEquals(NodeType.JOIN, firstJoinEB.getPlan().getType()); -// assertEquals(0, firstJoinEB.getBroadcastTables().size()); -// -// ExecutionBlock leafEB1 = plan.getChild(firstJoinEB.getId(), 0); -// assertTrue(leafEB1.getBroadcastTables().contains("default.orders")); -// assertTrue(leafEB1.getBroadcastTables().contains("default.part")); -// -// ExecutionBlock leafEB2 = plan.getChild(firstJoinEB.getId(), 1); -// assertTrue(leafEB2.getBroadcastTables().contains("default.nation")); -// } + @Test + public final void testBroadcastTwoPartJoin() throws Exception { + ResultSet res = executeQuery(); + assertEquals(FetchResultSet.class, res.getClass()); + FetchResultSet resultSet = (FetchResultSet)res; + + assertResultSet(res); + cleanupQuery(res); + + MasterPlan plan = getQueryPlan(resultSet.getQueryId()); + ExecutionBlock rootEB = plan.getRoot(); + + /* + |-eb_1395996354406_0001_000010 + |-eb_1395996354406_0001_000009 + |-eb_1395996354406_0001_000008 + |-eb_1395996354406_0001_000005 + */ + assertEquals(1, plan.getChildCount(rootEB.getId())); + + ExecutionBlock firstJoinEB = plan.getChild(rootEB.getId(), 0); + assertNotNull(firstJoinEB); + assertEquals(NodeType.JOIN, firstJoinEB.getPlan().getType()); + assertEquals(0, firstJoinEB.getBroadcastTables().size()); + + ExecutionBlock leafEB1 = plan.getChild(firstJoinEB.getId(), 0); + assertTrue(leafEB1.getBroadcastTables().contains("default.orders")); + assertTrue(leafEB1.getBroadcastTables().contains("default.part")); + + ExecutionBlock leafEB2 = plan.getChild(firstJoinEB.getId(), 1); + assertTrue(leafEB2.getBroadcastTables().contains("default.nation")); + } @Test public final void testBroadcastSubquery() throws Exception { @@ -534,8 +534,8 @@ public final void testInnerAndOuterWithEmpty() throws Exception { executeString("DROP TABLE customer_broad_parts PURGE").close(); } - static interface TupleCreator { - public Tuple createTuple(String[] columnDatas); + interface TupleCreator { + Tuple createTuple(String[] columnDatas); } private void createMultiFile(String tableName, int numRowsEachFile, TupleCreator tupleCreator) throws Exception { From 6074a9a3b658505a5a5cea9757b80859b9cd5505 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 28 May 2015 15:19:44 +0900 Subject: [PATCH 32/43] TAJO-1352_4 --- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 6 +- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 6 +- ...oinWithThetaJoinConditionInWhere.Hash.plan | 16 +-- ...JoinConditionInWhere.Hash_NoBroadcast.plan | 30 ++--- ...oinWithThetaJoinConditionInWhere.Sort.plan | 16 +-- ...JoinConditionInWhere.Sort_NoBroadcast.plan | 30 ++--- ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 6 +- ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 6 +- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 6 +- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 6 +- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 6 +- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 6 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 125 ++---------------- 13 files changed, 84 insertions(+), 181 deletions(-) diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index 635b6d3306..83c5b57972 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index 635b6d3306..83c5b57972 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan index e3cbb61f7c..27de587124 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan index 6cf1244756..0048ac60e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan index e3cbb61f7c..27de587124 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan index 6cf1244756..0048ac60e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index 860f7aeff5..eed1c7d42d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index 860f7aeff5..eed1c7d42d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index 7ce54c35dd..cbe5b31fb9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index 7ce54c35dd..cbe5b31fb9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index 24ce4fdd08..2053184c74 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index 24ce4fdd08..2053184c74 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 61fc6f563f..1cb1a1a56b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -42,69 +42,8 @@ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { private static final Log LOG = LogFactory.getLog(GreedyHeuristicJoinOrderAlgorithm.class); @Override -//<<<<<<< HEAD public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext graphContext) throws PlanningException { -//======= -// public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraph joinGraph, -// Set relationsWithoutQual) throws PlanningException { -// -// // Setup a remain relation set to be joined -// // Why we should use LinkedHashSet? - it should keep the deterministic for the order of joins. -// // Otherwise, join orders can be different even if join costs are the same to each other. -// Set remainRelations = new LinkedHashSet(); -// for (RelationNode relation : block.getRelations()) { -// remainRelations.add(relation); -// } -// -// LogicalNode latestJoin; -// JoinEdge bestPair; -// -// while (remainRelations.size() > 1) { -// Set checkingRelations = new LinkedHashSet(); -// -// for (LogicalNode relation : remainRelations) { -// Collection relationStrings = PlannerUtil.getRelationLineageWithinQueryBlock(plan, relation); -// List joinEdges = new ArrayList(); -// String relationCollection = StringUtils.join(relationStrings, ","); -// List joinEdgesForGiven = joinGraph.getIncomingEdges(relationCollection); -// if (joinEdgesForGiven != null) { -// joinEdges.addAll(joinEdgesForGiven); -// } -// if (relationStrings.size() > 1) { -// for (String relationString: relationStrings) { -// joinEdgesForGiven = joinGraph.getIncomingEdges(relationString); -// if (joinEdgesForGiven != null) { -// joinEdges.addAll(joinEdgesForGiven); -// } -// } -// } -// -// // check if the relation is the last piece of outer join -// boolean endInnerRelation = false; -// for (JoinEdge joinEdge: joinEdges) { -// switch(joinEdge.getJoinType()) { -// case LEFT_ANTI: -// case RIGHT_ANTI: -// case LEFT_SEMI: -// case RIGHT_SEMI: -// case LEFT_OUTER: -// case RIGHT_OUTER: -// case FULL_OUTER: -// endInnerRelation = true; -// if (checkingRelations.size() <= 1) { -// checkingRelations.add(relation); -// } -// break; -// default: -// break; -// } -// } -// -// if (endInnerRelation) { -// break; -// } -//>>>>>>> 53ed1c376f4969b5a2c54e30ddbd8113847a8768 Set vertexes = TUtil.newHashSet(); for (RelationNode relationNode : block.getRelations()) { @@ -257,13 +196,24 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra if (bestNonCrossJoin.hasJoinQual()) { graphContext.removeCandidateJoinFilters(bestNonCrossJoin.getJoinQual()); } - return bestNonCrossJoin; - } else { + return swapLeftAndRightIfNecessary(bestNonCrossJoin); + } else if (bestJoin != null) { if (bestJoin.hasJoinQual()) { graphContext.removeCandidateJoinFilters(bestJoin.getJoinQual()); } - return bestJoin; + return swapLeftAndRightIfNecessary(bestJoin); + } else { + throw new PlanningException("Cannot find the best join"); + } + } + + private static JoinEdge swapLeftAndRightIfNecessary(JoinEdge edge) { + if (PlannerUtil.isCommutativeJoin(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { + if (getCost(edge.getLeftVertex()) > getCost(edge.getRightVertex())) { + return new JoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); + } } + return edge; } private static class JoinEdgeFinderContext { @@ -288,57 +238,10 @@ public void reset() { private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraphContext graphContext, JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) throws PlanningException { -//<<<<<<< HEAD context.visited.add(begin); JoinGraph joinGraph = graphContext.getJoinGraph(); -//======= -// JoinEdge foundJoinEdge = null; -// -// // If outer is outer join, make edge key using all relation names in outer. -// SortedSet relationNames = -// new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, outer)); -// String outerEdgeKey = StringUtils.join(relationNames, ", "); -// for (String innerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, inner)) { -// if (graph.hasEdge(outerEdgeKey, innerName)) { -// JoinEdge existJoinEdge = graph.getEdge(outerEdgeKey, innerName); -// String[] joinEdgePair = {outerEdgeKey, innerName}; -// joinEdgePairs.add(joinEdgePair); -// if (foundJoinEdge == null) { -// foundJoinEdge = new JoinEdge(existJoinEdge.getJoinType(), outer, inner, -// existJoinEdge.getJoinQual()); -// } else { -// foundJoinEdge.addJoinQual(AlgebraicUtil.createSingletonExprFromCNF( -// existJoinEdge.getJoinQual())); -// } -// } -// } -// if (foundJoinEdge != null) { -// return foundJoinEdge; -// } -// -// relationNames = -// new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, inner)); -// outerEdgeKey = StringUtils.join(relationNames, ", "); -// for (String outerName : PlannerUtil.getRelationLineageWithinQueryBlock(plan, outer)) { -// if (graph.hasEdge(outerEdgeKey, outerName)) { -// JoinEdge existJoinEdge = graph.getEdge(outerEdgeKey, outerName); -// String[] joinEdgePair = {outerEdgeKey, outerName}; -// joinEdgePairs.add(joinEdgePair); -// if (foundJoinEdge == null) { -// foundJoinEdge = new JoinEdge(existJoinEdge.getJoinType(), inner, outer, -// existJoinEdge.getJoinQual()); -// } else { -// foundJoinEdge.addJoinQual(AlgebraicUtil.createSingletonExprFromCNF( -// existJoinEdge.getJoinQual())); -// } -// } -// } -// if (foundJoinEdge != null) { -// return foundJoinEdge; -// } -//>>>>>>> 53ed1c376f4969b5a2c54e30ddbd8113847a8768 // Find the matching edge from begin Set interchangeableWithBegin = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, begin); From 86189fdcfe561121570c094d696c5152079cba91 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 28 May 2015 18:39:14 +0900 Subject: [PATCH 33/43] TAJO-1352_4 --- .../tajo/engine/query/TestInnerJoinQuery.java | 2 +- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 52 +++++++++---------- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 52 +++++++++---------- .../testCrossJoin.2.Hash.plan | 16 +++--- .../testCrossJoin.2.Hash_NoBroadcast.plan | 30 +++++------ .../testCrossJoin.2.Sort.plan | 16 +++--- .../testCrossJoin.2.Sort_NoBroadcast.plan | 30 +++++------ .../TestInnerJoinQuery/testCrossJoin.3.result | 32 ++++++------ .../TestInnerJoinQuery/testCrossJoin.5.result | 36 ++++++------- ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 52 +++++++++---------- ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 52 +++++++++---------- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 52 +++++++++---------- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 52 +++++++++---------- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 52 +++++++++---------- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 52 +++++++++---------- 15 files changed, 289 insertions(+), 289 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java index 6eedb4223a..438d5acfb5 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java @@ -50,7 +50,7 @@ public static void classTearDown() throws ServiceException { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest(queries = { @QuerySpec("select n_name, r_name, n_regionkey, r_regionkey from nation, region order by n_name, r_name"), // testCrossJoinWithAsterisk diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index 83c5b57972..cf69c4a8df 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(2) on default.part => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(3) on default.customer => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index 83c5b57972..cf69c4a8df 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(2) on default.part => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(3) on default.customer => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan index 453e12feb4..8bc07bfd84 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan index b430c88afe..5d0de2fb45 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan index 453e12feb4..8bc07bfd84 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan index b430c88afe..5d0de2fb45 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.result b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.result index 799bc065c8..304b867f86 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.result +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.result @@ -1,27 +1,27 @@ r_regionkey,r_name,r_comment,c_custkey,c_name,c_address,c_nationkey,c_phone,c_acctbal,c_mktsegment,c_comment ------------------------------- 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e -1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e -2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e -3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e -4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref -1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref -2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref -3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref -4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov -1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov -2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov -3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov -4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou -1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou -2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou -3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou -4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor +1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e +1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref +1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov +1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou 1,AMERICA,hs use ironic, even requests. s,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor +2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e +2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref +2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov +2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou 2,ASIA,ges. thinly even pinto beans ca,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor +3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e +3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref +3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov +3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou 3,EUROPE,ly final courts cajole furiously final excuse,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor +4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e +4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref +4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov +4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.result b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.result index 6f9847ffe3..89720e08b5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.result +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.result @@ -1,27 +1,27 @@ len,c_custkey,c_name,c_address,c_nationkey,c_phone,c_acctbal,c_mktsegment,c_comment,r_regionkey,r_name,r_comment,?multiply ------------------------------- -31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s,50 -31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s,20 -31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s,40 -31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s,30 +108,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,10 +108,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,20 +108,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,30 +108,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,40 +108,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,50 +115,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,10 +115,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,20 +115,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,30 +115,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,40 +115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,1,AMERICA,hs use ironic, even requests. s,10 +31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca,10 +31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s,20 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,2,ASIA,ges. thinly even pinto beans ca,20 +31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s,30 +31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca,30 +31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s,40 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca,40 -31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca,10 +31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s,50 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca,50 -31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca,30 +45,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse,10 +45,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse,20 45,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse,30 45,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse,40 45,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse,50 -45,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse,20 -45,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse,10 -108,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,50 -108,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,10 -108,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,20 -108,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,30 -108,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,40 -115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50 -115,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,40 -115,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,30 -115,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,20 -115,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,10 diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index eed1c7d42d..af70118334 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(0) on joins.part_ => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(4) on default.region => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index eed1c7d42d..af70118334 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(0) on joins.part_ => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(4) on default.region => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index cbe5b31fb9..75c54877a0 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(7) on default.part as p => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) - => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(1) on default.region as r => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index cbe5b31fb9..75c54877a0 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(7) on default.part as p => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) - => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(1) on default.region as r => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index 2053184c74..818a408947 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(0) on default.part => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) - => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(4) on default.region => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index 2053184c74..818a408947 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -65,9 +65,9 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -133,29 +133,6 @@ SCAN(0) on default.part => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) - => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= @@ -180,6 +157,29 @@ SCAN(4) on default.region => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(21) on eb_0000000000000_0000_000004 + => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= From 671c50549943248f64de680ab4f4eed2510baaf0 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Fri, 29 May 2015 18:25:40 +0900 Subject: [PATCH 34/43] TAJO-1352_4 --- .../org/apache/tajo/catalog/SchemaUtil.java | 48 +++ .../exec/ExplainPlanPreprocessorForTest.java | 2 + .../tajo/engine/query/TestOuterJoinQuery.java | 2 +- .../testBroadcastSubquery.Hash.plan | 84 ++--- ...estBroadcastSubquery.Hash_NoBroadcast.plan | 108 +++--- .../testBroadcastSubquery.Sort.plan | 84 ++--- ...estBroadcastSubquery.Sort_NoBroadcast.plan | 108 +++--- .../testBroadcastSubquery2.Hash.plan | 220 ++++++------- ...stBroadcastSubquery2.Hash_NoBroadcast.plan | 310 +++++++++--------- .../testBroadcastSubquery2.Sort.plan | 232 ++++++------- ...stBroadcastSubquery2.Sort_NoBroadcast.plan | 310 +++++++++--------- ...uterJoinPredicationCaseByCase1.1.Hash.plan | 114 +++---- ...icationCaseByCase1.1.Hash_NoBroadcast.plan | 114 +++---- ...uterJoinPredicationCaseByCase1.1.Sort.plan | 114 +++---- ...icationCaseByCase1.1.Sort_NoBroadcast.plan | 114 +++---- .../testLeftOuterJoin3.Hash_NoBroadcast.plan | 118 +++---- .../testLeftOuterJoin3.Sort_NoBroadcast.plan | 118 +++---- ...icationCaseByCase2.1.Hash_NoBroadcast.plan | 114 +++---- ...icationCaseByCase2.1.Sort_NoBroadcast.plan | 114 +++---- ...uterJoinAndCaseWhen1.Hash_NoBroadcast.plan | 118 +++---- ...uterJoinAndCaseWhen1.Sort_NoBroadcast.plan | 118 +++---- .../apache/tajo/plan/LogicalOptimizer.java | 4 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 37 ++- .../org/apache/tajo/storage/StorageUtil.java | 37 --- 24 files changed, 1389 insertions(+), 1353 deletions(-) diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java index c6b2f69b2e..b0d6e4e8a5 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java @@ -161,4 +161,52 @@ public static String toDisplayString(Schema schema) { DDLBuilder.buildSchema(sb, schema); return sb.toString(); } + + public static int estimateSchemaSize(Schema schema) { + int size = 0; + for (Column column : schema.fields) { + size += getColByteSize(column); + } + return size; + } + + public static int getColByteSize(Column col) { + if (col.getDataType().getLength() > 0) { + return col.getDataType().getLength(); + } + switch (col.getDataType().getType()) { + case BOOLEAN: + return 1; + case CHAR: + return 1; + case BIT: + return 1; + case INT2: + return 2; + case INT4: + return 4; + case INT8: + return 8; + case FLOAT4: + return 4; + case FLOAT8: + return 8; + case INET4: + return 4; + case INET6: + return 32; + case TEXT: + return 256; + case BLOB: + return 256; + case DATE: + return 4; + case TIME: + return 8; + case TIMESTAMP: + return 8; + default: + return 0; + } + } } diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index b8574fe318..f8a72ae617 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -274,7 +274,9 @@ private static class JoinPidReseter extends BasicLogicalPlanVisitor stack) throws PlanningException { super.visitJoin(context, plan, block, node, stack); +// block.unregisterNode(node); node.setPID(context.joinPids.remove(0)); + block.registerNode(node); return null; } diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java index 6e84771788..53dce3c9a5 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java @@ -251,7 +251,7 @@ public final void testLeftOuterJoinPredicationCaseByCase2() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest(queries = { @QuerySpec("select t1.id, t1.name, t2.id, t3.id, t4.id\n" + "from jointable11 t1\n" + diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan index 2b7db47b3d..b4ad794fa8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.orders SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan index 0c134d5453..551dc262c5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,27 +57,19 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) @@ -89,43 +81,51 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan index 2b7db47b3d..b4ad794fa8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.orders SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan index 0c134d5453..551dc262c5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,27 +57,19 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) @@ -89,43 +81,51 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan index 839afaf636..9e430f8b1b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan @@ -8,63 +8,63 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -102,23 +102,23 @@ GROUP_BY(27)(l_orderkey) => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] @@ -131,9 +131,9 @@ Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d + 0: type=Broadcast, tables=default.c + 1: type=Broadcast, tables=eb_0000000000000_0000_000002 + 2: type=Broadcast, tables=eb_0000000000000_0000_000001 GROUP_BY(35)() => exprs: (sum(default.b.l_quantity (FLOAT8))) @@ -143,57 +143,55 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000001 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000003 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + SCAN(28) on eb_0000000000000_0000_000003 + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan index 797e842299..8218793ac3 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan @@ -8,63 +8,63 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -76,23 +76,23 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000009 |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000004 -7: eb_0000000000000_0000_000007 -8: eb_0000000000000_0000_000008 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000008 +8: eb_0000000000000_0000_000006 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 @@ -104,12 +104,12 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -118,7 +118,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(1) on default.part +SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} @@ -128,7 +128,7 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] @@ -143,45 +143,21 @@ GROUP_BY(27)(l_orderkey) => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(26) on eb_0000000000000_0000_000002 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} SCAN(25) on eb_0000000000000_0000_000001 - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) - -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] @@ -191,7 +167,7 @@ Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) @@ -211,15 +187,73 @@ TABLE_SUBQUERY(14) as default.f => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) + +SCAN(25) on eb_0000000000000_0000_000001 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(26) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000005 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000004 + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) @@ -229,61 +263,25 @@ TABLE_SUBQUERY(4) as default.b => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(20)(INNER) + JOIN(22)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000006 + SCAN(32) on eb_0000000000000_0000_000008 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000005 + SCAN(31) on eb_0000000000000_0000_000007 => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - SCAN(32) on eb_0000000000000_0000_000008 - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(1) default.c.o_orderkey (INT4)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) @@ -296,16 +294,16 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} SCAN(34) on eb_0000000000000_0000_000009 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - SCAN(33) on eb_0000000000000_0000_000004 - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + SCAN(33) on eb_0000000000000_0000_000006 + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan index 839afaf636..dfef179b57 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan @@ -8,63 +8,63 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(4) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.part.p_partkey (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + => in schema: {(16) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_suppkey (INT4), default.a.l_linenumber (INT4), default.a.l_quantity (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_discount (FLOAT8), default.a.l_tax (FLOAT8), default.a.l_returnflag (TEXT), default.a.l_linestatus (TEXT), default.a.l_shipdate (TEXT), default.a.l_commitdate (TEXT), default.a.l_receiptdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_comment (TEXT)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.l_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.part.p_partkey (INT4), default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + => in schema: {(16) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_suppkey (INT4), default.d.l_linenumber (INT4), default.d.l_quantity (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_discount (FLOAT8), default.d.l_tax (FLOAT8), default.d.l_returnflag (TEXT), default.d.l_linestatus (TEXT), default.d.l_shipdate (TEXT), default.d.l_commitdate (TEXT), default.d.l_receiptdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_comment (TEXT)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + => in schema: {(9) default.c.o_orderkey (INT4), default.c.o_custkey (INT4), default.c.o_orderstatus (TEXT), default.c.o_totalprice (FLOAT8), default.c.o_orderdate (TEXT), default.c.o_orderpriority (TEXT), default.c.o_clerk (TEXT), default.c.o_shippriority (INT4), default.c.o_comment (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -73,22 +73,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000010 3: eb_0000000000000_0000_000011 4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.part @@ -102,38 +102,38 @@ GROUP_BY(27)(l_orderkey) => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.part.p_partkey (INT4), default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + => in schema: {(16) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_suppkey (INT4), default.d.l_linenumber (INT4), default.d.l_quantity (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_discount (FLOAT8), default.d.l_tax (FLOAT8), default.d.l_returnflag (TEXT), default.d.l_linestatus (TEXT), default.d.l_shipdate (TEXT), default.d.l_commitdate (TEXT), default.d.l_receiptdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_comment (TEXT)} + SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d + 0: type=Broadcast, tables=default.c + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.a GROUP_BY(35)() => exprs: (sum(default.b.l_quantity (FLOAT8))) @@ -143,57 +143,57 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(4) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.part.p_partkey (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + => in schema: {(16) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_suppkey (INT4), default.a.l_linenumber (INT4), default.a.l_quantity (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_discount (FLOAT8), default.a.l_tax (FLOAT8), default.a.l_returnflag (TEXT), default.a.l_linestatus (TEXT), default.a.l_shipdate (TEXT), default.a.l_commitdate (TEXT), default.a.l_receiptdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_comment (TEXT)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.l_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + SCAN(28) on eb_0000000000000_0000_000004 + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000003 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(9) default.c.o_orderkey (INT4), default.c.o_custkey (INT4), default.c.o_orderstatus (TEXT), default.c.o_totalprice (FLOAT8), default.c.o_orderdate (TEXT), default.c.o_orderpriority (TEXT), default.c.o_clerk (TEXT), default.c.o_shippriority (INT4), default.c.o_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan index 797e842299..8218793ac3 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan @@ -8,63 +8,63 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -76,23 +76,23 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000009 |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000004 -7: eb_0000000000000_0000_000007 -8: eb_0000000000000_0000_000008 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000008 +8: eb_0000000000000_0000_000006 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 @@ -104,12 +104,12 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -118,7 +118,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(1) on default.part +SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} @@ -128,7 +128,7 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] @@ -143,45 +143,21 @@ GROUP_BY(27)(l_orderkey) => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(22)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(26) on eb_0000000000000_0000_000002 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} SCAN(25) on eb_0000000000000_0000_000001 - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) - -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] @@ -191,7 +167,7 @@ Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) @@ -211,15 +187,73 @@ TABLE_SUBQUERY(14) as default.f => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) + +SCAN(25) on eb_0000000000000_0000_000001 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +SCAN(26) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +JOIN(21)(INNER) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000005 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000004 + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) @@ -229,61 +263,25 @@ TABLE_SUBQUERY(4) as default.b => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(20)(INNER) + JOIN(22)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000006 + SCAN(32) on eb_0000000000000_0000_000008 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000005 + SCAN(31) on eb_0000000000000_0000_000007 => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) - -JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - SCAN(32) on eb_0000000000000_0000_000008 - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(1) default.c.o_orderkey (INT4)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) @@ -296,16 +294,16 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} SCAN(34) on eb_0000000000000_0000_000009 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} - SCAN(33) on eb_0000000000000_0000_000004 - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + SCAN(33) on eb_0000000000000_0000_000006 + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan index fa727c0009..f7e711c1a1 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan index fa727c0009..f7e711c1a1 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan index fa727c0009..f7e711c1a1 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan index fa727c0009..f7e711c1a1 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) - => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => target list: default.t3.id (INT4), default.t4.id (INT4) + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.t4.id (INT4) (asc) JOIN(9)(FULL_OUTER) - => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t3.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4)} + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan index 142b778410..04d0ae6e28 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan @@ -28,27 +28,27 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,16 +63,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 @@ -84,86 +84,86 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(1) on default.lineitem as b + => target list: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -SCAN(1) on default.lineitem as b - => target list: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} +SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000002 + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000001 - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} +SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} SCAN(22) on eb_0000000000000_0000_000004 - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000003 - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(21) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan index 142b778410..04d0ae6e28 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan @@ -28,27 +28,27 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,16 +63,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 @@ -84,86 +84,86 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(1) on default.lineitem as b + => target list: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -SCAN(1) on default.lineitem as b - => target list: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} +SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000002 + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000001 - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} +SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} SCAN(22) on eb_0000000000000_0000_000004 - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000003 - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(21) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan index 1af94bcc01..d4104e3577 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan @@ -10,27 +10,27 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} SCAN(1) on default.jointable12 as t2 => target list: default.t2.id (INT4) => out schema: {(1) default.t2.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,16 +41,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 @@ -58,86 +58,86 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(1) on default.jointable12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} +SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.t2.id (INT4)} => in schema: {(1) default.t2.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan index 1af94bcc01..d4104e3577 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan @@ -10,27 +10,27 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} SCAN(1) on default.jointable12 as t2 => target list: default.t2.id (INT4) => out schema: {(1) default.t2.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,16 +41,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 @@ -58,86 +58,86 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(1) on default.jointable12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} +SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(1) default.t3.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.t2.id (INT4)} => in schema: {(1) default.t2.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(1) default.t3.id (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash_NoBroadcast.plan index e864dc970b..02d893c992 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash_NoBroadcast.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} SCAN(1) on default.testouterjoinandcasewhen2 as b => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) -SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} +SCAN(1) on default.testouterjoinandcasewhen2 as b + => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 + => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) -SCAN(1) on default.testouterjoinandcasewhen2 as b - => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 - => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} +SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) -SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} +SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort_NoBroadcast.plan index e864dc970b..02d893c992 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort_NoBroadcast.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} SCAN(1) on default.testouterjoinandcasewhen2 as b => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,87 +33,87 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) -SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} +SCAN(1) on default.testouterjoinandcasewhen2 as b + => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 + => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) -SCAN(1) on default.testouterjoinandcasewhen2 as b - => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 - => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} +SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(12) on eb_0000000000000_0000_000002 + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(12) on eb_0000000000000_0000_000003 + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + SCAN(11) on eb_0000000000000_0000_000002 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(11) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) -SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} +SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.id (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) @@ -121,16 +121,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(15) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - SCAN(13) on eb_0000000000000_0000_000003 - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 195662445c..6fff1d5c81 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -96,7 +96,7 @@ public LogicalNode optimize(OverridableConf context, LogicalPlan plan) throws Pl optimizeJoinOrder(plan, blockCursor.nextBlock()); } } else { - LOG.info("Skip Join Optimized."); + LOG.info("Skip join order optimization"); } // TODO: filter push down rulesAfterToJoinOpt.rewrite(context, plan); @@ -113,7 +113,7 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni // finding relations and filter expressions JoinGraphContext joinGraphContext = JoinGraphBuilder.buildJoinGraph(plan, block); - // finding join order and restore remain filter order + // finding join order and restore remaining filters FoundJoinOrder order = joinOrderAlgorithm.findBestOrder(plan, block, joinGraphContext); // replace join node with FoundJoinOrder. diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 1cb1a1a56b..4f9980e7c0 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -21,6 +21,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.SchemaUtil; +import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.AlgebraicUtil; @@ -302,14 +304,41 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join * @return */ public static double getCost(JoinEdge joinEdge) { - double filterFactor = 1; + double factor = 1; double cost; if (joinEdge.getJoinType() != JoinType.CROSS) { - // TODO - should consider join type // TODO - should statistic information obtained from query history - filterFactor = filterFactor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); + switch (joinEdge.getJoinType()) { + // TODO - improve cost estimation + // cost = estimated input size * filter factor * estimated write size + case INNER: + factor = factor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()) + * SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) + / (SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()) + + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); + break; + // for outer joins, filter factor does not matter + case LEFT_OUTER: + factor = SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()); + break; + case RIGHT_OUTER: + factor = SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema()); + break; + case FULL_OUTER: + factor = Math.max(SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()), + SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); + break; + default: + // by default, do the same operation with that of inner join + factor = factor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); + break; + } cost = getCost(joinEdge.getLeftVertex()) * - getCost(joinEdge.getRightVertex()) * filterFactor; + getCost(joinEdge.getRightVertex()) * factor; } else { // make cost bigger if cross join cost = Math.pow(getCost(joinEdge.getLeftVertex()) * diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java index 926b5d37fa..5fc64de731 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java @@ -31,43 +31,6 @@ import java.nio.ByteBuffer; public class StorageUtil extends StorageConstants { - - public static int getColByteSize(Column col) { - switch (col.getDataType().getType()) { - case BOOLEAN: - return 1; - case CHAR: - return 1; - case BIT: - return 1; - case INT2: - return 2; - case INT4: - return 4; - case INT8: - return 8; - case FLOAT4: - return 4; - case FLOAT8: - return 8; - case INET4: - return 4; - case INET6: - return 32; - case TEXT: - return 256; - case BLOB: - return 256; - case DATE: - return 4; - case TIME: - return 8; - case TIMESTAMP: - return 8; - default: - return 0; - } - } public static Path concatPath(String parent, String...childs) { return concatPath(new Path(parent), childs); From a6dea46da7ca080af24386fbf48d23ae70a54da9 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sat, 30 May 2015 13:03:59 +0900 Subject: [PATCH 35/43] TAJO-1352_4 --- .../exec/ExplainPlanPreprocessorForTest.java | 30 +-- .../testBroadcastTwoPartJoin.Hash.plan | 40 +-- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 84 +++--- .../testBroadcastTwoPartJoin.Sort.plan | 40 +-- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 84 +++--- .../testCrossJoinWithEmptyTable1.Hash.plan | 16 +- ...sJoinWithEmptyTable1.Hash_NoBroadcast.plan | 38 +-- .../testCrossJoinWithEmptyTable1.Sort.plan | 16 +- ...sJoinWithEmptyTable1.Sort_NoBroadcast.plan | 38 +-- .../testDifferentTypesJoinCondition.Hash.plan | 16 +- ...ntTypesJoinCondition.Hash_NoBroadcast.plan | 38 +-- .../testDifferentTypesJoinCondition.Sort.plan | 16 +- ...ntTypesJoinCondition.Sort_NoBroadcast.plan | 38 +-- .../testInnerJoinWithEmptyTable.Hash.plan | 16 +- ...erJoinWithEmptyTable.Hash_NoBroadcast.plan | 38 +-- .../testInnerJoinWithEmptyTable.Sort.plan | 16 +- ...erJoinWithEmptyTable.Sort_NoBroadcast.plan | 38 +-- ...oinWithThetaJoinConditionInWhere.Hash.plan | 16 +- ...JoinConditionInWhere.Hash_NoBroadcast.plan | 38 +-- ...oinWithThetaJoinConditionInWhere.Sort.plan | 16 +- ...JoinConditionInWhere.Sort_NoBroadcast.plan | 38 +-- .../testJoinAsterisk.Hash.plan | 16 +- .../testJoinAsterisk.Hash_NoBroadcast.plan | 38 +-- .../testJoinAsterisk.Sort.plan | 16 +- .../testJoinAsterisk.Sort_NoBroadcast.plan | 38 +-- ...oinCoReferredEvalsWithSameExprs1.Hash.plan | 16 +- ...dEvalsWithSameExprs1.Hash_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs1.Sort.plan | 16 +- ...dEvalsWithSameExprs1.Sort_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs2.Hash.plan | 16 +- ...dEvalsWithSameExprs2.Hash_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs2.Sort.plan | 16 +- ...dEvalsWithSameExprs2.Sort_NoBroadcast.plan | 40 +-- .../testJoinOnMultipleDatabases.Hash.plan | 135 ---------- ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 249 ------------------ .../testJoinOnMultipleDatabases.Sort.plan | 135 ---------- ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 249 ------------------ .../testJoinWithMultipleJoinQual1.Hash.plan | 60 ++--- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 184 ++++++------- .../testJoinWithMultipleJoinQual1.Sort.plan | 60 ++--- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 184 ++++++------- .../testJoinWithOrPredicates.Hash.plan | 16 +- ...JoinWithOrPredicates.Hash_NoBroadcast.plan | 38 +-- .../testJoinWithOrPredicates.Sort.plan | 16 +- ...JoinWithOrPredicates.Sort_NoBroadcast.plan | 38 +-- .../testNaturalJoin.Hash.plan | 16 +- .../testNaturalJoin.Hash_NoBroadcast.plan | 38 +-- .../testNaturalJoin.Sort.plan | 16 +- .../testNaturalJoin.Sort_NoBroadcast.plan | 38 +-- .../testTPCHQ2Join.Hash.plan | 8 +- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 8 +- .../testTPCHQ2Join.Sort.plan | 8 +- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 8 +- .../testWhereClauseJoin1.Hash.plan | 16 +- ...testWhereClauseJoin1.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin1.Sort.plan | 16 +- ...testWhereClauseJoin1.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin2.Hash.plan | 16 +- ...testWhereClauseJoin2.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin2.Sort.plan | 16 +- ...testWhereClauseJoin2.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin3.Hash.plan | 16 +- ...testWhereClauseJoin3.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin3.Sort.plan | 16 +- ...testWhereClauseJoin3.Sort_NoBroadcast.plan | 38 +-- .../testBroadcastSubquery2.Hash.plan | 98 +++---- ...stBroadcastSubquery2.Hash_NoBroadcast.plan | 158 +++++------ .../testBroadcastSubquery2.Sort.plan | 70 ++--- ...stBroadcastSubquery2.Sort_NoBroadcast.plan | 158 +++++------ .../testComplexJoinCondition5.Hash.plan | 16 +- ...omplexJoinCondition5.Hash_NoBroadcast.plan | 44 ++-- .../testComplexJoinCondition5.Sort.plan | 16 +- ...omplexJoinCondition5.Sort_NoBroadcast.plan | 44 ++-- .../testComplexJoinCondition6.Hash.plan | 42 +-- ...omplexJoinCondition6.Hash_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition6.Sort.plan | 42 +-- ...omplexJoinCondition6.Sort_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition7.Hash.plan | 42 +-- ...omplexJoinCondition7.Hash_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition7.Sort.plan | 42 +-- ...omplexJoinCondition7.Sort_NoBroadcast.plan | 58 ++-- .../testJoinWithMultipleJoinQual2.Hash.plan | 36 +-- ...ithMultipleJoinQual2.Hash_NoBroadcast.plan | 84 +++--- .../testJoinWithMultipleJoinQual2.Sort.plan | 36 +-- ...ithMultipleJoinQual2.Sort_NoBroadcast.plan | 84 +++--- .../testJoinWithMultipleJoinQual3.Hash.plan | 74 +++--- ...ithMultipleJoinQual3.Hash_NoBroadcast.plan | 144 +++++----- .../testJoinWithMultipleJoinQual3.Sort.plan | 74 +++--- ...ithMultipleJoinQual3.Sort_NoBroadcast.plan | 144 +++++----- .../testJoinWithMultipleJoinQual4.Hash.plan | 74 +++--- ...ithMultipleJoinQual4.Hash_NoBroadcast.plan | 144 +++++----- .../testJoinWithMultipleJoinQual4.Sort.plan | 74 +++--- ...ithMultipleJoinQual4.Sort_NoBroadcast.plan | 144 +++++----- .../testThetaJoinKeyPairs.Hash.plan | 44 ++-- ...estThetaJoinKeyPairs.Hash_NoBroadcast.plan | 94 +++---- .../testThetaJoinKeyPairs.Sort.plan | 44 ++-- ...estThetaJoinKeyPairs.Sort_NoBroadcast.plan | 94 +++---- .../testComplexJoinsWithCaseWhen2.Hash.plan | 20 +- ...exJoinsWithCaseWhen2.Hash_NoBroadcast.plan | 54 ++-- .../testComplexJoinsWithCaseWhen2.Sort.plan | 20 +- ...exJoinsWithCaseWhen2.Sort_NoBroadcast.plan | 54 ++-- .../testInnerAndOuterWithEmpty.1.Hash.plan | 16 +- ...rAndOuterWithEmpty.1.Hash_NoBroadcast.plan | 38 +-- .../testInnerAndOuterWithEmpty.1.Sort.plan | 16 +- ...rAndOuterWithEmpty.1.Sort_NoBroadcast.plan | 38 +-- ...eftOuterJoinWithEmptySubquery1.1.Hash.plan | 16 +- ...WithEmptySubquery1.1.Hash_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery1.1.Sort.plan | 16 +- ...WithEmptySubquery1.1.Sort_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery2.1.Hash.plan | 16 +- ...WithEmptySubquery2.1.Hash_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery2.1.Sort.plan | 16 +- ...WithEmptySubquery2.1.Sort_NoBroadcast.plan | 40 +-- .../results/TestTPCH/testQ2FourJoins.plan | 190 ++++++------- .../results/TestTPCH/testTPCH14Expr.plan | 38 +-- .../results/TestTPCH/testTPCHQ5.plan | 78 +++--- 116 files changed, 2643 insertions(+), 3405 deletions(-) diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index f8a72ae617..074ea4ddc5 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -56,11 +56,11 @@ public void prepareTest(LogicalPlan plan) throws PlanningException { * So, they have different pids for each query execution. * JoinPidCollector and JoinPidReseter reset the pids of join nodes. */ - collectorContext.reset(); - joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); +// collectorContext.reset(); +// joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); - resetContext.reset(collectorContext.joinPids); - joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); +// resetContext.reset(collectorContext.joinPids); +// joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); } private static class PlanShapeFixerContext { @@ -150,17 +150,17 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo int rightChildNum = context.childNumbers.pop(); int leftChildNum = context.childNumbers.pop(); - if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { - - if (leftChildNum < rightChildNum) { - swapChildren(node); - } else if (leftChildNum == rightChildNum) { - if (node.getLeftChild().getOutSchema().toString().compareTo(node.getRightChild().getOutSchema().toString()) < - 0) { - swapChildren(node); - } - } - } +// if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { +// +// if (leftChildNum < rightChildNum) { +// swapChildren(node); +// } else if (leftChildNum == rightChildNum) { +// if (node.getLeftChild().getOutSchema().toString().compareTo(node.getRightChild().getOutSchema().toString()) < +// 0) { +// swapChildren(node); +// } +// } +// } if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan index fa8c71e9a5..9ef1c9d264 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan @@ -7,20 +7,20 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -34,14 +34,14 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -78,20 +78,20 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -105,14 +105,14 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index cf69c4a8df..ca9b8f7ef2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -7,20 +7,20 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -34,14 +34,14 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,32 +79,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) @@ -115,11 +115,11 @@ JOIN(13)(INNER) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] @@ -138,24 +138,24 @@ Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] @@ -168,7 +168,7 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -185,23 +185,23 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan index fa8c71e9a5..9ef1c9d264 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan @@ -7,20 +7,20 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -34,14 +34,14 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -78,20 +78,20 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -105,14 +105,14 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index cf69c4a8df..ca9b8f7ef2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -7,20 +7,20 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -34,14 +34,14 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,32 +79,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) @@ -115,11 +115,11 @@ JOIN(13)(INNER) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] @@ -138,24 +138,24 @@ Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] @@ -168,7 +168,7 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -185,23 +185,23 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan index 69ede305f2..f59bc995b9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan index 890f9351f7..c3fcc296d5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} +SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} +SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) JOIN(5)(INNER) => Join Cond: default.t3.id (INT8) = ?int8_1 (INT8) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan index 69ede305f2..f59bc995b9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan index 890f9351f7..c3fcc296d5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} SCAN(1) on default.table21 as t4 => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} +SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} +SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) JOIN(5)(INNER) => Join Cond: default.t3.id (INT8) = ?int8_1 (INT8) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan index 469668c18e..03cb91ed4a 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,14 +43,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan index 8e99f075ce..a25c582c49 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,32 +38,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) SELECTION(3) => Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT) @@ -73,11 +73,11 @@ SELECTION(3) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan index 469668c18e..03cb91ed4a 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,14 +43,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan index 8e99f075ce..a25c582c49 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,32 +38,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) SELECTION(3) => Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT) @@ -73,11 +73,11 @@ SELECTION(3) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan index 244bfa9bc7..0120a2bc11 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan index f5ee800fe9..afc6b062a6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan index 244bfa9bc7..0120a2bc11 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan index f5ee800fe9..afc6b062a6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan index a8f9f8bbfa..6442f36a70 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,15 +53,15 @@ SORT(11) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan index 936e4fc792..2776a34740 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -45,33 +45,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) @@ -84,11 +84,11 @@ SORT(11) => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan index a8f9f8bbfa..6442f36a70 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,15 +53,15 @@ SORT(11) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan index 936e4fc792..2776a34740 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -45,33 +45,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) @@ -84,11 +84,11 @@ SORT(11) => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan index d6252ea807..63239a38fc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,15 +63,15 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan index f3a2084ab5..fcbc0d66da 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,33 +52,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) @@ -94,11 +94,11 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan index d6252ea807..63239a38fc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,15 +63,15 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan index f3a2084ab5..fcbc0d66da 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,33 +52,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) @@ -94,11 +94,11 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan index c2efc6dfca..e69de29bb2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan @@ -1,135 +0,0 @@ -explain -------------------------------- -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -explain -------------------------------- -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) -------------------------------------------------------------------------------- -|-eb_0000000000000_0000_000011 - |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000009 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: type=Broadcast, tables=joins.supplier_ - 1: type=Broadcast, tables=joins.part_ - 2: type=Broadcast, tables=default.partsupp - 3: type=Broadcast, tables=default.region - -SORT(26) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000010 [ROOT] -======================================================= - -[Incoming] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: sorted input=eb_0000000000000_0000_000009 - -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - SCAN(27) on eb_0000000000000_0000_000009 - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000011 [TERMINAL] -======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index af70118334..e69de29bb2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -1,249 +0,0 @@ -explain -------------------------------- -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -explain -------------------------------- -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) -------------------------------------------------------------------------------- -|-eb_0000000000000_0000_000011 - |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000009 - |-eb_0000000000000_0000_000008 - |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 -8: eb_0000000000000_0000_000008 -9: eb_0000000000000_0000_000009 -10: eb_0000000000000_0000_000010 -11: eb_0000000000000_0000_000011 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) - -SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -SORT(26) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000010 [ROOT] -======================================================= - -[Incoming] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: sorted input=eb_0000000000000_0000_000009 - -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - SCAN(27) on eb_0000000000000_0000_000009 - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000011 [TERMINAL] -======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan index c2efc6dfca..e69de29bb2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan @@ -1,135 +0,0 @@ -explain -------------------------------- -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -explain -------------------------------- -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) -------------------------------------------------------------------------------- -|-eb_0000000000000_0000_000011 - |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000009 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: type=Broadcast, tables=joins.supplier_ - 1: type=Broadcast, tables=joins.part_ - 2: type=Broadcast, tables=default.partsupp - 3: type=Broadcast, tables=default.region - -SORT(26) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000010 [ROOT] -======================================================= - -[Incoming] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: sorted input=eb_0000000000000_0000_000009 - -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - SCAN(27) on eb_0000000000000_0000_000009 - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000011 [TERMINAL] -======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index af70118334..e69de29bb2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -1,249 +0,0 @@ -explain -------------------------------- -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -explain -------------------------------- -------------------------------------------------------------------------------- -Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) -------------------------------------------------------------------------------- -|-eb_0000000000000_0000_000011 - |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000009 - |-eb_0000000000000_0000_000008 - |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 -------------------------------------------------------------------------------- -Order of Execution -------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 -8: eb_0000000000000_0000_000008 -9: eb_0000000000000_0000_000009 -10: eb_0000000000000_0000_000010 -11: eb_0000000000000_0000_000011 -------------------------------------------------------------------------------- - -======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) - -SCAN(1) on joins.supplier_ - => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) - => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -SCAN(0) on joins.part_ - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) - => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 - => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 - => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -JOIN(15)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -SORT(26) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000010 [ROOT] -======================================================= - -[Incoming] -[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) - -[Enforcers] - 0: sorted input=eb_0000000000000_0000_000009 - -SORT(6) - => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) - SCAN(27) on eb_0000000000000_0000_000009 - => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000011 [TERMINAL] -======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan index ead39f7d13..3f55861e0d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan @@ -8,19 +8,6 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.ps - 1: type=Broadcast, tables=default.p - 2: type=Broadcast, tables=default.s - 3: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r + 1: type=Broadcast, tables=default.ps + 2: type=Broadcast, tables=default.p + 3: type=Broadcast, tables=default.s SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) @@ -79,19 +79,6 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -113,6 +100,19 @@ SORT(26) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index 75c54877a0..cf7290174f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -8,19 +8,6 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,7 +79,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) @@ -87,11 +111,11 @@ SCAN(3) on default.supplier as s => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(5) on default.partsupp as ps => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) @@ -103,30 +127,53 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 + SCAN(20) on eb_0000000000000_0000_000004 => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) SCAN(7) on default.part as p => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) @@ -134,82 +181,35 @@ SCAN(7) on default.part as p => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) - -JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan index ead39f7d13..3f55861e0d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan @@ -8,19 +8,6 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.ps - 1: type=Broadcast, tables=default.p - 2: type=Broadcast, tables=default.s - 3: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r + 1: type=Broadcast, tables=default.ps + 2: type=Broadcast, tables=default.p + 3: type=Broadcast, tables=default.s SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) @@ -79,19 +79,6 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -113,6 +100,19 @@ SORT(26) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index 75c54877a0..cf7290174f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -8,19 +8,6 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,7 +79,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) @@ -87,11 +111,11 @@ SCAN(3) on default.supplier as s => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(5) on default.partsupp as ps => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) @@ -103,30 +127,53 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 + SCAN(20) on eb_0000000000000_0000_000004 => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) SCAN(7) on default.part as p => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) @@ -134,82 +181,35 @@ SCAN(7) on default.part as p => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) - -JOIN(15)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan index c86757cbfc..658b855a19 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,14 +56,14 @@ SORT(11) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan index 155f466f7d..ec9e543824 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,32 +46,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -86,11 +86,11 @@ SORT(11) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan index c86757cbfc..658b855a19 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,14 +56,14 @@ SORT(11) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan index 155f466f7d..ec9e543824 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,32 +46,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -86,11 +86,11 @@ SORT(11) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan index 1ef6092da5..97e3976208 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan index 24ef41061e..2e1909fec6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan index 1ef6092da5..97e3976208 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan index 24ef41061e..2e1909fec6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} SCAN(1) on default.nation as n2 => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan index b19c33fd68..4c8dc2bea5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan @@ -7,7 +7,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -20,7 +20,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -78,7 +78,7 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -91,7 +91,7 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index 818a408947..4b285f7a37 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -7,7 +7,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -20,7 +20,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -168,7 +168,7 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -191,7 +191,7 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan index b19c33fd68..4c8dc2bea5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan @@ -7,7 +7,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -20,7 +20,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -78,7 +78,7 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -91,7 +91,7 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index 818a408947..4b285f7a37 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -7,7 +7,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(15)(INNER) + JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} @@ -20,7 +20,7 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(14)(INNER) + JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -168,7 +168,7 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -191,7 +191,7 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan index 6da36f78ce..fff67529e4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan index f2880e41cd..ce8b39b6e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan index 6da36f78ce..fff67529e4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan index f2880e41cd..ce8b39b6e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan index 549fe31562..abcdf6ec64 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan index cde528c53b..32b75cdc26 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan index 549fe31562..abcdf6ec64 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan index cde528c53b..32b75cdc26 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan index 458abea3f8..faa5926d39 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan index ef80741256..b46814752c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan index 458abea3f8..faa5926d39 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan index ef80741256..b46814752c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan index 9e430f8b1b..bd6c56b34f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan @@ -21,24 +21,19 @@ GROUP_BY(18)() => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - JOIN(21)(INNER) + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} @@ -52,19 +47,24 @@ GROUP_BY(18)() => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(7) on default.lineitem as d => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -73,22 +73,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000010 3: eb_0000000000000_0000_000011 4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.part @@ -106,34 +106,34 @@ GROUP_BY(27)(l_orderkey) => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(7) on default.lineitem as d => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) [Enforcers] 0: type=Broadcast, tables=default.c - 1: type=Broadcast, tables=eb_0000000000000_0000_000002 - 2: type=Broadcast, tables=eb_0000000000000_0000_000001 + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.a GROUP_BY(35)() => exprs: (sum(default.b.l_quantity (FLOAT8))) @@ -151,31 +151,28 @@ GROUP_BY(35)() => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000002 + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000001 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(21)(INNER) + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} @@ -189,9 +186,14 @@ GROUP_BY(35)() => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000003 + SCAN(28) on eb_0000000000000_0000_000004 => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan index 8218793ac3..da78507b58 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan @@ -21,24 +21,19 @@ GROUP_BY(18)() => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - JOIN(21)(INNER) + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} @@ -52,19 +47,24 @@ GROUP_BY(18)() => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(7) on default.lineitem as d => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -78,18 +78,18 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000001 6: eb_0000000000000_0000_000007 7: eb_0000000000000_0000_000008 8: eb_0000000000000_0000_000006 @@ -100,39 +100,39 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) GROUP_BY(27)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) @@ -147,27 +147,27 @@ GROUP_BY(27)(l_orderkey) => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000001 + SCAN(26) on eb_0000000000000_0000_000003 => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + SCAN(25) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) @@ -182,16 +182,16 @@ TABLE_SUBQUERY(14) as default.f => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000003 + SCAN(28) on eb_0000000000000_0000_000004 => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -204,53 +204,55 @@ Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(25) on eb_0000000000000_0000_000001 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(26) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -JOIN(21)(INNER) +JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(30) on eb_0000000000000_0000_000005 - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(1) default.c.o_orderkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000004 => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000001 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) @@ -259,21 +261,21 @@ TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(32) on eb_0000000000000_0000_000008 + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + SCAN(31) on eb_0000000000000_0000_000007 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan index dfef179b57..bd6c56b34f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan @@ -11,37 +11,37 @@ GROUP_BY(18)() => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} JOIN(20)(INNER) => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.part.p_partkey (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} - => in schema: {(16) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_suppkey (INT4), default.a.l_linenumber (INT4), default.a.l_quantity (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_discount (FLOAT8), default.a.l_tax (FLOAT8), default.a.l_returnflag (TEXT), default.a.l_linestatus (TEXT), default.a.l_shipdate (TEXT), default.a.l_commitdate (TEXT), default.a.l_receiptdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_comment (TEXT)} + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.l_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} GROUP_BY(12)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} TABLE_SUBQUERY(11) as default.e => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) @@ -51,20 +51,20 @@ GROUP_BY(18)() => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.part.p_partkey (INT4), default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} - => in schema: {(16) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_suppkey (INT4), default.d.l_linenumber (INT4), default.d.l_quantity (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_discount (FLOAT8), default.d.l_tax (FLOAT8), default.d.l_returnflag (TEXT), default.d.l_linestatus (TEXT), default.d.l_shipdate (TEXT), default.d.l_commitdate (TEXT), default.d.l_receiptdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_comment (TEXT)} + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_orderkey (INT4), default.c.o_custkey (INT4), default.c.o_orderstatus (TEXT), default.c.o_totalprice (FLOAT8), default.c.o_orderdate (TEXT), default.c.o_orderpriority (TEXT), default.c.o_clerk (TEXT), default.c.o_shippriority (INT4), default.c.o_comment (TEXT)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -110,15 +110,15 @@ GROUP_BY(27)(l_orderkey) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.part.p_partkey (INT4), default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_partkey (INT4)} - => in schema: {(16) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_suppkey (INT4), default.d.l_linenumber (INT4), default.d.l_quantity (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_discount (FLOAT8), default.d.l_tax (FLOAT8), default.d.l_returnflag (TEXT), default.d.l_linestatus (TEXT), default.d.l_shipdate (TEXT), default.d.l_commitdate (TEXT), default.d.l_receiptdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_comment (TEXT)} + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] @@ -146,7 +146,7 @@ GROUP_BY(35)() => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} @@ -159,32 +159,32 @@ GROUP_BY(35)() => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.part.p_partkey (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_partkey (INT4)} - => in schema: {(16) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_suppkey (INT4), default.a.l_linenumber (INT4), default.a.l_quantity (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_discount (FLOAT8), default.a.l_tax (FLOAT8), default.a.l_returnflag (TEXT), default.a.l_linestatus (TEXT), default.a.l_shipdate (TEXT), default.a.l_commitdate (TEXT), default.a.l_receiptdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_comment (TEXT)} + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) + => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.l_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} PROJECTION(13) => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} GROUP_BY(12)(l_orderkey) => exprs: (avg(?avg_11 (PROTOBUF))) => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) default.e.l_orderkey (INT4), avg_quantity (FLOAT8)} + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} SCAN(28) on eb_0000000000000_0000_000004 => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} @@ -193,7 +193,7 @@ GROUP_BY(35)() => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_orderkey (INT4), default.c.o_custkey (INT4), default.c.o_orderstatus (TEXT), default.c.o_totalprice (FLOAT8), default.c.o_orderdate (TEXT), default.c.o_orderpriority (TEXT), default.c.o_clerk (TEXT), default.c.o_shippriority (INT4), default.c.o_comment (TEXT)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan index 8218793ac3..da78507b58 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan @@ -21,24 +21,19 @@ GROUP_BY(18)() => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - JOIN(21)(INNER) + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} @@ -52,19 +47,24 @@ GROUP_BY(18)() => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(7) on default.lineitem as d => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -78,18 +78,18 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000001 6: eb_0000000000000_0000_000007 7: eb_0000000000000_0000_000008 8: eb_0000000000000_0000_000006 @@ -100,39 +100,39 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) GROUP_BY(27)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) @@ -147,27 +147,27 @@ GROUP_BY(27)(l_orderkey) => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) + JOIN(21)(INNER) => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000001 + SCAN(26) on eb_0000000000000_0000_000003 => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + SCAN(25) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) TABLE_SUBQUERY(14) as default.f => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) @@ -182,16 +182,16 @@ TABLE_SUBQUERY(14) as default.f => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000003 + SCAN(28) on eb_0000000000000_0000_000004 => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -204,53 +204,55 @@ Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(25) on eb_0000000000000_0000_000001 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(26) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -JOIN(21)(INNER) +JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(30) on eb_0000000000000_0000_000005 - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(1) default.c.o_orderkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000004 => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000001 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) @@ -259,21 +261,21 @@ TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(22)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(32) on eb_0000000000000_0000_000008 + => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + SCAN(31) on eb_0000000000000_0000_000007 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan index 4e72e0877d..abc22905a4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan @@ -7,10 +7,6 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -19,6 +15,10 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,10 +52,6 @@ SORT(12) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -68,6 +64,10 @@ SORT(12) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan index 2325ed7ebd..f72787a5b6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -19,6 +15,10 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -44,7 +44,19 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -59,25 +71,13 @@ TABLE_SUBQUERY(3) as default.n2 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) - -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -90,11 +90,11 @@ SORT(12) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(1) name2 (TEXT)} => in schema: {(1) name2 (TEXT)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan index 4e72e0877d..abc22905a4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan @@ -7,10 +7,6 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -19,6 +15,10 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,10 +52,6 @@ SORT(12) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -68,6 +64,10 @@ SORT(12) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan index 2325ed7ebd..f72787a5b6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -19,6 +15,10 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -44,7 +44,19 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -59,25 +71,13 @@ TABLE_SUBQUERY(3) as default.n2 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) - -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -90,11 +90,11 @@ SORT(12) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(1) name2 (TEXT)} => in schema: {(1) name2 (TEXT)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan index 2402db7154..227b3415f4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.n1 + 1: type=Broadcast, tables=default.nation SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: name1 (TEXT) = name2 (TEXT) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - => in schema: {(3) default.n2.name2 (TEXT), default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), default.n2.name2 (TEXT)} UNION(21) - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan index 15a4a6b051..92f84419ee 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(15) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(1) default.n2.name2 (TEXT)} => in schema: {(1) default.n2.name2 (TEXT)} + SCAN(17) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan index 2402db7154..227b3415f4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.n1 + 1: type=Broadcast, tables=default.nation SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: name1 (TEXT) = name2 (TEXT) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - => in schema: {(3) default.n2.name2 (TEXT), default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), default.n2.name2 (TEXT)} UNION(21) - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan index 15a4a6b051..92f84419ee 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - SCAN(15) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(1) default.n2.name2 (TEXT)} => in schema: {(1) default.n2.name2 (TEXT)} + SCAN(17) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan index 8e6d32bd82..4826b745c9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.n1 + 1: type=Broadcast, tables=default.nation SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: ?substr_1 (TEXT) = ?substr_2 (TEXT) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - => in schema: {(5) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT), ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(5) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} UNION(21) - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan index cd716a4a32..a3b9e837e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + SCAN(17) on eb_0000000000000_0000_000001 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan index 8e6d32bd82..4826b745c9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.n1 + 1: type=Broadcast, tables=default.nation SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: ?substr_1 (TEXT) = ?substr_2 (TEXT) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - => in schema: {(5) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT), ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(5) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} UNION(21) - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan index cd716a4a32..a3b9e837e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -32,6 +28,10 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 -[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 +[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + SCAN(17) on eb_0000000000000_0000_000001 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000003 + 0: sorted input=eb_0000000000000_0000_000004 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000003 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan index f19b5cda83..e192cc89ef 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan @@ -5,10 +5,6 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -18,15 +14,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,18 +46,14 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.s + 1: type=Broadcast, tables=default.r JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -71,15 +67,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan index 59f15f11b1..1beaf4df67 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan @@ -5,10 +5,6 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -18,15 +14,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -35,55 +35,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) = MOROCCO - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) = MOROCCO + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -98,19 +98,19 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4) @@ -122,8 +122,8 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -131,11 +131,11 @@ JOIN(11)(INNER) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(1) default.s.s_nationkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(1) default.s.s_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan index f19b5cda83..e192cc89ef 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan @@ -5,10 +5,6 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -18,15 +14,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,18 +46,14 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.s + 1: type=Broadcast, tables=default.r JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -71,15 +67,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan index 59f15f11b1..1beaf4df67 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan @@ -5,10 +5,6 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -18,15 +14,19 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -35,55 +35,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) = MOROCCO - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) = MOROCCO + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -98,19 +98,19 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4) @@ -122,8 +122,8 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -131,11 +131,11 @@ JOIN(11)(INNER) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(1) default.s.s_nationkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(1) default.s.s_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan index cfbb8497e1..3307bf6e60 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan @@ -5,19 +5,6 @@ JOIN(14)(INNER) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -27,15 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -55,28 +55,15 @@ Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.s + 2: type=Broadcast, tables=default.r JOIN(14)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -90,15 +77,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan index 06db6a234c..06cd0c9d20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan @@ -5,19 +5,6 @@ JOIN(14)(INNER) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -27,15 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,20 +67,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -88,39 +99,51 @@ SCAN(1) on default.region as r => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -135,43 +158,20 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 + SCAN(19) on eb_0000000000000_0000_000005 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) JOIN(14)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -179,11 +179,11 @@ JOIN(14)(INNER) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} SCAN(21) on eb_0000000000000_0000_000006 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan index cfbb8497e1..3307bf6e60 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan @@ -5,19 +5,6 @@ JOIN(14)(INNER) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -27,15 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -55,28 +55,15 @@ Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.s + 2: type=Broadcast, tables=default.r JOIN(14)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -90,15 +77,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan index 06db6a234c..06cd0c9d20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan @@ -5,19 +5,6 @@ JOIN(14)(INNER) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -27,15 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,20 +67,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -88,39 +99,51 @@ SCAN(1) on default.region as r => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -135,43 +158,20 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 + SCAN(19) on eb_0000000000000_0000_000005 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) JOIN(14)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -179,11 +179,11 @@ JOIN(14)(INNER) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} SCAN(21) on eb_0000000000000_0000_000006 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan index a9b08762af..543e03971e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan @@ -7,19 +7,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -29,15 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,9 +57,9 @@ Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.s + 2: type=Broadcast, tables=default.r SELECTION(9) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) @@ -68,19 +68,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -94,15 +81,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan index 67c3c6581f..73e192bd51 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan @@ -7,19 +7,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -29,15 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,20 +69,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -90,39 +101,51 @@ SCAN(1) on default.region as r => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -137,43 +160,20 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 + SCAN(19) on eb_0000000000000_0000_000005 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) SELECTION(9) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) @@ -183,11 +183,11 @@ SELECTION(9) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} SCAN(21) on eb_0000000000000_0000_000006 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan index a9b08762af..543e03971e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan @@ -7,19 +7,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -29,15 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,9 +57,9 @@ Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.s + 2: type=Broadcast, tables=default.r SELECTION(9) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) @@ -68,19 +68,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -94,15 +81,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan index 67c3c6581f..73e192bd51 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan @@ -7,19 +7,6 @@ SELECTION(9) => target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} @@ -29,15 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,20 +69,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -90,39 +101,51 @@ SCAN(1) on default.region as r => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} +JOIN(13)(INNER) + => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) + => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -137,43 +160,20 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 + SCAN(19) on eb_0000000000000_0000_000005 => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) - => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) SELECTION(9) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) @@ -183,11 +183,11 @@ SELECTION(9) => out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} => in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)} SCAN(21) on eb_0000000000000_0000_000006 - => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} => in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + SCAN(20) on eb_0000000000000_0000_000003 + => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan index c0b6f82ce6..bca2cd4adc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -25,14 +21,18 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,22 +41,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000006 3: eb_0000000000000_0000_000007 4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.r @@ -71,21 +71,21 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -100,10 +100,6 @@ SORT(20) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -117,9 +113,13 @@ SORT(20) => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000003 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan index 6509afc064..4c6932fdb1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -25,14 +21,18 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -42,57 +42,57 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000001 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) GROUP_BY(16)(r_regionkey) => exprs: (count()) @@ -104,22 +104,22 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) @@ -134,16 +134,16 @@ TABLE_SUBQUERY(6) as default.t => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000003 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -155,8 +155,8 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -169,11 +169,11 @@ SORT(20) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan index c0b6f82ce6..bca2cd4adc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -25,14 +21,18 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,22 +41,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 +1: eb_0000000000000_0000_000004 2: eb_0000000000000_0000_000006 3: eb_0000000000000_0000_000007 4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.r @@ -71,21 +71,21 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -100,10 +100,6 @@ SORT(20) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -117,9 +113,13 @@ SORT(20) => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000003 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan index 6509afc064..4c6932fdb1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -25,14 +21,18 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(1) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -42,57 +42,57 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000005 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000001 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) GROUP_BY(16)(r_regionkey) => exprs: (count()) @@ -104,22 +104,22 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 + SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) @@ -134,16 +134,16 @@ TABLE_SUBQUERY(6) as default.t => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000003 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -155,8 +155,8 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -169,11 +169,11 @@ SORT(20) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan index a719990d2d..f1ceec061a 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan @@ -7,10 +7,6 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -28,6 +24,10 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,8 +52,8 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.supplier - 1: type=Broadcast, tables=default.region + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=default.supplier SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) @@ -62,10 +62,6 @@ SORT(17) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} @@ -87,6 +83,10 @@ SORT(17) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan index af9b3a51d1..710b38ddac 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -28,6 +24,10 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,27 +37,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) @@ -65,11 +65,11 @@ SCAN(1) on default.nation => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) SCAN(2) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -77,15 +77,15 @@ SCAN(2) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) @@ -100,19 +100,19 @@ TABLE_SUBQUERY(5) as default.t => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) @@ -124,8 +124,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) @@ -138,11 +138,11 @@ SORT(17) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan index a719990d2d..f1ceec061a 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan @@ -7,10 +7,6 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -28,6 +24,10 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,8 +52,8 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.supplier - 1: type=Broadcast, tables=default.region + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=default.supplier SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) @@ -62,10 +62,6 @@ SORT(17) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} @@ -87,6 +83,10 @@ SORT(17) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan index af9b3a51d1..710b38ddac 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan @@ -7,10 +7,6 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -28,6 +24,10 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,27 +37,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000001 -2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) @@ -65,11 +65,11 @@ SCAN(1) on default.nation => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) SCAN(2) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -77,15 +77,15 @@ SCAN(2) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) @@ -100,19 +100,19 @@ TABLE_SUBQUERY(5) as default.t => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) @@ -124,8 +124,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) @@ -138,11 +138,11 @@ SORT(17) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan index 1d5762f6e3..ceb96f9959 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan index ba9a319372..f1fa414673 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(1) default.a.l_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(1) default.b.o_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan index 1d5762f6e3..ceb96f9959 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan index ba9a319372..f1fa414673 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(1) default.a.l_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(1) default.b.o_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan index 2e0cc87499..00f234d6d0 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -76,15 +76,15 @@ SORT(17) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan index 703f32c439..feb21fd52e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -58,33 +58,33 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) @@ -103,11 +103,11 @@ TABLE_SUBQUERY(5) as default.b => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(1) default.jointable12.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.lineitem.l_orderkey (INT4)} => in schema: {(1) default.lineitem.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(1) default.jointable12.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan index 2e0cc87499..00f234d6d0 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -76,15 +76,15 @@ SORT(17) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan index 703f32c439..feb21fd52e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -58,33 +58,33 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) @@ -103,11 +103,11 @@ TABLE_SUBQUERY(5) as default.b => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(1) default.jointable12.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.lineitem.l_orderkey (INT4)} => in schema: {(1) default.lineitem.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(1) default.jointable12.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan index 45b95c2191..a54473ea7a 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -71,15 +71,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan index 107e1fa6c6..863fe12f31 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -54,33 +54,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(0) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(0) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) @@ -99,11 +99,11 @@ TABLE_SUBQUERY(4) as default.a => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan index 45b95c2191..a54473ea7a 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -71,15 +71,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan index 107e1fa6c6..863fe12f31 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -54,33 +54,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(0) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(0) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) @@ -99,11 +99,11 @@ TABLE_SUBQUERY(4) as default.a => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan b/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan index ef0f8f8c3b..88c6bee82f 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan @@ -6,20 +6,6 @@ JOIN(14)(INNER) => out schema: {(12) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(14) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => filter: default.region.r_name (TEXT) = AMERICA - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - JOIN(12)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -29,7 +15,7 @@ JOIN(14)(INNER) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT) => out schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(11)(INNER) + JOIN(12)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -42,6 +28,20 @@ JOIN(14)(INNER) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(11)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(0) on default.region + => filter: default.region.r_name (TEXT) = AMERICA + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,21 +52,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000010) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -77,7 +77,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => filter: default.region.r_name (TEXT) = AMERICA + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(3) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -85,11 +110,11 @@ SCAN(3) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) SCAN(5) on default.partsupp => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) @@ -101,30 +126,53 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) JOIN(11)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(17) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(12)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(10) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 + SCAN(19) on eb_0000000000000_0000_000005 => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} => in schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(16) on eb_0000000000000_0000_000001 + SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(7) on default.part => filter: default.part.p_size (INT4) = 15 AND default.part.p_type (TEXT)LIKE'%BRASS' @@ -133,83 +181,35 @@ SCAN(7) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(1) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(0) on default.region - => filter: default.region.r_name (TEXT) = AMERICA - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(12)(INNER) +JOIN(13)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(12) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(21) on eb_0000000000000_0000_000007 => out schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(18) on eb_0000000000000_0000_000003 + SCAN(20) on eb_0000000000000_0000_000006 => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000007 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000006 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) JOIN(14)(INNER) => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) @@ -217,11 +217,11 @@ JOIN(14)(INNER) => out schema: {(12) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(14) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(23) on eb_0000000000000_0000_000008 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - SCAN(22) on eb_0000000000000_0000_000005 => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(22) on eb_0000000000000_0000_000003 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan b/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan index 8a716ebc30..6e2d021fee 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan @@ -14,14 +14,14 @@ PROJECTION(3) => target list: CASE WHEN default.part.p_type (TEXT)LIKE'PROMO%' THEN default.lineitem.l_extendedprice (FLOAT8) ELSE 0.0 END as ?casewhen, ?multiply_2 (FLOAT8) => out schema: {(2) ?casewhen (FLOAT8), ?multiply_2 (FLOAT8)} => in schema: {(5) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.part.p_partkey (INT4), default.part.p_type (TEXT)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) - => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) + => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -47,32 +47,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 - => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) + => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) - => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 + => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) @@ -88,11 +88,11 @@ GROUP_BY(11)() => out schema: {(2) ?casewhen (FLOAT8), ?multiply_2 (FLOAT8)} => in schema: {(5) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.part.p_partkey (INT4), default.part.p_type (TEXT)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} - => in schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} => in schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} + => in schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan index 747de63d2e..471101e358 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan @@ -27,14 +27,14 @@ SORT(8) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(3) on default.supplier - => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} SCAN(4) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.supplier + => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} JOIN(17)(INNER) => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) => target list: ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4) @@ -49,15 +49,15 @@ SORT(8) => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4) => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -101,33 +101,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(2) on default.lineitem - => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.orders + => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.orders - => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(2) on default.lineitem + => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) @@ -138,11 +138,11 @@ JOIN(16)(INNER) => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(23) on eb_0000000000000_0000_000002 - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000001 => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000001 + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] @@ -161,24 +161,24 @@ Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(3) on default.supplier + => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -SCAN(3) on default.supplier - => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] @@ -208,8 +208,8 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) @@ -220,11 +220,11 @@ JOIN(18)(INNER) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(27) on eb_0000000000000_0000_000007 - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000006 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000006 + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [LEAF] From 560d3b5cc69114e4bc2728abcc7cf39b53c9d9c6 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sat, 30 May 2015 17:28:53 +0900 Subject: [PATCH 36/43] Passed all tests --- .../exec/ExplainPlanPreprocessorForTest.java | 89 +---- .../testBroadcastSubquery2.sql | 2 +- .../testBroadcastTwoPartJoin.Hash.plan | 80 ++--- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 202 +++++------ .../testBroadcastTwoPartJoin.Sort.plan | 80 ++--- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 202 +++++------ .../testCrossJoin.2.Hash.plan | 16 +- .../testCrossJoin.2.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.2.Sort.plan | 16 +- .../testCrossJoin.2.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.3.Hash.plan | 16 +- .../testCrossJoin.3.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.3.Sort.plan | 16 +- .../testCrossJoin.3.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.4.Hash.plan | 16 +- .../testCrossJoin.4.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.4.Sort.plan | 16 +- .../testCrossJoin.4.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.5.Hash.plan | 16 +- .../testCrossJoin.5.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.5.Sort.plan | 16 +- .../testCrossJoin.5.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk1.Hash.plan | 16 +- ...ossJoinWithAsterisk1.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk1.Sort.plan | 16 +- ...ossJoinWithAsterisk1.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk2.Hash.plan | 16 +- ...ossJoinWithAsterisk2.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk2.Sort.plan | 16 +- ...ossJoinWithAsterisk2.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk3.Hash.plan | 16 +- ...ossJoinWithAsterisk3.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk3.Sort.plan | 16 +- ...ossJoinWithAsterisk3.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk4.Hash.plan | 16 +- ...ossJoinWithAsterisk4.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk4.Sort.plan | 16 +- ...ossJoinWithAsterisk4.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithEmptyTable1.Hash.plan | 16 +- ...sJoinWithEmptyTable1.Hash_NoBroadcast.plan | 38 +- .../testCrossJoinWithEmptyTable1.Sort.plan | 16 +- ...sJoinWithEmptyTable1.Sort_NoBroadcast.plan | 38 +- ...oinWithThetaJoinConditionInWhere.Hash.plan | 16 +- ...JoinConditionInWhere.Hash_NoBroadcast.plan | 30 +- ...oinWithThetaJoinConditionInWhere.Sort.plan | 16 +- ...JoinConditionInWhere.Sort_NoBroadcast.plan | 30 +- .../testInnerJoinWithEmptyTable.Hash.plan | 16 +- ...erJoinWithEmptyTable.Hash_NoBroadcast.plan | 38 +- .../testInnerJoinWithEmptyTable.Sort.plan | 16 +- ...erJoinWithEmptyTable.Sort_NoBroadcast.plan | 38 +- .../testJoinAsterisk.Hash.plan | 16 +- .../testJoinAsterisk.Hash_NoBroadcast.plan | 38 +- .../testJoinAsterisk.Sort.plan | 16 +- .../testJoinAsterisk.Sort_NoBroadcast.plan | 38 +- .../testJoinOnMultipleDatabases.Hash.plan | 135 +++++++ ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 249 +++++++++++++ .../testJoinOnMultipleDatabases.Sort.plan | 135 +++++++ ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 249 +++++++++++++ .../testJoinWithMultipleJoinQual1.Hash.plan | 24 +- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 46 +-- .../testJoinWithMultipleJoinQual1.Sort.plan | 24 +- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 46 +-- .../testTPCHQ2Join.Hash.plan | 64 ++-- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 184 +++++----- .../testTPCHQ2Join.Sort.plan | 64 ++-- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 184 +++++----- .../testWhereClauseJoin1.Hash.plan | 16 +- ...testWhereClauseJoin1.Hash_NoBroadcast.plan | 38 +- .../testWhereClauseJoin1.Sort.plan | 16 +- ...testWhereClauseJoin1.Sort_NoBroadcast.plan | 38 +- .../testWhereClauseJoin2.Hash.plan | 16 +- ...testWhereClauseJoin2.Hash_NoBroadcast.plan | 38 +- .../testWhereClauseJoin2.Sort.plan | 16 +- ...testWhereClauseJoin2.Sort_NoBroadcast.plan | 38 +- .../testWhereClauseJoin3.Hash.plan | 16 +- ...testWhereClauseJoin3.Hash_NoBroadcast.plan | 38 +- .../testWhereClauseJoin3.Sort.plan | 16 +- ...testWhereClauseJoin3.Sort_NoBroadcast.plan | 38 +- .../testWhereClauseJoin4.Hash.plan | 16 +- ...testWhereClauseJoin4.Hash_NoBroadcast.plan | 38 +- .../testWhereClauseJoin4.Sort.plan | 16 +- ...testWhereClauseJoin4.Sort_NoBroadcast.plan | 38 +- .../testBroadcastSubquery2.Hash.plan | 202 +++++------ ...stBroadcastSubquery2.Hash_NoBroadcast.plan | 340 +++++++++--------- .../testBroadcastSubquery2.Sort.plan | 202 +++++------ ...stBroadcastSubquery2.Sort_NoBroadcast.plan | 340 +++++++++--------- .../testInnerAndOuterWithEmpty.1.Hash.plan | 16 +- ...rAndOuterWithEmpty.1.Hash_NoBroadcast.plan | 38 +- .../testInnerAndOuterWithEmpty.1.Sort.plan | 16 +- ...rAndOuterWithEmpty.1.Sort_NoBroadcast.plan | 38 +- ...uterJoinPredicationCaseByCase1.1.Hash.plan | 54 +-- ...icationCaseByCase1.1.Hash_NoBroadcast.plan | 54 +-- ...uterJoinPredicationCaseByCase1.1.Sort.plan | 54 +-- ...icationCaseByCase1.1.Sort_NoBroadcast.plan | 54 +-- .../testLeftOuterJoin3.Hash.plan | 109 ++++-- .../testLeftOuterJoin3.Sort.plan | 109 ++++-- ...uterJoinPredicationCaseByCase2.1.Hash.plan | 103 ++++-- ...uterJoinPredicationCaseByCase2.1.Sort.plan | 103 ++++-- ...erJoinPredicationCaseByCase2_1.1.Hash.plan | 20 +- ...ationCaseByCase2_1.1.Hash_NoBroadcast.plan | 44 +-- ...erJoinPredicationCaseByCase2_1.1.Sort.plan | 20 +- ...ationCaseByCase2_1.1.Sort_NoBroadcast.plan | 44 +-- .../testOuterJoinAndCaseWhen1.Hash.plan | 109 +++--- .../testOuterJoinAndCaseWhen1.Sort.plan | 109 +++--- ...uterJoinPredicationCaseByCase2.1.Hash.plan | 16 +- ...icationCaseByCase2.1.Hash_NoBroadcast.plan | 40 +-- ...uterJoinPredicationCaseByCase2.1.Sort.plan | 16 +- ...icationCaseByCase2.1.Sort_NoBroadcast.plan | 40 +-- .../TestUnionQuery/testComplexUnion2.plan | 68 ++-- .../apache/tajo/plan/LogicalOptimizer.java | 3 - .../GreedyHeuristicJoinOrderAlgorithm.java | 55 +-- .../apache/tajo/plan/joinorder/JoinGraph.java | 119 +----- .../tajo/plan/joinorder/JoinOrderingUtil.java | 30 +- .../apache/tajo/plan/util/PlannerUtil.java | 3 +- 114 files changed, 3478 insertions(+), 2733 deletions(-) diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index 074ea4ddc5..bba5c0b530 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -27,11 +27,11 @@ import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.logical.*; -import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; -import org.apache.tajo.util.TUtil; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Stack; /** * Tajo's logical planner can generate different shapes of logical plans for the same query, @@ -41,26 +41,11 @@ public class ExplainPlanPreprocessorForTest { private static final PlanShapeFixerContext shapeFixerContext = new PlanShapeFixerContext(); private static final PlanShapeFixer shapeFixer = new PlanShapeFixer(); - private static final PidCollectorContext collectorContext = new PidCollectorContext(); - private static final JoinPidCollector joinPidCollector = new JoinPidCollector(); - private static final PidReseterContext resetContext = new PidReseterContext(); - private static final JoinPidReseter joinPidReseter = new JoinPidReseter(); public void prepareTest(LogicalPlan plan) throws PlanningException { // Plan shape fixer shapeFixerContext.reset(); shapeFixer.visit(shapeFixerContext, plan, plan.getRootBlock()); - - /* - * During join order optimization, new join nodes are created based on the chosen join order. - * So, they have different pids for each query execution. - * JoinPidCollector and JoinPidReseter reset the pids of join nodes. - */ -// collectorContext.reset(); -// joinPidCollector.visit(collectorContext, plan, plan.getRootBlock()); - -// resetContext.reset(collectorContext.joinPids); -// joinPidReseter.visit(resetContext, plan, plan.getRootBlock()); } private static class PlanShapeFixerContext { @@ -150,18 +135,6 @@ public LogicalNode visitJoin(PlanShapeFixerContext context, LogicalPlan plan, Lo int rightChildNum = context.childNumbers.pop(); int leftChildNum = context.childNumbers.pop(); -// if (PlannerUtil.isCommutativeJoin(node.getJoinType())) { -// -// if (leftChildNum < rightChildNum) { -// swapChildren(node); -// } else if (leftChildNum == rightChildNum) { -// if (node.getLeftChild().getOutSchema().toString().compareTo(node.getRightChild().getOutSchema().toString()) < -// 0) { -// swapChildren(node); -// } -// } -// } - if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); } @@ -200,12 +173,6 @@ private Target[] sortTargets(Target[] targets) { Arrays.sort(targets, targetComparator); return targets; } - - private static void swapChildren(JoinNode node) { - LogicalNode tmpChild = node.getLeftChild(); - node.setLeftChild(node.getRightChild()); - node.setRightChild(tmpChild); - } } public static class ColumnComparator implements Comparator { @@ -232,54 +199,4 @@ public int compare(Target o1, Target o2) { } } - private static class PidCollectorContext { - List joinPids = TUtil.newList(); - public void reset() { - joinPids.clear(); - } - } - - /** - * {@link JoinPidCollector} collects the pids of all join - * nodes. - */ - private static class JoinPidCollector extends BasicLogicalPlanVisitor { - - @Override - public LogicalNode visitJoin(PidCollectorContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinNode node, Stack stack) throws PlanningException { - context.joinPids.add(node.getPID()); - super.visitJoin(context, plan, block, node, stack); - - return null; - } - } - - private static class PidReseterContext { - List joinPids; - - public void reset(List joinPids) { - this.joinPids = joinPids; - Collections.sort(this.joinPids); - } - } - - /** - * {@link JoinPidReseter} resets pids of join nodes with the pids collected by {@link JoinPidCollector} in ascending - * order while traversing the query plan. - */ - private static class JoinPidReseter extends BasicLogicalPlanVisitor { - - @Override - public LogicalNode visitJoin(PidReseterContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinNode node, Stack stack) throws PlanningException { - super.visitJoin(context, plan, block, node, stack); -// block.unregisterNode(node); - node.setPID(context.joinPids.remove(0)); - block.registerNode(node); - - return null; - } - } - } diff --git a/tajo-core/src/test/resources/queries/TestInnerJoinWithSubQuery/testBroadcastSubquery2.sql b/tajo-core/src/test/resources/queries/TestInnerJoinWithSubQuery/testBroadcastSubquery2.sql index ae85bdd7c8..f3b099596e 100644 --- a/tajo-core/src/test/resources/queries/TestInnerJoinWithSubQuery/testBroadcastSubquery2.sql +++ b/tajo-core/src/test/resources/queries/TestInnerJoinWithSubQuery/testBroadcastSubquery2.sql @@ -1,6 +1,6 @@ select sum(b.l_quantity) from ( - select a.l_orderkey, a.l_quantity + select a.l_orderkey, a.l_quantity, a.l_linenumber from lineitem a join part on a.l_partkey = p_partkey) b join orders c on c.o_orderkey = b.l_orderkey diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan index 9ef1c9d264..03a2441c92 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -29,19 +16,32 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.lineitem - 3: type=Broadcast, tables=default.customer + 0: type=Broadcast, tables=default.customer + 1: type=Broadcast, tables=default.orders + 2: type=Broadcast, tables=default.part + 3: type=Broadcast, tables=default.lineitem SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.part.p_name (TEXT) (asc),default.nation.n_name (TEXT) (asc) @@ -78,19 +78,6 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -100,19 +87,32 @@ SORT(26) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index ca9b8f7ef2..b963f5b43d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -29,19 +16,32 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,137 +79,137 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) + +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(2) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +JOIN(14)(INNER) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000005 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(2) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan index 9ef1c9d264..03a2441c92 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -29,19 +16,32 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.lineitem - 3: type=Broadcast, tables=default.customer + 0: type=Broadcast, tables=default.customer + 1: type=Broadcast, tables=default.orders + 2: type=Broadcast, tables=default.part + 3: type=Broadcast, tables=default.lineitem SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.part.p_name (TEXT) (asc),default.nation.n_name (TEXT) (asc) @@ -78,19 +78,6 @@ SORT(26) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -100,19 +87,32 @@ SORT(26) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index ca9b8f7ef2..b963f5b43d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) @@ -29,19 +16,32 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + SCAN(1) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(13)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,137 +79,137 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) + +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) - -SCAN(2) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +JOIN(14)(INNER) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000005 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(2) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) JOIN(15)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan index 8bc07bfd84..453e12feb4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan index 5d0de2fb45..b430c88afe 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan index 8bc07bfd84..453e12feb4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan index 5d0de2fb45..b430c88afe 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan index 724e240a5c..26246d6673 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan index 9a40283c18..f6ad6bcecc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan index 724e240a5c..26246d6673 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan index 9a40283c18..f6ad6bcecc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan index 724e240a5c..26246d6673 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan index 9a40283c18..f6ad6bcecc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan index 724e240a5c..26246d6673 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan index 9a40283c18..f6ad6bcecc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan index 35e397bd9b..8757ae9292 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan index 243acc22b2..9f115bfb99 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan index 35e397bd9b..8757ae9292 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan index 243acc22b2..9f115bfb99 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan index 78b074a4d2..b76c6e2544 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan index 214097c0d1..26dc4d9416 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan index 78b074a4d2..b76c6e2544 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan index 214097c0d1..26dc4d9416 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(1) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan index b4d85658fb..c9452e6c4c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan index 4a2b03dcad..3d33f1dd4c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan index b4d85658fb..c9452e6c4c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan index 4a2b03dcad..3d33f1dd4c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan index d1c32a08b9..1ab52e9f4e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan index 5a0c312348..c6262203c5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan index d1c32a08b9..1ab52e9f4e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan index 5a0c312348..c6262203c5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan index 4997c1d9e9..f1f3af1161 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan index f0e930f6bd..4828d9fb48 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan index 4997c1d9e9..f1f3af1161 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan index f0e930f6bd..4828d9fb48 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.customer => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan index 988980c691..a684a0ca66 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan index 742e346173..a71bd54453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(1) default.empty_orders.o_orderkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan index 988980c691..a684a0ca66 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan index 742e346173..a71bd54453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(1) default.empty_orders.o_orderkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan index 27de587124..e3cbb61f7c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan index 0048ac60e1..6cf1244756 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan index 27de587124..e3cbb61f7c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan index 0048ac60e1..6cf1244756 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} SCAN(1) on default.region as b => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan index 988980c691..a684a0ca66 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan index 742e346173..a71bd54453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(1) default.empty_orders.o_orderkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan index 988980c691..a684a0ca66 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan index 742e346173..a71bd54453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4) => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(1) default.empty_orders.o_orderkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.customer.c_custkey (INT4)} => in schema: {(1) default.customer.c_custkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(1) default.empty_orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan index 0120a2bc11..244bfa9bc7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan index afc6b062a6..f5ee800fe9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan index 0120a2bc11..244bfa9bc7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan index afc6b062a6..f5ee800fe9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} SCAN(0) on default.nation as b => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan index e69de29bb2..e9a906dfc2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan @@ -0,0 +1,135 @@ +explain +------------------------------- +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000009 +2: eb_0000000000000_0000_000010 +3: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000009 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=joins.supplier_ + 2: type=Broadcast, tables=joins.part_ + 3: type=Broadcast, tables=default.partsupp + +SORT(26) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index e69de29bb2..018adfbf1f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -0,0 +1,249 @@ +explain +------------------------------- +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +10: eb_0000000000000_0000_000010 +11: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) + +SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000005 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +SORT(26) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan index e69de29bb2..e9a906dfc2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan @@ -0,0 +1,135 @@ +explain +------------------------------- +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000009 +2: eb_0000000000000_0000_000010 +3: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000009 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=joins.supplier_ + 2: type=Broadcast, tables=joins.part_ + 3: type=Broadcast, tables=default.partsupp + +SORT(26) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index e69de29bb2..018adfbf1f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -0,0 +1,249 @@ +explain +------------------------------- +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +explain +------------------------------- +------------------------------------------------------------------------------- +Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) +------------------------------------------------------------------------------- +|-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 +------------------------------------------------------------------------------- +Order of Execution +------------------------------------------------------------------------------- +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 +8: eb_0000000000000_0000_000008 +9: eb_0000000000000_0000_000009 +10: eb_0000000000000_0000_000010 +11: eb_0000000000000_0000_000011 +------------------------------------------------------------------------------- + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) + +SCAN(1) on joins.supplier_ + => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) + => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000005 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +SCAN(0) on joins.part_ + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +SORT(26) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + JOIN(16)(INNER) + => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT) + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) + +[Enforcers] + 0: sorted input=eb_0000000000000_0000_000009 + +SORT(6) + => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) + SCAN(27) on eb_0000000000000_0000_000009 + => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [TERMINAL] +======================================================= diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan index 3f55861e0d..b775465b47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan @@ -16,7 +16,7 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -29,19 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -87,7 +87,7 @@ SORT(26) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -100,19 +100,19 @@ SORT(26) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index cf7290174f..6205f76def 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -16,7 +16,7 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -29,19 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,24 +79,24 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] @@ -127,23 +127,23 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] @@ -156,7 +156,7 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -JOIN(13)(INNER) +JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan index 3f55861e0d..b775465b47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan @@ -16,7 +16,7 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -29,19 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -87,7 +87,7 @@ SORT(26) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -100,19 +100,19 @@ SORT(26) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index cf7290174f..6205f76def 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -16,7 +16,7 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -29,19 +29,19 @@ SORT(10) => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,24 +79,24 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] @@ -127,23 +127,23 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(13)(INNER) => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] @@ -156,7 +156,7 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] [Outgoing] [q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -JOIN(13)(INNER) +JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan index 4c8dc2bea5..614b80cfde 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -29,7 +16,7 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(6) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.supplier - 2: type=Broadcast, tables=default.partsupp - 3: type=Broadcast, tables=default.region + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.supplier + 3: type=Broadcast, tables=default.partsupp SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) @@ -78,19 +78,6 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -100,7 +87,7 @@ SORT(26) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -113,6 +100,19 @@ SORT(26) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index 4b285f7a37..dcaf0d5fb7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -29,7 +16,7 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(6) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,7 +79,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -87,11 +111,11 @@ SCAN(1) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) SCAN(2) on default.partsupp => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) @@ -103,30 +127,53 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 + SCAN(20) on eb_0000000000000_0000_000004 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(0) on default.part => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) @@ -134,82 +181,35 @@ SCAN(0) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan index 4c8dc2bea5..614b80cfde 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -29,7 +16,7 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(6) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.supplier - 2: type=Broadcast, tables=default.partsupp - 3: type=Broadcast, tables=default.region + 0: type=Broadcast, tables=default.region + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.supplier + 3: type=Broadcast, tables=default.partsupp SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) @@ -78,19 +78,6 @@ SORT(26) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -100,7 +87,7 @@ SORT(26) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -113,6 +100,19 @@ SORT(26) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index 4b285f7a37..dcaf0d5fb7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -7,19 +7,6 @@ SORT(6) => target list: default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) @@ -29,7 +16,7 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(13)(INNER) + JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -42,6 +29,19 @@ SORT(6) => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,7 +79,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -87,11 +111,11 @@ SCAN(1) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) SCAN(2) on default.partsupp => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) @@ -103,30 +127,53 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) + +JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 + SCAN(20) on eb_0000000000000_0000_000004 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(0) on default.part => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) @@ -134,82 +181,35 @@ SCAN(0) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) JOIN(15)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000004 + SCAN(23) on eb_0000000000000_0000_000007 => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000003 + SCAN(22) on eb_0000000000000_0000_000006 => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} -======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -JOIN(14)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000005 => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan index fff67529e4..6da36f78ce 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan index ce8b39b6e6..f2880e41cd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan index fff67529e4..6da36f78ce 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan index ce8b39b6e6..f2880e41cd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan index abcdf6ec64..549fe31562 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan index 32b75cdc26..cde528c53b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan index abcdf6ec64..549fe31562 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan index 32b75cdc26..cde528c53b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan index faa5926d39..458abea3f8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan index b46814752c..ef80741256 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan index faa5926d39..458abea3f8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan index b46814752c..ef80741256 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan index 9ca4d412a2..fc238ee776 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan index a93456ca3f..5500da3127 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan index 9ca4d412a2..fc238ee776 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan index a93456ca3f..5500da3127 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(0) on default.nation => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan index bd6c56b34f..037904d747 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan @@ -8,58 +8,58 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) @@ -73,27 +73,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000008 2: eb_0000000000000_0000_000010 3: eb_0000000000000_0000_000011 4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.part -GROUP_BY(27)(l_orderkey) +GROUP_BY(31)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} @@ -125,15 +125,15 @@ Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) [Enforcers] - 0: type=Broadcast, tables=default.c - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.a + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.a + 2: type=Broadcast, tables=default.c GROUP_BY(35)() => exprs: (sum(default.b.l_quantity (FLOAT8))) @@ -143,52 +143,52 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + SCAN(32) on eb_0000000000000_0000_000008 + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan index da78507b58..ecda053c9a 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan @@ -8,58 +8,58 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) @@ -75,12 +75,12 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000010 |-eb_0000000000000_0000_000009 |-eb_0000000000000_0000_000008 - |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution @@ -88,11 +88,11 @@ Order of Execution 1: eb_0000000000000_0000_000002 2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000001 +5: eb_0000000000000_0000_000006 6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000008 -8: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000005 +8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 @@ -106,7 +106,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(8) on default.part +SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} @@ -116,12 +116,12 @@ Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] @@ -129,69 +129,37 @@ Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] [Incoming] [q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) - -GROUP_BY(27)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) - => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000003 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - SCAN(25) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} +TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000003 + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + SCAN(25) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -200,90 +168,122 @@ SCAN(5) on default.orders as c => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(1) on default.part +SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000005 - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000001 + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(28) on eb_0000000000000_0000_000004 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000001 => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(1) default.c.o_orderkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) + +GROUP_BY(31)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) + => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000007 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + SCAN(29) on eb_0000000000000_0000_000006 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} +TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} SCAN(32) on eb_0000000000000_0000_000008 - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) @@ -296,16 +296,16 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(34) on eb_0000000000000_0000_000009 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - SCAN(33) on eb_0000000000000_0000_000006 - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(33) on eb_0000000000000_0000_000005 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan index bd6c56b34f..037904d747 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan @@ -8,58 +8,58 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) @@ -73,27 +73,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000008 2: eb_0000000000000_0000_000010 3: eb_0000000000000_0000_000011 4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.part -GROUP_BY(27)(l_orderkey) +GROUP_BY(31)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} @@ -125,15 +125,15 @@ Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) [Enforcers] - 0: type=Broadcast, tables=default.c - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.a + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.a + 2: type=Broadcast, tables=default.c GROUP_BY(35)() => exprs: (sum(default.b.l_quantity (FLOAT8))) @@ -143,52 +143,52 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + SCAN(32) on eb_0000000000000_0000_000008 + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan index da78507b58..ecda053c9a 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan @@ -8,58 +8,58 @@ GROUP_BY(18)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} + SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} - SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 => target list: default.c.o_orderkey (INT4) @@ -75,12 +75,12 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000010 |-eb_0000000000000_0000_000009 |-eb_0000000000000_0000_000008 - |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution @@ -88,11 +88,11 @@ Order of Execution 1: eb_0000000000000_0000_000002 2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000001 +4: eb_0000000000000_0000_000001 +5: eb_0000000000000_0000_000006 6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000008 -8: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000005 +8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 @@ -106,7 +106,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(8) on default.part +SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} @@ -116,12 +116,12 @@ Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] @@ -129,69 +129,37 @@ Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] [Incoming] [q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) - -GROUP_BY(27)(l_orderkey) - => exprs: (avg(default.e.l_quantity (FLOAT8))) - => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) - => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - TABLE_SUBQUERY(11) as default.e - => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) - => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} - PROJECTION(10) - => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - JOIN(21)(INNER) - => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000003 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - SCAN(25) on eb_0000000000000_0000_000002 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - PROJECTION(13) - => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - GROUP_BY(12)(l_orderkey) - => exprs: (avg(?avg_11 (PROTOBUF))) - => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) - => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} - => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} - => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} +TABLE_SUBQUERY(4) as default.b + => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} + PROJECTION(3) + => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + JOIN(20)(INNER) + => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000003 + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + SCAN(25) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -200,90 +168,122 @@ SCAN(5) on default.orders as c => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(1) on default.part +SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) JOIN(22)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) - => target list: default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8) - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(3) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000005 - => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000001 + => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(28) on eb_0000000000000_0000_000004 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000001 => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(1) default.c.o_orderkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) + +GROUP_BY(31)(l_orderkey) + => exprs: (avg(default.e.l_quantity (FLOAT8))) + => target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF) + => out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema:{(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + TABLE_SUBQUERY(11) as default.e + => Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8) + => out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + => in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)} + PROJECTION(10) + => Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + JOIN(21)(INNER) + => Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000007 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + SCAN(29) on eb_0000000000000_0000_000006 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.b - => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} - PROJECTION(3) - => Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - JOIN(20)(INNER) - => Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(2) default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} +TABLE_SUBQUERY(14) as default.f + => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + PROJECTION(13) + => Targets: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema: {(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + GROUP_BY(12)(l_orderkey) + => exprs: (avg(?avg_11 (PROTOBUF))) + => target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8) + => out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)} + => in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} SCAN(32) on eb_0000000000000_0000_000008 - => out schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(3) default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - SCAN(31) on eb_0000000000000_0000_000007 - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(1) default.part.p_partkey (INT4)} + => out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} + => in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.f.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1) @@ -296,16 +296,16 @@ GROUP_BY(35)() SELECTION(16) => Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8) JOIN(23)(INNER) - => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8) => out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)} - => in schema: {(4) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} SCAN(34) on eb_0000000000000_0000_000009 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - SCAN(33) on eb_0000000000000_0000_000006 - => out schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} - => in schema: {(2) default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8)} + => out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(33) on eb_0000000000000_0000_000005 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan index ceb96f9959..1d5762f6e3 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan index f1fa414673..ba9a319372 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(1) default.b.o_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(1) default.b.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan index ceb96f9959..1d5762f6e3 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan index f1fa414673..ba9a319372 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} SCAN(0) on default.lineitem as a => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(1) default.b.o_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(1) default.b.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan index f7e711c1a1..d44658c132 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) @@ -20,10 +24,6 @@ SORT(5) => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,27 +33,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) @@ -61,11 +61,11 @@ SCAN(1) on default.jointable13 as t3 => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) SCAN(3) on default.jointable14 as t4 => target list: default.t4.id (INT4) @@ -73,34 +73,34 @@ SCAN(3) on default.jointable14 as t4 => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000003 + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000002 + SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) SCAN(0) on default.jointable11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) @@ -112,8 +112,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -126,11 +126,11 @@ SORT(15) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan index f7e711c1a1..d44658c132 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) @@ -20,10 +24,6 @@ SORT(5) => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,27 +33,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) @@ -61,11 +61,11 @@ SCAN(1) on default.jointable13 as t3 => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) SCAN(3) on default.jointable14 as t4 => target list: default.t4.id (INT4) @@ -73,34 +73,34 @@ SCAN(3) on default.jointable14 as t4 => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000003 + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000002 + SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) SCAN(0) on default.jointable11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) @@ -112,8 +112,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -126,11 +126,11 @@ SORT(15) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan index f7e711c1a1..d44658c132 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) @@ -20,10 +24,6 @@ SORT(5) => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,27 +33,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) @@ -61,11 +61,11 @@ SCAN(1) on default.jointable13 as t3 => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) SCAN(3) on default.jointable14 as t4 => target list: default.t4.id (INT4) @@ -73,34 +73,34 @@ SCAN(3) on default.jointable14 as t4 => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000003 + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000002 + SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) SCAN(0) on default.jointable11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) @@ -112,8 +112,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -126,11 +126,11 @@ SORT(15) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan index f7e711c1a1..d44658c132 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) @@ -20,10 +24,6 @@ SORT(5) => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -33,27 +33,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) @@ -61,11 +61,11 @@ SCAN(1) on default.jointable13 as t3 => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) SCAN(3) on default.jointable14 as t4 => target list: default.t4.id (INT4) @@ -73,34 +73,34 @@ SCAN(3) on default.jointable14 as t4 => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) JOIN(8)(FULL_OUTER) => Join Cond: default.t3.id (INT4) = default.t4.id (INT4) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(12) on eb_0000000000000_0000_000003 + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000002 + SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) SCAN(0) on default.jointable11 as t1 => target list: default.t1.id (INT4), default.t1.name (TEXT) @@ -112,8 +112,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -126,11 +126,11 @@ SORT(15) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t3.id (INT4), default.t4.id (INT4)} SCAN(14) on eb_0000000000000_0000_000004 - => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(13) on eb_0000000000000_0000_000003 + => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan index 2418b98008..a688177610 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan @@ -28,27 +28,27 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,23 +56,65 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000011 -2: eb_0000000000000_0000_000012 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000011 +4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 11 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 11 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.c + +JOIN(13)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(1) on default.lineitem as b + => target list: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 11 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 11 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + [Enforcers] 0: type=Broadcast, tables=default.e - 1: type=Broadcast, tables=default.b - 2: type=Broadcast, tables=default.c - 3: type=Broadcast, tables=default.d - 4: type=Broadcast, tables=default.f + 1: type=Broadcast, tables=default.d + 2: type=Broadcast, tables=default.f JOIN(17)(LEFT_OUTER) => Join Cond: default.f.p_partkey (INT4) = default.d.o_orderkey (INT4) @@ -102,27 +144,16 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - SCAN(1) on default.lineitem as b - => target list: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(22) on eb_0000000000000_0000_000004 + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(21) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000012 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan index 2418b98008..a688177610 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan @@ -28,27 +28,27 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) => out schema: {(1) default.b.l_orderkey (INT4)} => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,23 +56,65 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000011 -2: eb_0000000000000_0000_000012 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000011 +4: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 11 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as a + => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 11 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.c + +JOIN(13)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => target list: default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(3) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + SCAN(3) on default.orders as c + => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) + => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(1) on default.lineitem as b + => target list: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 11 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 11 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) + [Enforcers] 0: type=Broadcast, tables=default.e - 1: type=Broadcast, tables=default.b - 2: type=Broadcast, tables=default.c - 3: type=Broadcast, tables=default.d - 4: type=Broadcast, tables=default.f + 1: type=Broadcast, tables=default.d + 2: type=Broadcast, tables=default.f JOIN(17)(LEFT_OUTER) => Join Cond: default.f.p_partkey (INT4) = default.d.o_orderkey (INT4) @@ -102,27 +144,16 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(9) default.d.o_clerk (TEXT), default.d.o_comment (TEXT), default.d.o_custkey (INT4), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.d.o_orderpriority (TEXT), default.d.o_orderstatus (TEXT), default.d.o_shippriority (INT4), default.d.o_totalprice (FLOAT8)} JOIN(14)(LEFT_OUTER) - => Join Cond: default.b.l_orderkey (INT4) = default.c.o_orderkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT) => out schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} - => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) - => out schema: {(2) default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} - JOIN(13)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4) - => out schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - => in schema: {(4) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4)} - SCAN(1) on default.lineitem as b - => target list: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(0) on default.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) - => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(5) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(22) on eb_0000000000000_0000_000004 + => out schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + => in schema: {(2) default.b.l_orderkey (INT4), default.c.o_orderdate (TEXT)} + SCAN(21) on eb_0000000000000_0000_000001 + => out schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} + => in schema: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000012 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash.plan index f5e05867a5..e3bb20c157 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash.plan @@ -10,27 +10,27 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} SCAN(1) on default.jointable12 as t2 => target list: default.t2.id (INT4) => out schema: {(1) default.t2.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,21 +38,63 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + ======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.t3 - 1: type=Broadcast, tables=default.t2 - 2: type=Broadcast, tables=default.t4 + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(1) on default.jointable12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.t4 JOIN(11)(INNER) => Join Cond: default.t2.id (INT4) = default.t4.id (INT4) @@ -64,27 +106,16 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(1) on default.jointable12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort.plan index f5e05867a5..e3bb20c157 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort.plan @@ -10,27 +10,27 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} SCAN(1) on default.jointable12 as t2 => target list: default.t2.id (INT4) => out schema: {(1) default.t2.id (INT4)} => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,21 +38,63 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) + +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + ======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.t3 - 1: type=Broadcast, tables=default.t2 - 2: type=Broadcast, tables=default.t4 + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => target list: default.t2.id (INT4), default.t3.id (INT4) + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(3) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(1) on default.jointable12 as t2 + => target list: default.t2.id (INT4) + => out schema: {(1) default.t2.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.t2.id (INT4), num=32) + +[Enforcers] + 0: type=Broadcast, tables=default.t4 JOIN(11)(INNER) => Join Cond: default.t2.id (INT4) = default.t4.id (INT4) @@ -64,27 +106,16 @@ JOIN(11)(INNER) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} JOIN(10)(LEFT_OUTER) - => Join Cond: default.t2.id (INT4) = default.t3.id (INT4) + => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4) => out schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} => in schema: {(4) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4), default.t3.id (INT4)} - SCAN(3) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.t1.id (INT4) = default.t2.id (INT4) - => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4) - => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t2.id (INT4)} - SCAN(1) on default.jointable12 as t2 - => target list: default.t2.id (INT4) - => out schema: {(1) default.t2.id (INT4)} - => in schema: {(2) default.t2.id (INT4), default.t2.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(16) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + => in schema: {(2) default.t2.id (INT4), default.t3.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan index a35e200dcd..3a058a8f34 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,16 +81,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan index f022519234..a12e09655a 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -65,34 +65,34 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -103,11 +103,11 @@ JOIN(10)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan index a35e200dcd..3a058a8f34 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,16 +81,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan index f022519234..a12e09655a 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(0) on default.jointable11 as t1 => filter: default.t1.id (INT4) > 1 => target list: default.t1.id (INT4), default.t1.name (TEXT) => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -65,34 +65,34 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -103,11 +103,11 @@ JOIN(10)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash.plan index 08ded3e096..b3360324d9 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} SCAN(1) on default.testouterjoinandcasewhen2 as b => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -32,49 +32,78 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 +5: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) + +SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c + 0: type=Broadcast, tables=default.c + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + SCAN(1) on default.testouterjoinandcasewhen2 as b + => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 + => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) SORT(15) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} - JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(1) on default.testouterjoinandcasewhen2 as b - => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 - => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort.plan index 08ded3e096..b3360324d9 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort.plan @@ -3,27 +3,27 @@ explain SORT(5) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} SCAN(1) on default.testouterjoinandcasewhen2 as b => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -32,49 +32,78 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 +5: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) + +SCAN(0) on default.testouterjoinandcasewhen1 as a + => target list: default.a.id (INT4), default.a.name (TEXT) + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c + 0: type=Broadcast, tables=default.c + +JOIN(8)(LEFT_OUTER) + => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => target list: default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT) + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(6) default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(3) on default.testouterjoinandcasewhen1 as c + => target list: default.c.id (INT4), default.c.name (TEXT) + => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} + => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} + SCAN(1) on default.testouterjoinandcasewhen2 as b + => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 + => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.id (INT4), default.a.name (TEXT), num=32) SORT(15) => Sort Keys: default.a.id (INT4) (asc),default.a.name (TEXT) (asc) JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.id (INT4) = default.c.id (INT4) + => Join Cond: default.a.id (INT4) = default.b.id (INT4) => target list: CASE WHEN default.b.name (TEXT) IS NULL THEN 9991231 ELSE default.b.name (TEXT) END as c1, CASE WHEN default.c.name (TEXT) IS NULL THEN 9991231 ELSE default.c.name (TEXT) END as c2, default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT) => out schema: {(6) c1 (TEXT), c2 (TEXT), default.a.id (INT4), default.a.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(8) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.id (INT4), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(3) on default.testouterjoinandcasewhen1 as c - => target list: default.c.id (INT4), default.c.name (TEXT) - => out schema: {(2) default.c.id (INT4), default.c.name (TEXT)} - => in schema: {(4) default.c.id (INT4), default.c.name (TEXT), default.c.score (FLOAT4), default.c.type (TEXT)} - JOIN(8)(LEFT_OUTER) - => Join Cond: default.a.id (INT4) = default.b.id (INT4) - => target list: default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT) - => out schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(6) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - SCAN(1) on default.testouterjoinandcasewhen2 as b - => target list: default.b.id (INT4), default.b.id (INT4) as id2, default.b.name (TEXT), default.b.name (TEXT) as name2 - => out schema: {(4) default.b.id (INT4), default.b.name (TEXT), id2 (INT4), name2 (TEXT)} - => in schema: {(4) default.b.id (INT4), default.b.name (TEXT), default.b.score (FLOAT4), default.b.type (TEXT)} - SCAN(0) on default.testouterjoinandcasewhen1 as a - => target list: default.a.id (INT4), default.a.name (TEXT) - => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} - => in schema: {(4) default.a.id (INT4), default.a.name (TEXT), default.a.score (FLOAT4), default.a.type (TEXT)} + => in schema: {(7) default.a.id (INT4), default.a.name (TEXT), default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(14) on eb_0000000000000_0000_000004 + => out schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + => in schema: {(5) default.b.id (INT4), default.b.name (TEXT), default.c.name (TEXT), id2 (INT4), name2 (TEXT)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan index 22fc8cec55..3520ac9be6 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -61,15 +61,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan index f5486f993f..1255cc5075 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -51,33 +51,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -88,11 +88,11 @@ JOIN(8)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan index 22fc8cec55..3520ac9be6 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -61,15 +61,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan index f5486f993f..1255cc5075 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -51,33 +51,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -88,11 +88,11 @@ JOIN(8)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan b/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan index 2e2280d4a1..9dccd73a00 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan @@ -9,14 +9,6 @@ TABLE_SUBQUERY(8) as default.result => target list: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} => in schema: {(4) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT), default.res2.p_partkey (INT4)} - TABLE_SUBQUERY(5) as default.res2 - => Targets: default.res2.p_partkey (INT4) - => out schema: {(1) default.res2.p_partkey (INT4)} - => in schema: {(9) default.res2.p_brand (TEXT), default.res2.p_comment (TEXT), default.res2.p_container (TEXT), default.res2.p_mfgr (TEXT), default.res2.p_name (TEXT), default.res2.p_partkey (INT4), default.res2.p_retailprice (FLOAT8), default.res2.p_size (INT4), default.res2.p_type (TEXT)} - SCAN(3) on default.part - => target list: default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT) - => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} TABLE_SUBQUERY(2) as default.res1 => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} @@ -25,6 +17,14 @@ TABLE_SUBQUERY(8) as default.result => target list: CASE WHEN default.lineitem.l_partkey (INT4) IS NOT NULL THEN WHEN default.lineitem.l_orderkey (INT4) = 1 THEN 1 ELSE 2 END as url, default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + TABLE_SUBQUERY(5) as default.res2 + => Targets: default.res2.p_partkey (INT4) + => out schema: {(1) default.res2.p_partkey (INT4)} + => in schema: {(9) default.res2.p_brand (TEXT), default.res2.p_comment (TEXT), default.res2.p_container (TEXT), default.res2.p_mfgr (TEXT), default.res2.p_name (TEXT), default.res2.p_partkey (INT4), default.res2.p_retailprice (FLOAT8), default.res2.p_size (INT4), default.res2.p_type (TEXT)} + SCAN(3) on default.part + => target list: default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT) + => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,27 +48,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) - -TABLE_SUBQUERY(2) as default.res1 - => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) - => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - PROJECTION(1) - => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} - => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} - SCAN(0) on default.lineitem - => target list: CASE WHEN default.lineitem.l_partkey (INT4) IS NOT NULL THEN WHEN default.lineitem.l_orderkey (INT4) = 1 THEN 1 ELSE 2 END as url, default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) TABLE_SUBQUERY(5) as default.res2 => Targets: default.res2.p_partkey (INT4) @@ -83,13 +63,33 @@ TABLE_SUBQUERY(5) as default.res2 => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) + +TABLE_SUBQUERY(2) as default.res1 + => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) + => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + PROJECTION(1) + => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} + => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} + SCAN(0) on default.lineitem + => target list: CASE WHEN default.lineitem.l_partkey (INT4) IS NOT NULL THEN WHEN default.lineitem.l_orderkey (INT4) = 1 THEN 1 ELSE 2 END as url, default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) TABLE_SUBQUERY(8) as default.result => Targets: default.result.l_orderkey (INT4), default.result.l_partkey (INT4), default.result.url (TEXT) @@ -105,11 +105,11 @@ TABLE_SUBQUERY(8) as default.result => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} => in schema: {(4) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT), default.res2.p_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.res2.p_partkey (INT4)} - => in schema: {(1) default.res2.p_partkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.res2.p_partkey (INT4)} + => in schema: {(1) default.res2.p_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 6fff1d5c81..378e19e457 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -98,7 +98,6 @@ public LogicalNode optimize(OverridableConf context, LogicalPlan plan) throws Pl } else { LOG.info("Skip join order optimization"); } - // TODO: filter push down rulesAfterToJoinOpt.rewrite(context, plan); return plan.getRootBlock().getRoot(); } @@ -122,8 +121,6 @@ private void optimizeJoinOrder(LogicalPlan plan, String blockName) throws Planni JoinNode old = PlannerUtil.findTopNode(block.getRoot(), NodeType.JOIN); - // TODO: collect all join predicates and set them at the top join node (?) - JoinTargetCollector collector = new JoinTargetCollector(); Set targets = new LinkedHashSet(); collector.visitJoin(targets, plan, block, old, new Stack()); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 4f9980e7c0..cf13126b84 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -22,7 +22,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.SchemaUtil; -import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.AlgebraicUtil; @@ -64,9 +63,6 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo graphContext.setMostLeftVertex(newVertex); } - Set willBeRemoved = TUtil.newHashSet(); - Set willBeAdded = TUtil.newHashSet(); - /* * Once a best pair is chosen, some existing join edges should be removed and new join edges should be added. * @@ -76,24 +72,13 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo * The chosen best pair will be regarded as a join vertex again. * So, the join edges which share any vertexes with the best pair should be updated, too. */ + Set willBeRemoved = TUtil.newHashSet(); + Set willBeAdded = TUtil.newHashSet(); // Find every join edges which should be updated. prepareGraphUpdate(graphContext, joinGraph, bestPair, newVertex, willBeAdded, willBeRemoved); - for (JoinEdge edge : willBeRemoved) { - joinGraph.removeEdge(edge.getLeftVertex(), edge.getRightVertex()); - graphContext.addCandidateJoinConditions(edge.getJoinQual()); - } - - for (JoinEdge edge : willBeAdded) { - joinGraph.addEdge(edge.getLeftVertex(), edge.getRightVertex(), edge); - graphContext.removeCandidateJoinConditions(edge.getJoinQual()); - graphContext.removeCandidateJoinFilters(edge.getJoinQual()); - } - - // Join quals involved by the best pair should be removed. - graphContext.removeCandidateJoinConditions(bestPair.getJoinQual()); - graphContext.removeCandidateJoinFilters(bestPair.getJoinQual()); + updateGraph(graphContext, joinGraph, bestPair, willBeAdded, willBeRemoved); vertexes.remove(bestPair.getLeftVertex()); vertexes.remove(bestPair.getRightVertex()); @@ -106,6 +91,24 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo return new FoundJoinOrder(joinTree, getCost(joinTree)); } + private void updateGraph(JoinGraphContext context, JoinGraph graph, JoinEdge bestPair, + Set willBeAdded, Set willBeRemoved) { + for (JoinEdge edge : willBeRemoved) { + graph.removeEdge(edge.getLeftVertex(), edge.getRightVertex()); + context.addCandidateJoinConditions(edge.getJoinQual()); + } + + for (JoinEdge edge : willBeAdded) { + graph.addEdge(edge.getLeftVertex(), edge.getRightVertex(), edge); + context.removeCandidateJoinConditions(edge.getJoinQual()); + context.removeCandidateJoinFilters(edge.getJoinQual()); + } + + // Join quals involved by the best pair should be removed. + context.removeCandidateJoinConditions(bestPair.getJoinQual()); + context.removeCandidateJoinFilters(bestPair.getJoinQual()); + } + private void prepareGraphUpdate(JoinGraphContext context, JoinGraph graph, JoinEdge bestPair, JoinedRelationsVertex vertex, Set willBeAdded, Set willBeRemoved) { prepareGraphUpdate(context, graph.getOutgoingEdges(bestPair.getLeftVertex()), vertex, true, @@ -126,7 +129,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, Set willBeAdded, Set willBeRemoved) { if (edges != null) { for (JoinEdge edge : edges) { - if (!JoinOrderingUtil.isEqualsOrSymmetric(vertex.getJoinEdge(), edge)) { + if (!JoinOrderingUtil.isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { if (isLeftVertex) { willBeAdded.add(context.getCachedOrNewJoinEdge(edge.getJoinSpec(), vertex, edge.getRightVertex())); } else { @@ -169,11 +172,6 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } // The found join edge may not have join quals even though they can be evaluated during join. // So, possible join quals should be added to the join node before estimating its cost. -// Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( -// graphContext.getCandidateJoinConditions(), foundJoin, true); -// additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( -// graphContext.getCandidateJoinFilters(), foundJoin, false)); -// foundJoin = JoinOrderingUtil.addPredicates(foundJoin, additionalPredicates); JoinOrderingUtil.updateQualIfNecessary(graphContext, foundJoin); double cost = getCost(foundJoin); @@ -298,6 +296,11 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join return null; } + // We assume that every operation has same cost. + // COMPUTATION_FACTOR is used to give the larger cost for longer plans. + // TODO: more accurate cost estimation is required. + private static final double COMPUTATION_FACTOR = 1.1; + /** * Getting a cost of one join * @param joinEdge @@ -345,7 +348,7 @@ public static double getCost(JoinEdge joinEdge) { getCost(joinEdge.getRightVertex()), 2); } - return cost; + return cost * COMPUTATION_FACTOR; } public static double getCost(JoinVertex joinVertex) { @@ -416,6 +419,6 @@ public static double getCost(LogicalNode node) { break; } - return cost; + return cost * COMPUTATION_FACTOR; } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index c3e5a4f4fb..7d6777c410 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -18,126 +18,9 @@ package org.apache.tajo.plan.joinorder; -//<<<<<<< HEAD import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.JoinSpec; import org.apache.tajo.util.graph.SimpleUndirectedGraph; -//======= -//import com.google.common.collect.Sets; -//import org.apache.tajo.algebra.JoinType; -//import org.apache.tajo.catalog.CatalogUtil; -//import org.apache.tajo.catalog.Column; -//import org.apache.tajo.util.StringUtils; -//import org.apache.tajo.util.graph.SimpleUndirectedGraph; -//import org.apache.tajo.plan.LogicalPlan; -//import org.apache.tajo.plan.NamedExprsManager; -//import org.apache.tajo.plan.util.PlannerUtil; -//import org.apache.tajo.plan.PlanningException; -//import org.apache.tajo.plan.expr.AlgebraicUtil; -//import org.apache.tajo.plan.expr.BinaryEval; -//import org.apache.tajo.plan.expr.EvalNode; -//import org.apache.tajo.plan.expr.EvalTreeUtil; -//import org.apache.tajo.plan.logical.JoinNode; -//import org.apache.tajo.plan.logical.RelationNode; -// -//import java.util.*; -// -//public class JoinGraph extends SimpleUndirectedGraph { -// -// private String [] guessRelationsFromJoinQual(LogicalPlan.QueryBlock block, BinaryEval joinCondition) -// throws PlanningException { -// -// // Note that we can guarantee that each join qual used here is a singleton. -// // This is because we use dissect a join qual into conjunctive normal forms. -// // In other words, each join qual has a form 'col1 = col2'. -// Column leftExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getLeftExpr()).get(0); -// Column rightExpr = EvalTreeUtil.findAllColumnRefs(joinCondition.getRightExpr()).get(0); -// -// // 0 - left table, 1 - right table -// String [] relationNames = new String[2]; -// -// NamedExprsManager namedExprsMgr = block.getNamedExprsManager(); -// if (leftExpr.hasQualifier()) { -// relationNames[0] = leftExpr.getQualifier(); -// } else { -// if (namedExprsMgr.isAliasedName(leftExpr.getSimpleName())) { -// String columnName = namedExprsMgr.getOriginalName(leftExpr.getSimpleName()); -// String qualifier = CatalogUtil.extractQualifier(columnName); -// relationNames[0] = qualifier; -// } else { -// // search for a relation which evaluates a right term included in a join condition -// for (RelationNode rel : block.getRelations()) { -// if (rel.getOutSchema().contains(leftExpr)) { -// String qualifier = rel.getCanonicalName(); -// relationNames[0] = qualifier; -// } -// } -// -// if (relationNames[0] == null) { // if not found -// throw new PlanningException("Cannot expect a referenced relation: " + leftExpr); -// } -// } -// } -// -// if (rightExpr.hasQualifier()) { -// relationNames[1] = rightExpr.getQualifier(); -// } else { -// if (namedExprsMgr.isAliasedName(rightExpr.getSimpleName())) { -// String columnName = namedExprsMgr.getOriginalName(rightExpr.getSimpleName()); -// String qualifier = CatalogUtil.extractQualifier(columnName); -// relationNames[1] = qualifier; -// } else { -// // search for a relation which evaluates a right term included in a join condition -// for (RelationNode rel : block.getRelations()) { -// if (rel.getOutSchema().contains(rightExpr)) { -// String qualifier = rel.getCanonicalName(); -// relationNames[1] = qualifier; -// } -// } -// -// if (relationNames[1] == null) { // if not found -// throw new PlanningException("Cannot expect a referenced relation: " + rightExpr); -// } -// } -// } -// -// return relationNames; -// } -// -// public Collection addJoin(LogicalPlan plan, LogicalPlan.QueryBlock block, -// JoinNode joinNode) throws PlanningException { -// if (joinNode.getJoinType() == JoinType.LEFT_OUTER || joinNode.getJoinType() == JoinType.RIGHT_OUTER) { -// JoinEdge edge = new JoinEdge(joinNode.getJoinType(), -// joinNode.getLeftChild(), joinNode.getRightChild(), joinNode.getJoinQual()); -// -// SortedSet leftNodeRelationName = -// new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getLeftChild())); -// SortedSet rightNodeRelationName = -// new TreeSet(PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getRightChild())); -// -// addEdge( -// StringUtils.join(leftNodeRelationName, ", "), -// StringUtils.join(rightNodeRelationName, ", "), -// edge); -// -// Set allInOneCnf = new HashSet(); -// allInOneCnf.add(joinNode.getJoinQual()); -// -// return allInOneCnf; -// } else { -// Set cnf = Sets.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual())); -// -// for (EvalNode singleQual : cnf) { -// if (EvalTreeUtil.isJoinQual(block, -// joinNode.getLeftChild().getOutSchema(), -// joinNode.getRightChild().getOutSchema(), -// singleQual, true)) { -// String[] relations = guessRelationsFromJoinQual(block, (BinaryEval) singleQual); -// String leftExprRelName = relations[0]; -// String rightExprRelName = relations[1]; -// -// Collection leftLineage = PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getLeftChild()); -//>>>>>>> 53ed1c376f4969b5a2c54e30ddbd8113847a8768 /** * A join graph must be the connected graph @@ -149,4 +32,4 @@ public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex this.addEdge(left, right, edge); return edge; } -} +} \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 0d43cbd284..edef92a00c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -69,19 +69,10 @@ public static boolean checkIfEvaluatedAtEdge(EvalNode evalNode, JoinEdge edge, b return true; } - public static JoinEdge addPredicates(JoinEdge edge, Set predicates) { - if (!predicates.isEmpty()) { - if (edge.getJoinType() == JoinType.CROSS) { - edge.getJoinSpec().setType(JoinType.INNER); - } - edge.addJoinPredicates(predicates); - } - return edge; - } - public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftEdge, JoinEdge rightEdge) { if (isAssociativeJoinType(leftEdge.getJoinType(), rightEdge.getJoinType())) { - // There will be more quals which can be evaluated at input edges. + + // NOTE: There will be more quals which are able to be evaluated at input join edges. // In this case, the input edges are not associative to evaluate quals at proper join edges. // Create a temporal left-deep join node to find the potentially evaluatable quals. @@ -246,10 +237,15 @@ public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan /** * Find all interchangeable vertexes from the given vertex. - * A vertex is interchangeable with the given vertex if they are reachable. + * Join edges between relations are found at runtime. * - * @param context - * @param from + *

    Vertex interchange rules

    + * - A vertex is interchangeable with the start vertex if it is reachable. + * - A vertex is reachable from the start vertex if it is able to replace another vertex which is connected to the start vertex. + * - A vertex is able to replace another vertex if they are connected without violating join commutativity or join associativity. + * + * @param context join graph context + * @param from start vertex * @return */ public static Set getAllInterchangeableVertexes(JoinGraphContext context, JoinVertex from) { @@ -266,8 +262,6 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra for (JoinEdge candidateEdge : candidateEdges) { // Evaluatable quals must be added to check the associativity of join edges. candidateEdge = updateQualIfNecessary(context, candidateEdge); -// if (PlannerUtil.isCommutativeJoin(candidateEdge.getJoinType()) -// && !founds.contains(candidateEdge.getRightVertex())) { if (founds.contains(candidateEdge.getRightVertex())) { List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); boolean reacheable = true; @@ -295,7 +289,7 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra } } - public static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { + public static boolean isEqualsOrCommutative(JoinEdge edge1, JoinEdge edge2) { if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { return true; } @@ -335,7 +329,7 @@ public static Set getAllAssociativeEdges(JoinGraphContext context, Joi if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (!isEqualsOrSymmetric(edge, candidateEdge) && + if (!isEqualsOrCommutative(edge, candidateEdge) && JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { associativeEdges.add(candidateEdge); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index f95be803ff..72ef4d0d71 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -775,7 +775,8 @@ public static T clone(LogicalPlan plan, LogicalNode node } public static boolean isCommutativeJoin(JoinType joinType) { - return joinType == JoinType.INNER || joinType == JoinType.CROSS; + // Full outer join is also commutative. + return joinType == JoinType.INNER || joinType == JoinType.CROSS || joinType == JoinType.FULL_OUTER; } public static boolean isOuterJoin(JoinType joinType) { From d9b998e0850f1ec10a51b87834da58610300dcbb Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 11 Jun 2015 15:34:46 +0900 Subject: [PATCH 37/43] Fix a bug --- .../tajo/master/exec/QueryExecutor.java | 4 + .../tajo/engine/query/TestInnerJoinQuery.java | 2 +- .../testWhereClauseJoin5.Hash.plan | 2 +- .../testWhereClauseJoin5.Sort.plan | 2 +- .../testBroadcastSubquery.Hash.plan | 84 +++--- ...estBroadcastSubquery.Hash_NoBroadcast.plan | 108 +++---- .../testBroadcastSubquery.Sort.plan | 84 +++--- ...estBroadcastSubquery.Sort_NoBroadcast.plan | 108 +++---- .../results/TestTPCH/testTPCHQ5.plan | 282 +++++++++--------- .../results/TestUnionQuery/testUnion12.result | 3 +- .../results/TestUnionQuery/testUnion13.result | 3 +- tajo-core/src/test/tpch/part.tbl | 7 +- .../apache/tajo/plan/LogicalOptimizer.java | 32 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 37 ++- .../apache/tajo/plan/joinorder/JoinGraph.java | 8 + .../tajo/plan/joinorder/JoinGraphContext.java | 44 ++- .../tajo/plan/joinorder/JoinOrderingUtil.java | 30 +- .../plan/joinorder/JoinedRelationsVertex.java | 2 +- .../apache/tajo/plan/util/PlannerUtil.java | 2 +- 19 files changed, 458 insertions(+), 386 deletions(-) diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java index 281edad0c5..298a911052 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java @@ -166,10 +166,14 @@ public void execExplain(LogicalPlan plan, QueryContext queryContext, boolean isG SubmitQueryResponse.Builder response) throws Exception { String explainStr; + explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot()); + LOG.info("What1 \n" + explainStr); boolean isTest = queryContext.getBool(SessionVars.TEST_PLAN_SHAPE_FIX_ENABLED); if (isTest) { ExplainPlanPreprocessorForTest preprocessorForTest = new ExplainPlanPreprocessorForTest(); preprocessorForTest.prepareTest(plan); + explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot()); + LOG.info("What2 \n" + explainStr); } if (isGlobal) { diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java index 438d5acfb5..a0b5d9aa68 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java @@ -64,7 +64,7 @@ public final void testCrossJoin() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testCrossJoinWithThetaJoinConditionInWhere() throws Exception { runSimpleTests(); diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan index 93829fc319..31b4067276 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan @@ -49,7 +49,7 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [Enforcers] 0: type=Broadcast, tables=default.supplier - 1: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.partsupp SORT(16) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan index 93829fc319..31b4067276 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan @@ -49,7 +49,7 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [Enforcers] 0: type=Broadcast, tables=default.supplier - 1: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.partsupp SORT(16) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan index b4ad794fa8..2b7db47b3d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.orders + 0: type=Broadcast, tables=default.orders + 1: type=Broadcast, tables=default.part SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan index 551dc262c5..0c134d5453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,19 +57,27 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) @@ -81,51 +89,43 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan index b4ad794fa8..2b7db47b3d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.orders + 0: type=Broadcast, tables=default.orders + 1: type=Broadcast, tables=default.part SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan index 551dc262c5..0c134d5453 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,19 +57,27 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) @@ -81,51 +89,43 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan index 471101e358..6477480e93 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan @@ -8,43 +8,29 @@ SORT(8) => out schema:{(2) default.nation.n_name (TEXT), revenue (FLOAT8)} => in schema:{(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} JOIN(20)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: ?multiply (FLOAT8), default.nation.n_name (TEXT) => out schema: {(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} - => in schema: {(8) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_nationkey (INT4)} JOIN(19)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(5) on default.region - => filter: default.region.r_name (TEXT) = ASIA - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) + => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4) + => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} + => in schema: {(8) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} JOIN(18)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(3) on default.supplier => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(17)(INNER) - => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) - => target list: ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4) - => out schema: {(5) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4)} - => in schema: {(7) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - JOIN(16)(INNER) + JOIN(17)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4) => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} @@ -58,6 +44,20 @@ SORT(8) => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + JOIN(16)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(5) on default.region + => filter: default.region.r_name (TEXT) = ASIA + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,25 +69,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000014) |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 |-eb_0000000000000_0000_000009 - |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 - |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000003 -4: eb_0000000000000_0000_000004 -5: eb_0000000000000_0000_000006 -6: eb_0000000000000_0000_000007 -7: eb_0000000000000_0000_000005 -8: eb_0000000000000_0000_000008 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000005 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000003 +8: eb_0000000000000_0000_000006 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 @@ -101,7 +101,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(5) on default.region + => filter: default.region.r_name (TEXT) = ASIA + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) SCAN(1) on default.orders => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 @@ -110,11 +135,11 @@ SCAN(1) on default.orders => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) SCAN(2) on default.lineitem => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply @@ -122,34 +147,23 @@ SCAN(2) on default.lineitem => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= -[Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) - [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(16)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) - => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000002 - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000001 - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} +SCAN(3) on default.supplier + => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) SCAN(0) on default.customer => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) @@ -157,118 +171,104 @@ SCAN(0) on default.customer => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000006 [LEAF] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) - -SCAN(3) on default.supplier - => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +JOIN(16)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000002 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000001 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 11 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), default.lineitem.l_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) JOIN(17)(INNER) - => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) - => target list: ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4) - => out schema: {(5) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4)} - => in schema: {(7) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000004 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000003 - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} - => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) + => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000005 + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000004 + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) JOIN(18)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(27) on eb_0000000000000_0000_000007 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000006 + => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000008 + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000007 => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) - -SCAN(5) on default.region - => filter: default.region.r_name (TEXT) = ASIA - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) JOIN(19)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) + => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4) + => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} + => in schema: {(8) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(29) on eb_0000000000000_0000_000009 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(28) on eb_0000000000000_0000_000008 - => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(28) on eb_0000000000000_0000_000006 + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} + => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000011 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 11 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), default.lineitem.l_suppkey (INT4), num=32) -[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 11 => 12 (type=HASH_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -279,16 +279,16 @@ GROUP_BY(32)(n_name) => out schema:{(2) default.nation.n_name (TEXT), ?sum_7 (FLOAT8)} => in schema:{(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} JOIN(20)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) => target list: ?multiply (FLOAT8), default.nation.n_name (TEXT) => out schema: {(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} - => in schema: {(8) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_nationkey (INT4)} SCAN(31) on eb_0000000000000_0000_000010 - => out schema: {(3) default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000005 - => out schema: {(5) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4)} - => in schema: {(5) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4)} + => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} + => in schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000003 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000012 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testUnion12.result b/tajo-core/src/test/resources/results/TestUnionQuery/testUnion12.result index c130afa18f..4050574d7f 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testUnion12.result +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testUnion12.result @@ -3,4 +3,5 @@ col1,col2,col3 R,46796.47,1993-11-24F PROMO BURNISHED COPPER,90100.0,1993goldenrod lavender spring chocolate lace LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle -STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk \ No newline at end of file +STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk +SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testUnion13.result b/tajo-core/src/test/resources/results/TestUnionQuery/testUnion13.result index c130afa18f..4050574d7f 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testUnion13.result +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testUnion13.result @@ -3,4 +3,5 @@ col1,col2,col3 R,46796.47,1993-11-24F PROMO BURNISHED COPPER,90100.0,1993goldenrod lavender spring chocolate lace LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle -STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk \ No newline at end of file +STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk +SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink \ No newline at end of file diff --git a/tajo-core/src/test/tpch/part.tbl b/tajo-core/src/test/tpch/part.tbl index 5fbdb4682e..6e6fa721c9 100644 --- a/tajo-core/src/test/tpch/part.tbl +++ b/tajo-core/src/test/tpch/part.tbl @@ -1,3 +1,4 @@ -1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi| -2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|15|LG CASE|902.00|lar accounts amo| -3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag| +1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi +2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|15|LG CASE|902.00|lar accounts amo +3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag +4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index 378e19e457..da62b0a05c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -42,9 +42,7 @@ import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.Stack; +import java.util.*; import static org.apache.tajo.plan.LogicalPlan.BlockEdge; import static org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm.getCost; @@ -143,25 +141,39 @@ private static LogicalNode handleRemainingFiltersIfNecessary(JoinGraphContext jo LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode newJoinNode) { - if (!joinGraphContext.getCandidateJoinFilters().isEmpty()) { - Set remainings = joinGraphContext.getCandidateJoinFilters(); + // Gather filters from remaining join edges + Collection joinEdges = joinGraphContext.getJoinGraph().getEdgesAll(); + Collection markAsEvaluated = new HashSet(joinGraphContext.getEvaluatedJoinConditions()); + markAsEvaluated.addAll(joinGraphContext.getEvaluatedJoinFilters()); + Set remainingQuals = new HashSet(joinGraphContext.getCandidateJoinFilters()); + for (JoinEdge eachEdge : joinEdges) { + for (EvalNode eachQual : eachEdge.getJoinQual()) { + if (!markAsEvaluated.contains(eachQual)) { + remainingQuals.add(eachQual); + } + } + } + + if (!remainingQuals.isEmpty()) { LogicalNode topParent = PlannerUtil.findTopParentNode(block.getRoot(), NodeType.JOIN); if (topParent.getType() == NodeType.SELECTION) { SelectionNode topParentSelect = (SelectionNode) topParent; Set filters = TUtil.newHashSet(); filters.addAll(TUtil.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(topParentSelect.getQual()))); - filters.addAll(remainings); + filters.addAll(remainingQuals); topParentSelect.setQual(AlgebraicUtil.createSingletonExprFromCNF( filters.toArray(new EvalNode[filters.size()]))); return newJoinNode; } else { SelectionNode newSelection = plan.createNode(SelectionNode.class); newSelection.setQual(AlgebraicUtil.createSingletonExprFromCNF( - remainings.toArray(new EvalNode[remainings.size()]))); + remainingQuals.toArray(new EvalNode[remainingQuals.size()]))); newSelection.setChild(newJoinNode); return newSelection; } } + + return newJoinNode; } @@ -260,14 +272,14 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical true)); joinConditions.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex(context.getCandidateJoinFilters(), edge, false)); - context.removeCandidateJoinConditions(joinConditions); - context.removeCandidateJoinFilters(joinConditions); + context.markAsEvaluatedJoinConditions(joinConditions); + context.markAsEvaluatedJoinFilters(joinConditions); edge.addJoinPredicates(joinConditions); if (edge.getJoinType() == JoinType.INNER && edge.getJoinQual().isEmpty()) { edge.getJoinSpec().setType(JoinType.CROSS); } - if (PlannerUtil.isCommutativeJoin(edge.getJoinType())) { + if (PlannerUtil.isSymmetricJoin(edge.getJoinType())) { JoinEdge commutativeEdge = context.getCachedOrNewJoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); commutativeEdge.addJoinPredicates(joinConditions); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index cf13126b84..432e31190f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -27,6 +27,7 @@ import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; +import org.apache.tajo.util.StringUtils; import org.apache.tajo.util.TUtil; import java.util.List; @@ -58,7 +59,7 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo // Update most left vertex if the previous most left vertex is merged into a new vertex if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) - || (PlannerUtil.isCommutativeJoin(bestPair.getJoinType()) + || (PlannerUtil.isSymmetricJoin(bestPair.getJoinType()) && bestPair.getRightVertex().equals(graphContext.getMostLeftVertex()))) { graphContext.setMostLeftVertex(newVertex); } @@ -105,8 +106,8 @@ private void updateGraph(JoinGraphContext context, JoinGraph graph, JoinEdge bes } // Join quals involved by the best pair should be removed. - context.removeCandidateJoinConditions(bestPair.getJoinQual()); - context.removeCandidateJoinFilters(bestPair.getJoinQual()); + context.markAsEvaluatedJoinConditions(bestPair.getJoinQual()); + context.markAsEvaluatedJoinFilters(bestPair.getJoinQual()); } private void prepareGraphUpdate(JoinGraphContext context, JoinGraph graph, JoinEdge bestPair, @@ -129,7 +130,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, Set willBeAdded, Set willBeRemoved) { if (edges != null) { for (JoinEdge edge : edges) { - if (!JoinOrderingUtil.isEqualsOrCommutative(vertex.getJoinEdge(), edge)) { + if (!JoinOrderingUtil.isEqualsOrSymmetric(vertex.getJoinEdge(), edge)) { if (isLeftVertex) { willBeAdded.add(context.getCachedOrNewJoinEdge(edge.getJoinSpec(), vertex, edge.getRightVertex())); } else { @@ -194,12 +195,12 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra if (bestNonCrossJoin != null) { if (bestNonCrossJoin.hasJoinQual()) { - graphContext.removeCandidateJoinFilters(bestNonCrossJoin.getJoinQual()); + graphContext.markAsEvaluatedJoinConditions(bestNonCrossJoin.getJoinQual()); } return swapLeftAndRightIfNecessary(bestNonCrossJoin); } else if (bestJoin != null) { if (bestJoin.hasJoinQual()) { - graphContext.removeCandidateJoinFilters(bestJoin.getJoinQual()); + graphContext.markAsEvaluatedJoinFilters(bestJoin.getJoinQual()); } return swapLeftAndRightIfNecessary(bestJoin); } else { @@ -208,9 +209,17 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } private static JoinEdge swapLeftAndRightIfNecessary(JoinEdge edge) { - if (PlannerUtil.isCommutativeJoin(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { - if (getCost(edge.getLeftVertex()) > getCost(edge.getRightVertex())) { + if (PlannerUtil.isSymmetricJoin(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { + double leftCost = getCost(edge.getLeftVertex()); + double rightCost = getCost(edge.getRightVertex()); + if (leftCost > rightCost) { return new JoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); + } else if (leftCost == rightCost) { + // compare the relation name to make the join order determinant + if (StringUtils.join(edge.getLeftVertex().getRelations(), ""). + compareTo(StringUtils.join(edge.getRightVertex().getRelations(), "")) > 0) { + return new JoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); + } } } return edge; @@ -243,7 +252,7 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join JoinGraph joinGraph = graphContext.getJoinGraph(); - // Find the matching edge from begin + // Find the matched edge from begin Set interchangeableWithBegin = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, begin); if (interchangeableWithBegin.contains(leftTarget)) { @@ -262,10 +271,12 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join if (interchangeableWithRightVertex.contains(rightTarget)) { JoinEdge targetEdge = joinGraph.getEdge(leftTarget, rightTarget); if (targetEdge == null) { - // Since the targets of the both sides are searched with symmetric characteristics, - // the join type is assumed as CROSS. - joinGraph.addJoin(graphContext, new JoinSpec(JoinType.CROSS), leftTarget, rightTarget); - return JoinOrderingUtil.updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); + if (joinGraph.isSymmetricJoinOnly()) { + // Since the targets of the both sides are searched with symmetric characteristics, + // the join type is assumed as CROSS. + joinGraph.addJoin(graphContext, new JoinSpec(JoinType.CROSS), leftTarget, rightTarget); + return JoinOrderingUtil.updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); + } } else { targetEdge = JoinOrderingUtil.updateQualIfNecessary(graphContext, targetEdge); return targetEdge; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 7d6777c410..67d50b991e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -20,6 +20,7 @@ import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.JoinSpec; +import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.util.graph.SimpleUndirectedGraph; /** @@ -27,9 +28,16 @@ */ public class JoinGraph extends SimpleUndirectedGraph { + private boolean isSymmetricJoinOnly = true; + public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex left, JoinVertex right) throws PlanningException { JoinEdge edge = context.getCachedOrNewJoinEdge(joinSpec, left, right); + isSymmetricJoinOnly = PlannerUtil.isSymmetricJoin(edge.getJoinType()); this.addEdge(left, right, edge); return edge; } + + public boolean isSymmetricJoinOnly() { + return isSymmetricJoinOnly; + } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 27e6a57c8a..786c05d740 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -36,25 +36,53 @@ public class JoinGraphContext { private Pair cacheKey = new Pair(); // Join private Set candidateJoinConditions = TUtil.newHashSet(); // predicates from the on clause private Set candidateJoinFilters = TUtil.newHashSet(); // predicates from the where clause + private Set evaluatedJoinConditions = TUtil.newHashSet(); // predicates from the on clause + private Set evaluatedJoinFilters = TUtil.newHashSet(); // predicates from the where clause public JoinGraph getJoinGraph() { return joinGraph; } public void addCandidateJoinConditions(Collection candidates) { - candidateJoinConditions.addAll(candidates); + for (EvalNode eachCandidate : candidates) { + if (!evaluatedJoinConditions.contains(eachCandidate)) { + candidateJoinConditions.add(eachCandidate); + } + } } public void addCandidateJoinFilters(Collection candidates) { - candidateJoinFilters.addAll(candidates); + for (EvalNode eachCandidate : candidates) { + if (!evaluatedJoinFilters.contains(eachCandidate)) { + candidateJoinFilters.add(eachCandidate); + } + } } public void removeCandidateJoinConditions(Collection willBeRemoved) { - candidateJoinConditions.removeAll(willBeRemoved); + candidateJoinConditions.remove(willBeRemoved); } public void removeCandidateJoinFilters(Collection willBeRemoved) { - candidateJoinFilters.removeAll(willBeRemoved); + candidateJoinFilters.remove(willBeRemoved); + } + + public void markAsEvaluatedJoinConditions(Collection willBeMarked) { + for (EvalNode eachEval : willBeMarked) { + if (candidateJoinConditions.contains(eachEval)) { + candidateJoinConditions.remove(eachEval); + evaluatedJoinConditions.add(eachEval); + } + } + } + + public void markAsEvaluatedJoinFilters(Collection willBeMarked) { + for (EvalNode eachEval : willBeMarked) { + if (candidateJoinFilters.contains(eachEval)) { + candidateJoinFilters.remove(eachEval); + evaluatedJoinFilters.add(eachEval); + } + } } public Set getCandidateJoinConditions() { @@ -65,6 +93,14 @@ public Set getCandidateJoinFilters() { return candidateJoinFilters; } + public Set getEvaluatedJoinConditions() { + return evaluatedJoinConditions; + } + + public Set getEvaluatedJoinFilters() { + return evaluatedJoinFilters; + } + public JoinVertex getMostLeftVertex() { return mostLeftVertex; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index edef92a00c..2cbecd7235 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -262,15 +262,15 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra for (JoinEdge candidateEdge : candidateEdges) { // Evaluatable quals must be added to check the associativity of join edges. candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (founds.contains(candidateEdge.getRightVertex())) { + if (!founds.contains(candidateEdge.getRightVertex())) { List rightEdgesOfCandidate = context.getJoinGraph().getOutgoingEdges(candidateEdge.getRightVertex()); - boolean reacheable = true; + boolean reacheable = false; if (rightEdgesOfCandidate != null) { + reacheable = true; for (JoinEdge rightEdgeOfCandidate : rightEdgesOfCandidate) { // Evaluatable quals must be added to check the associativity of join edges. rightEdgeOfCandidate = updateQualIfNecessary(context, rightEdgeOfCandidate); - if (!isCommutative(candidateEdge, rightEdgeOfCandidate) && - !JoinOrderingUtil.isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { + if (!isAssociativeJoin(context, candidateEdge, rightEdgeOfCandidate)) { reacheable = false; break; } @@ -281,35 +281,33 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra } } } - if (foundAtThis.size() > 0) { - for (JoinVertex v : foundAtThis) { - getAllInterchangeableVertexes(founds, context, v); - } + for (JoinVertex v : foundAtThis) { + getAllInterchangeableVertexes(founds, context, v); } } } - public static boolean isEqualsOrCommutative(JoinEdge edge1, JoinEdge edge2) { - if (edge1.equals(edge2) || isCommutative(edge1, edge2)) { + public static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { + if (edge1.equals(edge2) || isSymmetric(edge1, edge2)) { return true; } return false; } - public static boolean isCommutative(JoinEdge edge1, JoinEdge edge2) { + public static boolean isSymmetric(JoinEdge edge1, JoinEdge edge2) { if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && edge1.getRightVertex().equals(edge2.getLeftVertex()) && edge1.getJoinSpec().equals(edge2.getJoinSpec()) && - PlannerUtil.isCommutativeJoin(edge1.getJoinType())) { + PlannerUtil.isSymmetricJoin(edge1.getJoinType())) { return true; } return false; } public static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { - Set additionalPredicates = JoinOrderingUtil.findJoinConditionForJoinVertex( + Set additionalPredicates = findJoinConditionForJoinVertex( context.getCandidateJoinConditions(), edge, true); - additionalPredicates.addAll(JoinOrderingUtil.findJoinConditionForJoinVertex( + additionalPredicates.addAll(findJoinConditionForJoinVertex( context.getCandidateJoinFilters(), edge, false)); edge.addJoinPredicates(additionalPredicates); return edge; @@ -329,8 +327,8 @@ public static Set getAllAssociativeEdges(JoinGraphContext context, Joi if (candidateEdges != null) { for (JoinEdge candidateEdge : candidateEdges) { candidateEdge = updateQualIfNecessary(context, candidateEdge); - if (!isEqualsOrCommutative(edge, candidateEdge) && - JoinOrderingUtil.isAssociativeJoin(context, edge, candidateEdge)) { + if (!isEqualsOrSymmetric(edge, candidateEdge) && + isAssociativeJoin(context, edge, candidateEdge)) { associativeEdges.add(candidateEdge); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index 01c83f51f9..e460f3e0c3 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -84,7 +84,7 @@ public LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block) { JoinNode joinNode = plan.createNode(JoinNode.class); - if (PlannerUtil.isCommutativeJoin(joinEdge.getJoinType())) { + if (PlannerUtil.isSymmetricJoin(joinEdge.getJoinType())) { // if only one operator is relation if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { // for left deep diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 72ef4d0d71..b21d8df4e8 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -774,7 +774,7 @@ public static T clone(LogicalPlan plan, LogicalNode node } } - public static boolean isCommutativeJoin(JoinType joinType) { + public static boolean isSymmetricJoin(JoinType joinType) { // Full outer join is also commutative. return joinType == JoinType.INNER || joinType == JoinType.CROSS || joinType == JoinType.FULL_OUTER; } From d4f95f20b7a77bba6cf672044bf1b6a61d29854c Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Sun, 14 Jun 2015 02:35:08 +0900 Subject: [PATCH 38/43] Increase weight of computation for more balanced bushy tree --- .../querymaster/TestTaskStatusUpdate.java | 10 +- .../testBroadcastTwoPartJoin.Hash.plan | 80 +++--- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 204 +++++++------- .../testBroadcastTwoPartJoin.Sort.plan | 80 +++--- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 204 +++++++------- .../testComplexJoinCondition1.Hash.plan | 16 +- ...omplexJoinCondition1.Hash_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition1.Sort.plan | 16 +- ...omplexJoinCondition1.Sort_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition2.Hash.plan | 16 +- ...omplexJoinCondition2.Hash_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition2.Sort.plan | 16 +- ...omplexJoinCondition2.Sort_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition3.Hash.plan | 16 +- ...omplexJoinCondition3.Hash_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition3.Sort.plan | 16 +- ...omplexJoinCondition3.Sort_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition4.Hash.plan | 16 +- ...omplexJoinCondition4.Hash_NoBroadcast.plan | 38 +-- .../testComplexJoinCondition4.Sort.plan | 16 +- ...omplexJoinCondition4.Sort_NoBroadcast.plan | 38 +-- .../testCrossJoin.1.Hash.plan | 16 +- .../testCrossJoin.1.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.1.Sort.plan | 16 +- .../testCrossJoin.1.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.2.Hash.plan | 16 +- .../testCrossJoin.2.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.2.Sort.plan | 16 +- .../testCrossJoin.2.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.3.Hash.plan | 16 +- .../testCrossJoin.3.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.3.Sort.plan | 16 +- .../testCrossJoin.3.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.4.Hash.plan | 16 +- .../testCrossJoin.4.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.4.Sort.plan | 16 +- .../testCrossJoin.4.Sort_NoBroadcast.plan | 30 +- .../testCrossJoin.5.Hash.plan | 16 +- .../testCrossJoin.5.Hash_NoBroadcast.plan | 30 +- .../testCrossJoin.5.Sort.plan | 16 +- .../testCrossJoin.5.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinAndCaseWhen.Hash.plan | 16 +- ...CrossJoinAndCaseWhen.Hash_NoBroadcast.plan | 38 +-- .../testCrossJoinAndCaseWhen.Sort.plan | 16 +- ...CrossJoinAndCaseWhen.Sort_NoBroadcast.plan | 38 +-- .../testCrossJoinWithAsterisk1.Hash.plan | 16 +- ...ossJoinWithAsterisk1.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk1.Sort.plan | 16 +- ...ossJoinWithAsterisk1.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk2.Hash.plan | 16 +- ...ossJoinWithAsterisk2.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk2.Sort.plan | 16 +- ...ossJoinWithAsterisk2.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk3.Hash.plan | 16 +- ...ossJoinWithAsterisk3.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk3.Sort.plan | 16 +- ...ossJoinWithAsterisk3.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk4.Hash.plan | 16 +- ...ossJoinWithAsterisk4.Hash_NoBroadcast.plan | 30 +- .../testCrossJoinWithAsterisk4.Sort.plan | 16 +- ...ossJoinWithAsterisk4.Sort_NoBroadcast.plan | 30 +- .../testCrossJoinWithEmptyTable1.Hash.plan | 16 +- ...sJoinWithEmptyTable1.Hash_NoBroadcast.plan | 38 +-- .../testCrossJoinWithEmptyTable1.Sort.plan | 16 +- ...sJoinWithEmptyTable1.Sort_NoBroadcast.plan | 38 +-- ...oinWithThetaJoinConditionInWhere.Hash.plan | 16 +- ...JoinConditionInWhere.Hash_NoBroadcast.plan | 30 +- ...oinWithThetaJoinConditionInWhere.Sort.plan | 16 +- ...JoinConditionInWhere.Sort_NoBroadcast.plan | 30 +- .../testDifferentTypesJoinCondition.Hash.plan | 16 +- ...ntTypesJoinCondition.Hash_NoBroadcast.plan | 38 +-- .../testDifferentTypesJoinCondition.Sort.plan | 16 +- ...ntTypesJoinCondition.Sort_NoBroadcast.plan | 38 +-- .../testInnerJoinAndCaseWhen.Hash.plan | 16 +- ...InnerJoinAndCaseWhen.Hash_NoBroadcast.plan | 38 +-- .../testInnerJoinAndCaseWhen.Sort.plan | 16 +- ...InnerJoinAndCaseWhen.Sort_NoBroadcast.plan | 38 +-- .../testInnerJoinWithEmptyTable.Hash.plan | 16 +- ...erJoinWithEmptyTable.Hash_NoBroadcast.plan | 38 +-- .../testInnerJoinWithEmptyTable.Sort.plan | 16 +- ...erJoinWithEmptyTable.Sort_NoBroadcast.plan | 38 +-- ...oinWithThetaJoinConditionInWhere.Hash.plan | 16 +- ...JoinConditionInWhere.Hash_NoBroadcast.plan | 38 +-- ...oinWithThetaJoinConditionInWhere.Sort.plan | 16 +- ...JoinConditionInWhere.Sort_NoBroadcast.plan | 38 +-- .../testJoinAsterisk.Hash.plan | 16 +- .../testJoinAsterisk.Hash_NoBroadcast.plan | 38 +-- .../testJoinAsterisk.Sort.plan | 16 +- .../testJoinAsterisk.Sort_NoBroadcast.plan | 38 +-- .../testJoinCoReferredEvals1.Hash.plan | 16 +- ...JoinCoReferredEvals1.Hash_NoBroadcast.plan | 38 +-- .../testJoinCoReferredEvals1.Sort.plan | 16 +- ...JoinCoReferredEvals1.Sort_NoBroadcast.plan | 38 +-- ...oinCoReferredEvalsWithSameExprs1.Hash.plan | 16 +- ...dEvalsWithSameExprs1.Hash_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs1.Sort.plan | 16 +- ...dEvalsWithSameExprs1.Sort_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs2.Hash.plan | 16 +- ...dEvalsWithSameExprs2.Hash_NoBroadcast.plan | 40 +-- ...oinCoReferredEvalsWithSameExprs2.Sort.plan | 16 +- ...dEvalsWithSameExprs2.Sort_NoBroadcast.plan | 40 +-- .../testJoinOnMultipleDatabases.Hash.plan | 80 +++--- ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 204 +++++++------- .../testJoinOnMultipleDatabases.Sort.plan | 80 +++--- ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 204 +++++++------- .../testJoinWithMultipleJoinQual1.Hash.plan | 80 +++--- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 204 +++++++------- .../testJoinWithMultipleJoinQual1.Sort.plan | 80 +++--- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 204 +++++++------- .../testJoinWithOrPredicates.Hash.plan | 16 +- ...JoinWithOrPredicates.Hash_NoBroadcast.plan | 38 +-- .../testJoinWithOrPredicates.Sort.plan | 16 +- ...JoinWithOrPredicates.Sort_NoBroadcast.plan | 38 +-- .../testNaturalJoin.Hash.plan | 16 +- .../testNaturalJoin.Hash_NoBroadcast.plan | 38 +-- .../testNaturalJoin.Sort.plan | 16 +- .../testNaturalJoin.Sort_NoBroadcast.plan | 38 +-- .../testTPCHQ2Join.Hash.plan | 80 +++--- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 204 +++++++------- .../testTPCHQ2Join.Sort.plan | 80 +++--- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 204 +++++++------- .../testWhereClauseJoin1.Hash.plan | 16 +- ...testWhereClauseJoin1.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin1.Sort.plan | 16 +- ...testWhereClauseJoin1.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin2.Hash.plan | 16 +- ...testWhereClauseJoin2.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin2.Sort.plan | 16 +- ...testWhereClauseJoin2.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin3.Hash.plan | 16 +- ...testWhereClauseJoin3.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin3.Sort.plan | 16 +- ...testWhereClauseJoin3.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin4.Hash.plan | 16 +- ...testWhereClauseJoin4.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin4.Sort.plan | 16 +- ...testWhereClauseJoin4.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin5.Hash.plan | 16 +- ...testWhereClauseJoin5.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin5.Sort.plan | 16 +- ...testWhereClauseJoin5.Sort_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin6.Hash.plan | 16 +- ...testWhereClauseJoin6.Hash_NoBroadcast.plan | 38 +-- .../testWhereClauseJoin6.Sort.plan | 16 +- ...testWhereClauseJoin6.Sort_NoBroadcast.plan | 38 +-- .../testBroadcastSubquery.Hash.plan | 84 +++--- ...estBroadcastSubquery.Hash_NoBroadcast.plan | 118 ++++---- .../testBroadcastSubquery.Sort.plan | 84 +++--- ...estBroadcastSubquery.Sort_NoBroadcast.plan | 118 ++++---- .../testBroadcastSubquery2.Hash.plan | 52 ++-- ...stBroadcastSubquery2.Hash_NoBroadcast.plan | 122 ++++---- .../testBroadcastSubquery2.Sort.plan | 52 ++-- ...stBroadcastSubquery2.Sort_NoBroadcast.plan | 122 ++++---- .../testComplexJoinCondition5.Hash.plan | 16 +- ...omplexJoinCondition5.Hash_NoBroadcast.plan | 44 +-- .../testComplexJoinCondition5.Sort.plan | 16 +- ...omplexJoinCondition5.Sort_NoBroadcast.plan | 44 +-- .../testComplexJoinCondition6.Hash.plan | 42 +-- ...omplexJoinCondition6.Hash_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition6.Sort.plan | 42 +-- ...omplexJoinCondition6.Sort_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition7.Hash.plan | 42 +-- ...omplexJoinCondition7.Hash_NoBroadcast.plan | 58 ++-- .../testComplexJoinCondition7.Sort.plan | 42 +-- ...omplexJoinCondition7.Sort_NoBroadcast.plan | 58 ++-- .../testJoinWithMultipleJoinQual2.Hash.plan | 36 +-- ...ithMultipleJoinQual2.Hash_NoBroadcast.plan | 84 +++--- .../testJoinWithMultipleJoinQual2.Sort.plan | 36 +-- ...ithMultipleJoinQual2.Sort_NoBroadcast.plan | 84 +++--- .../testJoinWithMultipleJoinQual3.Hash.plan | 32 +-- ...ithMultipleJoinQual3.Hash_NoBroadcast.plan | 78 +++--- .../testJoinWithMultipleJoinQual3.Sort.plan | 32 +-- ...ithMultipleJoinQual3.Sort_NoBroadcast.plan | 78 +++--- .../testJoinWithMultipleJoinQual4.Hash.plan | 32 +-- ...ithMultipleJoinQual4.Hash_NoBroadcast.plan | 78 +++--- .../testJoinWithMultipleJoinQual4.Sort.plan | 32 +-- ...ithMultipleJoinQual4.Sort_NoBroadcast.plan | 78 +++--- .../testThetaJoinKeyPairs.Hash.plan | 44 +-- ...estThetaJoinKeyPairs.Hash_NoBroadcast.plan | 94 +++---- .../testThetaJoinKeyPairs.Sort.plan | 44 +-- ...estThetaJoinKeyPairs.Sort_NoBroadcast.plan | 94 +++---- .../testComplexJoinsWithCaseWhen.Hash.plan | 16 +- ...lexJoinsWithCaseWhen.Hash_NoBroadcast.plan | 38 +-- .../testComplexJoinsWithCaseWhen.Sort.plan | 16 +- ...lexJoinsWithCaseWhen.Sort_NoBroadcast.plan | 38 +-- .../testComplexJoinsWithCaseWhen2.Hash.plan | 20 +- ...exJoinsWithCaseWhen2.Hash_NoBroadcast.plan | 54 ++-- .../testComplexJoinsWithCaseWhen2.Sort.plan | 20 +- ...exJoinsWithCaseWhen2.Sort_NoBroadcast.plan | 54 ++-- .../testInnerAndOuterWithEmpty.1.Hash.plan | 16 +- ...rAndOuterWithEmpty.1.Hash_NoBroadcast.plan | 38 +-- .../testInnerAndOuterWithEmpty.1.Sort.plan | 16 +- ...rAndOuterWithEmpty.1.Sort_NoBroadcast.plan | 38 +-- .../testFullOuterJoin1.Hash.plan | 38 +-- .../testFullOuterJoin1.Hash_NoBroadcast.plan | 38 +-- .../testFullOuterJoin1.Sort.plan | 38 +-- .../testFullOuterJoin1.Sort_NoBroadcast.plan | 38 +-- ...uterJoinPredicationCaseByCase1.1.Hash.plan | 38 +-- ...icationCaseByCase1.1.Hash_NoBroadcast.plan | 38 +-- ...uterJoinPredicationCaseByCase1.1.Sort.plan | 38 +-- ...icationCaseByCase1.1.Sort_NoBroadcast.plan | 38 +-- ...testFullOuterJoinWithEmptyTable1.Hash.plan | 38 +-- ...rJoinWithEmptyTable1.Hash_NoBroadcast.plan | 38 +-- ...testFullOuterJoinWithEmptyTable1.Sort.plan | 38 +-- ...rJoinWithEmptyTable1.Sort_NoBroadcast.plan | 38 +-- ...erJoinPredicationCaseByCase2_1.1.Hash.plan | 20 +- ...ationCaseByCase2_1.1.Hash_NoBroadcast.plan | 44 +-- ...erJoinPredicationCaseByCase2_1.1.Sort.plan | 20 +- ...ationCaseByCase2_1.1.Sort_NoBroadcast.plan | 44 +-- ...uterJoinPredicationCaseByCase2.1.Hash.plan | 16 +- ...icationCaseByCase2.1.Hash_NoBroadcast.plan | 40 +-- ...uterJoinPredicationCaseByCase2.1.Sort.plan | 16 +- ...icationCaseByCase2.1.Sort_NoBroadcast.plan | 40 +-- ...rJoinWithEmptyIntermediateData.1.Hash.plan | 56 ++-- ...tyIntermediateData.1.Hash_NoBroadcast.plan | 56 ++-- ...rJoinWithEmptyIntermediateData.1.Sort.plan | 56 ++-- ...tyIntermediateData.1.Sort_NoBroadcast.plan | 56 ++-- ...eftOuterJoinWithEmptySubquery1.1.Hash.plan | 16 +- ...WithEmptySubquery1.1.Hash_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery1.1.Sort.plan | 16 +- ...WithEmptySubquery1.1.Sort_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery2.1.Hash.plan | 16 +- ...WithEmptySubquery2.1.Hash_NoBroadcast.plan | 40 +-- ...eftOuterJoinWithEmptySubquery2.1.Sort.plan | 16 +- ...WithEmptySubquery2.1.Sort_NoBroadcast.plan | 40 +-- .../testExplainSelectPhysical.2.result | 32 +-- .../results/TestTPCH/testQ2FourJoins.plan | 208 +++++++------- .../results/TestTPCH/testTPCH14Expr.plan | 38 +-- .../results/TestTPCH/testTPCHQ5.plan | 262 +++++++++--------- .../TestUnionQuery/testComplexUnion2.plan | 68 ++--- .../GreedyHeuristicJoinOrderAlgorithm.java | 8 +- 231 files changed, 4969 insertions(+), 4969 deletions(-) diff --git a/tajo-core/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java b/tajo-core/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java index ab5375c6d1..76a843b5d1 100644 --- a/tajo-core/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java +++ b/tajo-core/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java @@ -95,8 +95,8 @@ public final void case3() throws Exception { |-eb_1404143727281_0002_000005 |-eb_1404143727281_0002_000004 (order by) |-eb_1404143727281_0002_000003 (join) - |-eb_1404143727281_0002_000002 (scan) - |-eb_1404143727281_0002_000001 (scan, filter) + |-eb_1404143727281_0002_000002 (scan, filter) + |-eb_1404143727281_0002_000001 (scan) */ res = executeQuery(); @@ -104,9 +104,9 @@ public final void case3() throws Exception { System.out.println(actualResult); // in/out * stage(4) - long[] expectedNumRows = new long[]{2, 2, 5, 5, 7, 2, 2, 2}; - long[] expectedNumBytes = new long[]{8, 34, 20, 75, 109, 34, 34, 18}; - long[] expectedReadBytes = new long[]{8, 8, 20, 20, 109, 0, 34, 0}; + long[] expectedNumRows = new long[]{5, 5, 2, 2, 7, 2, 2, 2}; + long[] expectedNumBytes = new long[]{20, 75, 8, 34, 109, 34, 34, 18}; + long[] expectedReadBytes = new long[]{20, 20, 8, 8, 109, 0, 34, 0}; assertStatus(4, expectedNumRows, expectedNumBytes, expectedReadBytes); } finally { diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan index 03a2441c92..bd3ba1abd4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.customer - 1: type=Broadcast, tables=default.orders - 2: type=Broadcast, tables=default.part - 3: type=Broadcast, tables=default.lineitem + 0: type=Broadcast, tables=default.orders + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.lineitem + 3: type=Broadcast, tables=default.customer SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.part.p_name (TEXT) (asc),default.nation.n_name (TEXT) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index b963f5b43d..fc5e3e3d47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) - -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(2) on default.part => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(2) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) + +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan index 03a2441c92..bd3ba1abd4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.customer - 1: type=Broadcast, tables=default.orders - 2: type=Broadcast, tables=default.part - 3: type=Broadcast, tables=default.lineitem + 0: type=Broadcast, tables=default.orders + 1: type=Broadcast, tables=default.part + 2: type=Broadcast, tables=default.lineitem + 3: type=Broadcast, tables=default.customer SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.part.p_name (TEXT) (asc),default.nation.n_name (TEXT) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index b963f5b43d..fc5e3e3d47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(3) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) - -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) SCAN(1) on default.orders => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) - -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) - => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(2) on default.part => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(2) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) + +SCAN(3) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) => target list: default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} => in schema: {(5) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.orders.o_custkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.nation.n_name (TEXT) + => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(3) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.part.p_name (TEXT)} => in schema: {(5) default.customer.c_custkey (INT4), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} => in schema: {(2) default.customer.c_custkey (INT4), default.nation.n_name (TEXT)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} + => in schema: {(3) default.lineitem.l_orderkey (INT4), default.orders.o_custkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash.plan index e5b845568c..ae3d2c289e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash_NoBroadcast.plan index 79b3cabed8..7705f67e8c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort.plan index e5b845568c..ae3d2c289e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort_NoBroadcast.plan index 79b3cabed8..7705f67e8c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(4) ?upper_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?upper_1 (TEXT), default.n2.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash.plan index 7c889332ab..9f6969775b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash_NoBroadcast.plan index dad9ec2d7d..53b6430c32 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) name (TEXT)} - => in schema: {(1) name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) name (TEXT)} + => in schema: {(1) name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort.plan index 7c889332ab..9f6969775b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort_NoBroadcast.plan index dad9ec2d7d..53b6430c32 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: upper(default.n2.n_name (TEXT)) as name + => out schema: {(1) name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: upper(default.n2.n_name (TEXT)) as name - => out schema: {(1) name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) name (TEXT)} - => in schema: {(1) name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) name (TEXT)} + => in schema: {(1) name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash.plan index f35d4862fb..2f639c2f10 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash_NoBroadcast.plan index b7ed23b181..3f3e6327b0 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 - => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 + => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort.plan index f35d4862fb..2f639c2f10 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort_NoBroadcast.plan index b7ed23b181..3f3e6327b0 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 - => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), lower(default.n2.n_name (TEXT)) as ?lower_2 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), lower(default.n1.n_name (TEXT)) as ?lower_1 + => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?lower_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?lower_1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?lower_1 (TEXT), ?lower_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - => in schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(3) ?lower_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} + => in schema: {(2) ?lower_2 (TEXT), default.n2.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash.plan index fb73ee5b1b..1d0e9ff460 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash_NoBroadcast.plan index c63039375e..feec5d9d47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) name2 (TEXT)} - => in schema: {(1) name2 (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort.plan index fb73ee5b1b..1d0e9ff460 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort_NoBroadcast.plan index c63039375e..feec5d9d47 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: substr(default.n2.n_name (TEXT),1,4) as name2 + => out schema: {(1) name2 (TEXT)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: substr(default.n2.n_name (TEXT),1,4) as name2 - => out schema: {(1) name2 (TEXT)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) name2 (TEXT)} - => in schema: {(1) name2 (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash.plan index 497aba28d2..0fb22b3299 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash_NoBroadcast.plan index 94758275ac..4278681dc7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort.plan index 497aba28d2..0fb22b3299 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort_NoBroadcast.plan index 94758275ac..4278681dc7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan index 453e12feb4..8bc07bfd84 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan index b430c88afe..5d0de2fb45 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan index 453e12feb4..8bc07bfd84 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan index b430c88afe..5d0de2fb45 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan index 26246d6673..724e240a5c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan index f6ad6bcecc..9a40283c18 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan index 26246d6673..724e240a5c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan index f6ad6bcecc..9a40283c18 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan index 26246d6673..724e240a5c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan index f6ad6bcecc..9a40283c18 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan index 26246d6673..724e240a5c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,14 +37,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan index f6ad6bcecc..9a40283c18 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort_NoBroadcast.plan @@ -4,14 +4,14 @@ JOIN(5)(CROSS) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,10 +37,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -49,10 +49,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -67,11 +67,11 @@ JOIN(5)(CROSS) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan index 8757ae9292..35e397bd9b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan index 9f115bfb99..243acc22b2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan index 8757ae9292..35e397bd9b 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan index 9f115bfb99..243acc22b2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash.plan index af6c200226..de4fc4f9f5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash_NoBroadcast.plan index 48ecb9133d..6153908b20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) - => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort.plan index af6c200226..de4fc4f9f5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort_NoBroadcast.plan index 48ecb9133d..6153908b20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) - => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan index b76c6e2544..78b074a4d2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan index 26dc4d9416..214097c0d1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan index b76c6e2544..78b074a4d2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan index 26dc4d9416..214097c0d1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan index c9452e6c4c..b4d85658fb 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan index 3d33f1dd4c..4a2b03dcad 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan index c9452e6c4c..b4d85658fb 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan index 3d33f1dd4c..4a2b03dcad 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan index 1ab52e9f4e..d1c32a08b9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan index c6262203c5..5a0c312348 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan index 1ab52e9f4e..d1c32a08b9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan index c6262203c5..5a0c312348 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT) - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(11) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan index f1f3af1161..4997c1d9e9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan index 4828d9fb48..f0e930f6bd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan index f1f3af1161..4997c1d9e9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,14 @@ SORT(10) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan index 4828d9fb48..f0e930f6bd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort_NoBroadcast.plan @@ -6,14 +6,14 @@ SORT(2) => target list: ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.region => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,10 +41,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region - => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len - => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -53,10 +53,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.customer - => target list: default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.customer.c_custkey (INT4) * 10 as ?multiply - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.region + => target list: default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), length(default.region.r_comment (TEXT)) as len + => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] @@ -76,11 +76,11 @@ SORT(10) => out schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(13) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} => in schema: {(4) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4), len (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(9) ?multiply (INT4), default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan index e3cbb61f7c..27de587124 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan index 6cf1244756..0048ac60e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan index e3cbb61f7c..27de587124 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -49,14 +49,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan index 6cf1244756..0048ac60e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan @@ -10,14 +10,14 @@ PROJECTION(3) => target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,10 +43,10 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] [Outgoing] [q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) - => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] @@ -55,10 +55,10 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] [Outgoing] [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT) as b_name, default.b.r_name (TEXT) - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT) as a_name, default.a.r_name (TEXT) + => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] @@ -79,11 +79,11 @@ PROJECTION(3) => out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} => in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} => in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} + => in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan index f59bc995b9..69ede305f2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan index c3fcc296d5..890f9351f7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} +SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} +SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) JOIN(5)(INNER) => Join Cond: default.t3.id (INT8) = ?int8_1 (INT8) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan index f59bc995b9..69ede305f2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan index c3fcc296d5..890f9351f7 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(0) on default.table20 as t3 => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) -SCAN(0) on default.table20 as t3 - => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) - => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} - => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} +SCAN(1) on default.table21 as t4 + => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -SCAN(1) on default.table21 as t4 - => target list: CAST (default.t4.id (INT4) AS INT8) as ?int8_1, default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT) - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(4) default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} +SCAN(0) on default.table20 as t3 + => target list: default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT) + => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?int8_1 (INT8), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT8), num=32) JOIN(5)(INNER) => Join Cond: default.t3.id (INT8) = ?int8_1 (INT8) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(8) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} => in schema: {(9) ?int8_1 (INT8), default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} => in schema: {(4) default.t3.id (INT8), default.t3.name (TEXT), default.t3.score (FLOAT4), default.t3.type (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} + => in schema: {(5) ?int8_1 (INT8), default.t4.id (INT4), default.t4.name (TEXT), default.t4.score (FLOAT4), default.t4.type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash.plan index af6c200226..de4fc4f9f5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash_NoBroadcast.plan index 48ecb9133d..6153908b20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) - => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort.plan index af6c200226..de4fc4f9f5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort_NoBroadcast.plan index 48ecb9133d..6153908b20 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) - => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: CASE WHEN default.region.r_regionkey (INT4) = 1 THEN one WHEN default.region.r_regionkey (INT4) = 2 THEN two WHEN default.region.r_regionkey (INT4) = 3 THEN three WHEN default.region.r_regionkey (INT4) = 4 THEN four ELSE zero END as cond, default.region.r_regionkey (INT4) + => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} => in schema: {(3) cond (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) cond (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan index a684a0ca66..988980c691 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan index a71bd54453..742e346173 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(1) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(1) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan index 03cb91ed4a..469668c18e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,14 +43,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan index a25c582c49..8e99f075ce 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,32 +38,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) SELECTION(3) => Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT) @@ -73,11 +73,11 @@ SELECTION(3) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan index 03cb91ed4a..469668c18e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -43,14 +43,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan index a25c582c49..8e99f075ce 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SELECTION(3) => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(0) on default.region as a => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -38,32 +38,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) -SCAN(0) on default.region as a - => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) - => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} - => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} +SCAN(1) on default.region as b + => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -SCAN(1) on default.region as b - => target list: default.b.r_name (TEXT), default.b.r_regionkey (INT4) - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(3) default.b.r_comment (TEXT), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} +SCAN(0) on default.region as a + => target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4) + => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + => in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32) SELECTION(3) => Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT) @@ -73,11 +73,11 @@ SELECTION(3) => out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)} => in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} => in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} + => in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan index 244bfa9bc7..0120a2bc11 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan index f5ee800fe9..afc6b062a6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan index 244bfa9bc7..0120a2bc11 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,14 +39,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan index f5ee800fe9..afc6b062a6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan @@ -5,14 +5,14 @@ JOIN(5)(INNER) => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(1) on default.customer as a => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -36,32 +36,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) -SCAN(1) on default.customer as a - => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) - => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} - => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} +SCAN(0) on default.nation as b + => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -SCAN(0) on default.nation as b - => target list: default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4) - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} +SCAN(1) on default.customer as a + => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT) + => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.c_nationkey (INT4), num=32) JOIN(5)(INNER) => Join Cond: default.b.n_nationkey (INT4) = default.a.c_nationkey (INT4) @@ -69,11 +69,11 @@ JOIN(5)(INNER) => out schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} => in schema: {(12) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} SCAN(8) on eb_0000000000000_0000_000002 - => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} - SCAN(7) on eb_0000000000000_0000_000001 => out schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} => in schema: {(8) default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT)} + SCAN(7) on eb_0000000000000_0000_000001 + => out schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} + => in schema: {(4) default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash.plan index d5e2b9b15a..21e765d3f8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash_NoBroadcast.plan index ea4afb6e02..4250b5c3f4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort.plan index d5e2b9b15a..21e765d3f8 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort_NoBroadcast.plan index ea4afb6e02..4250b5c3f4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4) + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4) - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus (INT4)} => in schema: {(2) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(1) default.nation.n_regionkey (INT4)} - => in schema: {(1) default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(1) default.nation.n_regionkey (INT4)} + => in schema: {(1) default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan index 6442f36a70..a8f9f8bbfa 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,15 +53,15 @@ SORT(11) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan index 2776a34740..936e4fc792 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash_NoBroadcast.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -45,33 +45,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) @@ -84,11 +84,11 @@ SORT(11) => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan index 6442f36a70..a8f9f8bbfa 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,15 +53,15 @@ SORT(11) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan index 2776a34740..936e4fc792 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort_NoBroadcast.plan @@ -11,15 +11,15 @@ PROJECTION(4) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as plus1 => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -45,33 +45,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_regionkey (INT4), v1 (INT4), num=32) @@ -84,11 +84,11 @@ SORT(11) => out schema: {(5) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), plus1 (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan index 63239a38fc..d6252ea807 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,15 +63,15 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan index fcbc0d66da..f3a2084ab5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash_NoBroadcast.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,33 +52,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) @@ -94,11 +94,11 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan index 63239a38fc..d6252ea807 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -63,15 +63,15 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan index fcbc0d66da..f3a2084ab5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort_NoBroadcast.plan @@ -16,15 +16,15 @@ PROJECTION(5) => target list: default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) / 2 as result, default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4), default.region.r_regionkey (INT4) + default.nation.n_regionkey (INT4) as ?plus => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => filter: default.region.r_regionkey (INT4) > 0 => target list: default.region.r_regionkey (INT4) => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,33 +52,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_regionkey (INT4) > 0 - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_regionkey (INT4), default.nation.n_regionkey (INT4) + default.nation.n_nationkey (INT4) as v1 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => filter: default.region.r_regionkey (INT4) > 0 + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4), num=32) @@ -94,11 +94,11 @@ GROUP_BY(12)(?plus,n_regionkey,r_regionkey,result,v1) => out schema: {(5) ?plus (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), result (INT4), v1 (INT4)} => in schema: {(3) default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), v1 (INT4)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} + => in schema: {(2) default.nation.n_regionkey (INT4), v1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan index e9a906dfc2..c982ee3a49 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=joins.supplier_ - 2: type=Broadcast, tables=joins.part_ - 3: type=Broadcast, tables=default.partsupp + 0: type=Broadcast, tables=joins.supplier_ + 1: type=Broadcast, tables=joins.part_ + 2: type=Broadcast, tables=default.partsupp + 3: type=Broadcast, tables=default.region SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index 018adfbf1f..19750a23c4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) SCAN(0) on joins.part_ => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(0) on joins.part_ => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan index e9a906dfc2..c982ee3a49 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=joins.supplier_ - 2: type=Broadcast, tables=joins.part_ - 3: type=Broadcast, tables=default.partsupp + 0: type=Broadcast, tables=joins.supplier_ + 1: type=Broadcast, tables=joins.part_ + 2: type=Broadcast, tables=default.partsupp + 3: type=Broadcast, tables=default.region SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc),joins.supplier_.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),joins.part_.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index 018adfbf1f..19750a23c4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) SCAN(1) on joins.supplier_ => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4) => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: joins.supplier_.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) SCAN(0) on joins.part_ => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(0) on joins.part_ => in schema: {(9) joins.part_.p_brand (TEXT), joins.part_.p_comment (TEXT), joins.part_.p_container (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_name (TEXT), joins.part_.p_partkey (INT4), joins.part_.p_retailprice (FLOAT8), joins.part_.p_size (INT4), joins.part_.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: joins.part_.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT) => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} => in schema: {(2) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} + => in schema: {(8) joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan index b775465b47..170763cae9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan @@ -8,6 +8,19 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.p - 3: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.p + 2: type=Broadcast, tables=default.s + 3: type=Broadcast, tables=default.r SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index 6205f76def..0b27fecd6d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) SCAN(7) on default.part as p => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(7) on default.part as p => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan index b775465b47..170763cae9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan @@ -8,6 +8,19 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.r - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.p - 3: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.ps + 1: type=Broadcast, tables=default.p + 2: type=Broadcast, tables=default.s + 3: type=Broadcast, tables=default.r SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc),default.s.s_name (TEXT) (asc),default.n.n_name (TEXT) (asc),default.p.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index 6205f76def..0b27fecd6d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(10) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(10) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.partsupp as ps + => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) - -SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) SCAN(3) on default.supplier as s => target list: default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4) => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -SCAN(5) on default.partsupp as ps - => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(1) default.r.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(9) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) SCAN(7) on default.part as p => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(7) on default.part as p => in schema: {(9) default.p.p_brand (TEXT), default.p.p_comment (TEXT), default.p.p_container (TEXT), default.p.p_mfgr (TEXT), default.p.p_name (TEXT), default.p.p_partkey (INT4), default.p.p_retailprice (FLOAT8), default.p.p_size (INT4), default.p.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) + +SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.p.p_partkey (INT4) = default.ps.ps_partkey (INT4) => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT) => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(10) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} => in schema: {(2) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} => in schema: {(8) default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.n.n_name (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.n.n_name (TEXT), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_phone (TEXT)} => in schema: {(12) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} + => in schema: {(9) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4), default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan index 658b855a19..c86757cbfc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,14 +56,14 @@ SORT(11) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan index ec9e543824..155f466f7d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash_NoBroadcast.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,32 +46,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -86,11 +86,11 @@ SORT(11) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan index 658b855a19..c86757cbfc 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -56,14 +56,14 @@ SORT(11) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan index ec9e543824..155f466f7d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort_NoBroadcast.plan @@ -13,14 +13,14 @@ PROJECTION(4) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,32 +46,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) - => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), default.n2.n_nationkey (INT4) - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4) + => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -86,11 +86,11 @@ SORT(11) => out schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} => in schema: {(4) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(2) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan index 97e3976208..1ef6092da5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan index 2e1909fec6..24ef41061e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan index 97e3976208..1ef6092da5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(10) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan index 2e1909fec6..24ef41061e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(0) on default.nation as n1 => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) - => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4) - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4) + => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n2.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.n1.n_name (TEXT), default.n2.n_name (TEXT)} => in schema: {(8) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4), default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} + => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan index 614b80cfde..baad6d4ea3 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.supplier - 3: type=Broadcast, tables=default.partsupp + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.supplier + 2: type=Broadcast, tables=default.partsupp + 3: type=Broadcast, tables=default.region SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index dcaf0d5fb7..35680f2c62 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(0) on default.part => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(0) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan index 614b80cfde..baad6d4ea3 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,10 +66,10 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.part - 2: type=Broadcast, tables=default.supplier - 3: type=Broadcast, tables=default.partsupp + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.supplier + 2: type=Broadcast, tables=default.partsupp + 3: type=Broadcast, tables=default.region SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc),default.supplier.s_name (TEXT) (asc),default.nation.n_name (TEXT) (asc),default.part.p_partkey (INT4) (asc) @@ -79,6 +79,19 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -87,32 +100,19 @@ SORT(26) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index dcaf0d5fb7..35680f2c62 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -8,6 +8,19 @@ SORT(6) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -16,32 +29,19 @@ SORT(6) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(14)(INNER) + JOIN(13)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,21 +53,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000011) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -79,101 +79,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(4) on default.region - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(3) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(13)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(14)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(21) on eb_0000000000000_0000_000005 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(20) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000002 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(0) on default.part => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4) @@ -181,35 +134,82 @@ SCAN(0) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(3) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(4) on default.region + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(15)(INNER) +JOIN(14)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(9) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000004 => out schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} => in schema: {(2) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000003 => out schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(7) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000007 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 10 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), num=32) @@ -222,11 +222,11 @@ SORT(26) => out schema: {(8) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(25) on eb_0000000000000_0000_000008 - => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(24) on eb_0000000000000_0000_000003 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(8) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan index 6da36f78ce..fff67529e4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan index f2880e41cd..ce8b39b6e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan index 6da36f78ce..fff67529e4 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan index f2880e41cd..ce8b39b6e6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan index 549fe31562..abcdf6ec64 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan index cde528c53b..32b75cdc26 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan index 549fe31562..abcdf6ec64 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan index cde528c53b..32b75cdc26 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(2) default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan index 458abea3f8..faa5926d39 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan index ef80741256..b46814752c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan index 458abea3f8..faa5926d39 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan index ef80741256..b46814752c 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 - => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.nation.n_nationkey (INT4) + 1 as p1 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.region.r_regionkey (INT4) + 1 as p2 + => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(4) default.nation.n_name (TEXT), default.region.r_name (TEXT), p1 (INT4), p2 (INT4)} => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4), p1 (INT4), p2 (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} => in schema: {(3) default.region.r_name (TEXT), default.region.r_regionkey (INT4), p2 (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), p1 (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan index fc238ee776..9ca4d412a2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan index 5500da3127..a93456ca3f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan index fc238ee776..9ca4d412a2 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,14 +48,14 @@ SORT(11) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan index 5500da3127..a93456ca3f 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.nation.n_name (TEXT), default.region.r_name (TEXT), default.nation.n_nationkey (INT4) + default.region.r_regionkey (INT4) as ?plus => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(1) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(1) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(0) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(1) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -78,11 +78,11 @@ SORT(11) => out schema: {(3) ?plus (INT4), default.nation.n_name (TEXT), default.region.r_name (TEXT)} => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan index 31b4067276..cfde80afb5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan @@ -16,14 +16,14 @@ SORT(4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,14 +67,14 @@ SORT(16) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash_NoBroadcast.plan index b4243587cf..d4b5001843 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(9)(INNER) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan index 31b4067276..cfde80afb5 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan @@ -16,14 +16,14 @@ SORT(4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,14 +67,14 @@ SORT(16) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort_NoBroadcast.plan index b4243587cf..d4b5001843 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(4) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(9)(INNER) => out schema: {(3) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT)} => in schema: {(5) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(3) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan index 73d8693ecb..038f468d6d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan @@ -25,14 +25,14 @@ SORT(5) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -86,14 +86,14 @@ SORT(21) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan index 2487285044..b195e34daa 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan @@ -25,14 +25,14 @@ SORT(5) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,32 +66,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) @@ -102,11 +102,11 @@ JOIN(11)(INNER) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(16) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan index 73d8693ecb..038f468d6d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan @@ -25,14 +25,14 @@ SORT(5) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -86,14 +86,14 @@ SORT(21) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan index 2487285044..b195e34daa 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan @@ -25,14 +25,14 @@ SORT(5) => target list: default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(1) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -66,32 +66,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(1) on default.supplier - => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} +SCAN(2) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -SCAN(2) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4) - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} +SCAN(1) on default.supplier + => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) @@ -102,11 +102,11 @@ JOIN(11)(INNER) => out schema: {(4) default.partsupp.ps_partkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} => in schema: {(6) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(16) on eb_0000000000000_0000_000002 - => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} => in schema: {(4) default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan index 2b7db47b3d..96858859e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.orders SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan index 0c134d5453..7ab1815462 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,75 +57,75 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan index 2b7db47b3d..96858859e1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,41 +52,41 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.part + 1: type=Broadcast, tables=default.orders SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan index 0c134d5453..7ab1815462 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort_NoBroadcast.plan @@ -3,31 +3,31 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} - SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} SCAN(0) on default.lineitem => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -57,75 +57,75 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -TABLE_SUBQUERY(4) as default.a - => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - PROJECTION(3) - => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.orders - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) - => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} SCAN(15) on eb_0000000000000_0000_000002 + => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000001 - => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} - => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_name (TEXT), default.part.p_partkey (INT4) - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +TABLE_SUBQUERY(4) as default.a + => Targets: default.a.o_custkey (INT4), default.a.o_orderkey (INT4) + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + PROJECTION(3) + => Targets: default.orders.o_orderkey (INT4), default.orders.o_custkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(2) on default.orders + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT), num=32) @@ -133,16 +133,16 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc),default.a.o_custkey (INT4) (asc),default.part.p_name (TEXT) (asc) JOIN(12)(INNER) - => Join Cond: default.lineitem.l_partkey (INT4) = default.part.p_partkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.a.o_orderkey (INT4) => target list: default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} - => in schema: {(5) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => in schema: {(4) default.a.o_custkey (INT4), default.a.o_orderkey (INT4), default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} SCAN(17) on eb_0000000000000_0000_000004 - => out schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} - => in schema: {(2) default.part.p_name (TEXT), default.part.p_partkey (INT4)} + => out schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} SCAN(16) on eb_0000000000000_0000_000003 - => out schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} - => in schema: {(3) default.a.o_custkey (INT4), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4)} + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan index 037904d747..ec3578c220 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan @@ -30,19 +30,24 @@ GROUP_BY(18)() => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} @@ -52,19 +57,14 @@ GROUP_BY(18)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -111,14 +111,14 @@ GROUP_BY(31)(l_orderkey) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] @@ -168,6 +168,11 @@ GROUP_BY(35)() => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} @@ -181,19 +186,14 @@ GROUP_BY(35)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan index ecda053c9a..14f4bb489e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan @@ -30,19 +30,24 @@ GROUP_BY(18)() => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} @@ -52,19 +57,14 @@ GROUP_BY(18)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,16 +79,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000006 6: eb_0000000000000_0000_000007 7: eb_0000000000000_0000_000005 @@ -100,39 +100,39 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) @@ -147,19 +147,19 @@ TABLE_SUBQUERY(4) as default.b => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000003 - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - SCAN(25) on eb_0000000000000_0000_000002 + SCAN(26) on eb_0000000000000_0000_000002 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000001 + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -172,32 +172,32 @@ Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) @@ -208,19 +208,19 @@ JOIN(22)(INNER) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - SCAN(27) on eb_0000000000000_0000_000001 => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000003 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) @@ -244,11 +244,11 @@ GROUP_BY(31)(l_orderkey) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(30) on eb_0000000000000_0000_000007 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - SCAN(29) on eb_0000000000000_0000_000006 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000006 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan index 037904d747..ec3578c220 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan @@ -30,19 +30,24 @@ GROUP_BY(18)() => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} @@ -52,19 +57,14 @@ GROUP_BY(18)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -111,14 +111,14 @@ GROUP_BY(31)(l_orderkey) => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] @@ -168,6 +168,11 @@ GROUP_BY(35)() => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} @@ -181,19 +186,14 @@ GROUP_BY(35)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000011 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan index ecda053c9a..14f4bb489e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan @@ -30,19 +30,24 @@ GROUP_BY(18)() => target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} SCAN(8) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} JOIN(22)(INNER) => Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4) => target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} + SCAN(5) on default.orders as c + => filter: default.c.o_orderkey (INT4) > 0 + => target list: default.c.o_orderkey (INT4) + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) => out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)} @@ -52,19 +57,14 @@ GROUP_BY(18)() => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4) => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(5) on default.orders as c - => filter: default.c.o_orderkey (INT4) > 0 - => target list: default.c.o_orderkey (INT4) - => out schema: {(1) default.c.o_orderkey (INT4)} - => in schema: {(9) default.c.o_clerk (TEXT), default.c.o_comment (TEXT), default.c.o_custkey (INT4), default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4), default.c.o_orderpriority (TEXT), default.c.o_orderstatus (TEXT), default.c.o_shippriority (INT4), default.c.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -79,16 +79,16 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000006 6: eb_0000000000000_0000_000007 7: eb_0000000000000_0000_000005 @@ -100,39 +100,39 @@ Order of Execution ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8) - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) TABLE_SUBQUERY(4) as default.b => Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4) @@ -147,19 +147,19 @@ TABLE_SUBQUERY(4) as default.b => target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8) => out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)} => in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000003 - => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} - SCAN(25) on eb_0000000000000_0000_000002 + SCAN(26) on eb_0000000000000_0000_000002 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000001 + => out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} + => in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) SCAN(5) on default.orders as c => filter: default.c.o_orderkey (INT4) > 0 @@ -172,32 +172,32 @@ Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) -SCAN(8) on default.part - => target list: default.part.p_partkey (INT4) - => out schema: {(1) default.part.p_partkey (INT4)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(7) on default.lineitem as d + => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(7) on default.lineitem as d - => target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8) - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)} +SCAN(8) on default.part + => target list: default.part.p_partkey (INT4) + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) @@ -208,19 +208,19 @@ JOIN(22)(INNER) => out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} => in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)} SCAN(28) on eb_0000000000000_0000_000004 - => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} - SCAN(27) on eb_0000000000000_0000_000001 => out schema: {(1) default.c.o_orderkey (INT4)} => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000003 + => out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} + => in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.l_partkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) @@ -244,11 +244,11 @@ GROUP_BY(31)(l_orderkey) => out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)} => in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)} SCAN(30) on eb_0000000000000_0000_000007 - => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} - SCAN(29) on eb_0000000000000_0000_000006 => out schema: {(1) default.part.p_partkey (INT4)} => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000006 + => out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + => in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan index abc22905a4..4e72e0877d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -15,10 +19,6 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,6 +52,10 @@ SORT(12) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -64,10 +68,6 @@ SORT(12) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan index f72787a5b6..2325ed7ebd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -15,10 +19,6 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -44,19 +44,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) - -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,13 +59,25 @@ TABLE_SUBQUERY(3) as default.n2 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -90,11 +90,11 @@ SORT(12) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(1) name2 (TEXT)} - => in schema: {(1) name2 (TEXT)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan index abc22905a4..4e72e0877d 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -15,10 +19,6 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,6 +52,10 @@ SORT(12) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -64,10 +68,6 @@ SORT(12) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan index f72787a5b6..2325ed7ebd 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(5) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -15,10 +19,6 @@ SORT(5) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -44,19 +44,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) - -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(3) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,13 +59,25 @@ TABLE_SUBQUERY(3) as default.n2 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) + +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -90,11 +90,11 @@ SORT(12) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} SCAN(11) on eb_0000000000000_0000_000002 - => out schema: {(1) name2 (TEXT)} - => in schema: {(1) name2 (TEXT)} - SCAN(10) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(10) on eb_0000000000000_0000_000001 + => out schema: {(1) name2 (TEXT)} + => in schema: {(1) name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan index 227b3415f4..2402db7154 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.n1 SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: name1 (TEXT) = name2 (TEXT) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), default.n2.name2 (TEXT)} + => in schema: {(3) default.n2.name2 (TEXT), default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} UNION(21) - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan index 92f84419ee..15a4a6b051 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000001 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000001 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.n2.name2 (TEXT)} - => in schema: {(1) default.n2.name2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000001 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.n2.name2 (TEXT)} + => in schema: {(1) default.n2.name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan index 227b3415f4..2402db7154 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.n1 SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: name1 (TEXT) = name2 (TEXT) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), default.n2.name2 (TEXT)} + => in schema: {(3) default.n2.name2 (TEXT), default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} UNION(21) - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan index 92f84419ee..15a4a6b051 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 + => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 => out schema: {(1) name2 (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 - => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000001 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000001 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: substr(default.n2.n_name (TEXT),1,4) as name2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as name1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=name2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=name1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(1) default.n2.name2 (TEXT)} - => in schema: {(1) default.n2.name2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000001 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), name1 (TEXT)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(1) default.n2.name2 (TEXT)} + => in schema: {(1) default.n2.name2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} => in schema: {(3) default.n1.n_nationkey (INT4), name1 (TEXT), name2 (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan index 4826b745c9..8e6d32bd82 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.n1 SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: ?substr_1 (TEXT) = ?substr_2 (TEXT) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - => in schema: {(5) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + => in schema: {(5) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT), ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} UNION(21) - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan index a3b9e837e6..cd716a4a32 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000001 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000001 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} - => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000001 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan index 4826b745c9..8e6d32bd82 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,25 +39,25 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000005 3: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] 0: type=Broadcast, tables=default.nation - 1: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.n1 SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -65,42 +65,42 @@ SORT(18) => Join Cond: ?substr_1 (TEXT) = ?substr_2 (TEXT) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - => in schema: {(5) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + => in schema: {(5) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT), ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} UNION(21) - TABLE_SUBQUERY(13) as default.n2 + TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(1) on default.nation + SCAN(3) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - TABLE_SUBQUERY(14) as default.n2 + TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) default.n2.n_name (TEXT), ?substr_2 (TEXT)} => in schema: {(4) default.n2.n_comment (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4), default.n2.n_regionkey (INT4)} - SCAN(3) on default.nation + SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan index a3b9e837e6..cd716a4a32 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} + SCAN(0) on default.nation as n1 + => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 + => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 => out schema: {(2) ?substr_2 (TEXT), default.n2.n_name (TEXT)} @@ -28,10 +32,6 @@ SORT(8) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.nation as n1 - => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 - => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} - => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -39,27 +39,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000001 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000001 -4: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000003 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(13) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -71,11 +71,11 @@ TABLE_SUBQUERY(13) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32) TABLE_SUBQUERY(14) as default.n2 => Targets: default.n2.n_name (TEXT), substr(default.n2.n_name (TEXT),1,4) as ?substr_2 @@ -87,11 +87,11 @@ TABLE_SUBQUERY(14) as default.n2 => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) SCAN(0) on default.nation as n1 => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), substr(default.n1.n_name (TEXT),1,4) as ?substr_1 @@ -99,16 +99,16 @@ SCAN(0) on default.nation as n1 => in schema: {(4) default.n1.n_comment (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n1.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000002 -[q_0000000000000_0000] 1 => 4 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?substr_2 (TEXT), num=32), union delegated scan: eb_0000000000000_0000_000001 +[q_0000000000000_0000] 4 => 3 (type=HASH_SHUFFLE, key=?substr_1 (TEXT), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) SORT(18) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) @@ -117,26 +117,26 @@ SORT(18) => target list: default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(5) ?substr_1 (TEXT), ?substr_2 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} - SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} - => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} - SCAN(17) on eb_0000000000000_0000_000001 + SCAN(17) on eb_0000000000000_0000_000004 => out schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} => in schema: {(3) ?substr_1 (TEXT), default.n1.n_name (TEXT), default.n1.n_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} + => in schema: {(2) default.n2.n_name (TEXT), default.n2.?substr_2 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), default.n2.n_name (TEXT), num=32) [Enforcers] - 0: sorted input=eb_0000000000000_0000_000004 + 0: sorted input=eb_0000000000000_0000_000003 SORT(8) => Sort Keys: default.n1.n_nationkey (INT4) (asc),default.n2.n_name (TEXT) (asc) - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(19) on eb_0000000000000_0000_000003 => out schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} => in schema: {(3) default.n1.n_name (TEXT), default.n1.n_nationkey (INT4), default.n2.n_name (TEXT)} diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan index e192cc89ef..f19b5cda83 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan @@ -5,6 +5,10 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -14,19 +18,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,18 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.s - 1: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r + 1: type=Broadcast, tables=default.s JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -67,19 +71,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan index 1beaf4df67..59f15f11b1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan @@ -5,6 +5,10 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -14,19 +18,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -35,55 +35,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) = MOROCCO + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) = MOROCCO - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -98,19 +98,19 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - SCAN(13) on eb_0000000000000_0000_000002 + SCAN(14) on eb_0000000000000_0000_000002 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4) @@ -122,8 +122,8 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -131,11 +131,11 @@ JOIN(11)(INNER) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(1) default.s.s_nationkey (INT4)} => in schema: {(1) default.s.s_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan index e192cc89ef..f19b5cda83 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan @@ -5,6 +5,10 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -14,19 +18,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,14 +46,18 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.s - 1: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r + 1: type=Broadcast, tables=default.s JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} @@ -67,19 +71,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan index 1beaf4df67..59f15f11b1 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan @@ -5,6 +5,10 @@ JOIN(11)(INNER) => target list: default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} + SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4) + => out schema: {(1) default.s.s_nationkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} @@ -14,19 +18,15 @@ JOIN(11)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4) - => out schema: {(1) default.s.s_nationkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -35,55 +35,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(0) on default.nation as n + => filter: default.n.n_name (TEXT) = MOROCCO + => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(0) on default.nation as n - => filter: default.n.n_name (TEXT) = MOROCCO - => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT) as name, default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) TABLE_SUBQUERY(4) as default.t => Targets: default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -98,19 +98,19 @@ TABLE_SUBQUERY(4) as default.t => target list: default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4), name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} - SCAN(13) on eb_0000000000000_0000_000002 + SCAN(14) on eb_0000000000000_0000_000002 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), name (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4) @@ -122,8 +122,8 @@ Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) JOIN(11)(INNER) => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) @@ -131,11 +131,11 @@ JOIN(11)(INNER) => out schema: {(4) default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} => in schema: {(5) default.s.s_nationkey (INT4), default.t.n_comment (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4), default.t.name (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(1) default.s.s_nationkey (INT4)} => in schema: {(1) default.s.s_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} + => in schema: {(4) default.t.n_nationkey (INT4), default.t.name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan index 3307bf6e60..195229d9ca 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan @@ -14,28 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -77,28 +77,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan index 06cd0c9d20..7d89fa2821 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan @@ -14,28 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,19 +67,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(7) on default.partsupp as ps => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) @@ -87,23 +75,23 @@ SCAN(7) on default.partsupp as ps => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) @@ -111,13 +99,25 @@ SCAN(0) on default.nation as n => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) @@ -128,19 +128,19 @@ JOIN(13)(INNER) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) @@ -159,11 +159,11 @@ TABLE_SUBQUERY(4) as default.t => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan index 3307bf6e60..195229d9ca 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan @@ -14,28 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -77,28 +77,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan index 06cd0c9d20..7d89fa2821 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan @@ -14,28 +14,28 @@ JOIN(14)(INNER) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,19 +67,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(7) on default.partsupp as ps => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) @@ -87,23 +75,23 @@ SCAN(7) on default.partsupp as ps => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) @@ -111,13 +99,25 @@ SCAN(0) on default.nation as n => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) @@ -128,19 +128,19 @@ JOIN(13)(INNER) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) @@ -159,11 +159,11 @@ TABLE_SUBQUERY(4) as default.t => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan index 543e03971e..8d739f6eb9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan @@ -16,28 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,28 +81,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan index 73e192bd51..d80eea026e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan @@ -16,28 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,19 +69,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(7) on default.partsupp as ps => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) @@ -89,23 +77,23 @@ SCAN(7) on default.partsupp as ps => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) @@ -113,13 +101,25 @@ SCAN(0) on default.nation as n => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) @@ -130,19 +130,19 @@ JOIN(13)(INNER) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) @@ -161,11 +161,11 @@ TABLE_SUBQUERY(4) as default.t => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan index 543e03971e..8d739f6eb9 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan @@ -16,28 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,28 +81,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan index 73e192bd51..d80eea026e 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan @@ -16,28 +16,28 @@ SELECTION(9) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} + SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) => target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} JOIN(13)(INNER) => Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4) => target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - SCAN(7) on default.partsupp as ps - => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} SCAN(5) on default.supplier as s => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(7) on default.partsupp as ps + => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,19 +69,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) - -SCAN(5) on default.supplier as s - => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) - => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} - => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SCAN(7) on default.partsupp as ps => target list: default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4) @@ -89,23 +77,23 @@ SCAN(7) on default.partsupp as ps => in schema: {(5) default.ps.ps_availqty (INT4), default.ps.ps_comment (TEXT), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4), default.ps.ps_supplycost (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -SCAN(1) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(5) on default.supplier as s + => target list: default.s.s_nationkey (INT4), default.s.s_suppkey (INT4) + => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + => in schema: {(7) default.s.s_acctbal (FLOAT8), default.s.s_address (TEXT), default.s.s_comment (TEXT), default.s.s_name (TEXT), default.s.s_nationkey (INT4), default.s.s_phone (TEXT), default.s.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) IN (ARGENTINA, ETHIOPIA, MOROCCO) @@ -113,13 +101,25 @@ SCAN(0) on default.nation as n => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +======================================================= +Block Id: eb_0000000000000_0000_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) + +SCAN(1) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) @@ -130,19 +130,19 @@ JOIN(13)(INNER) => out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 => out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} => in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32) @@ -161,11 +161,11 @@ TABLE_SUBQUERY(4) as default.t => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan index bca2cd4adc..c0b6f82ce6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -21,18 +25,14 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,22 +41,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000006 3: eb_0000000000000_0000_000007 4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.r @@ -71,21 +71,21 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -100,6 +100,10 @@ SORT(20) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -113,13 +117,9 @@ SORT(20) => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan index 4c6932fdb1..6509afc064 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -21,18 +25,14 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -42,57 +42,57 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) GROUP_BY(16)(r_regionkey) => exprs: (count()) @@ -104,22 +104,22 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) @@ -134,16 +134,16 @@ TABLE_SUBQUERY(6) as default.t => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -155,8 +155,8 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -169,11 +169,11 @@ SORT(20) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} - => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} + => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan index bca2cd4adc..c0b6f82ce6 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -21,18 +25,14 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -41,22 +41,22 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000004 +1: eb_0000000000000_0000_000003 2: eb_0000000000000_0000_000006 3: eb_0000000000000_0000_000007 4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.r @@ -71,21 +71,21 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 6 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -100,6 +100,10 @@ SORT(20) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -113,13 +117,9 @@ SORT(20) => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan index 4c6932fdb1..6509afc064 100644 --- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} + SCAN(0) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} @@ -21,18 +25,14 @@ SORT(8) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} SCAN(2) on default.region as r => target list: default.r.r_regionkey (INT4) => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} - SCAN(0) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -42,57 +42,57 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 8: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -SCAN(2) on default.region as r - => target list: default.r.r_regionkey (INT4) - => out schema: {(1) default.r.r_regionkey (INT4)} - => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} +SCAN(1) on default.nation as n + => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -SCAN(1) on default.nation as n - => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} +SCAN(2) on default.region as r + => target list: default.r.r_regionkey (INT4) + => out schema: {(1) default.r.r_regionkey (INT4)} + => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) GROUP_BY(16)(r_regionkey) => exprs: (count()) @@ -104,22 +104,22 @@ GROUP_BY(16)(r_regionkey) => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000003 - => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000002 + SCAN(15) on eb_0000000000000_0000_000002 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) TABLE_SUBQUERY(6) as default.t => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4) @@ -134,16 +134,16 @@ TABLE_SUBQUERY(6) as default.t => target list: default.r.r_regionkey (INT4), cnt (INT8) => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)} => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} - SCAN(17) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -155,8 +155,8 @@ Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.t.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) @@ -169,11 +169,11 @@ SORT(20) => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)} => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)} SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} - => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000001 => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000004 + => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} + => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan index 4ded90a1df..6bec7f24e7 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,14 +67,14 @@ SORT(15) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash_NoBroadcast.plan index e504af38e0..5cba003266 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(INNER) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan index 4ded90a1df..6bec7f24e7 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -67,14 +67,14 @@ SORT(15) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort_NoBroadcast.plan index e504af38e0..5cba003266 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) -SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(1) on default.nation + => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -SCAN(1) on default.nation - => target list: default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(INNER) => out schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(4) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(2) default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan index f1ceec061a..a719990d2d 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan @@ -7,6 +7,10 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -24,10 +28,6 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,8 +52,8 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.supplier + 1: type=Broadcast, tables=default.region SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) @@ -62,6 +62,10 @@ SORT(17) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} @@ -83,10 +87,6 @@ SORT(17) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan index 710b38ddac..af9b3a51d1 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -24,10 +28,6 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,27 +37,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) @@ -65,11 +65,11 @@ SCAN(1) on default.nation => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) SCAN(2) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -77,15 +77,15 @@ SCAN(2) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) @@ -100,19 +100,19 @@ TABLE_SUBQUERY(5) as default.t => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000003 + SCAN(14) on eb_0000000000000_0000_000002 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 + SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) @@ -124,8 +124,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) @@ -138,11 +138,11 @@ SORT(17) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} - => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan index f1ceec061a..a719990d2d 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan @@ -7,6 +7,10 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -24,10 +28,6 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,8 +52,8 @@ Block Id: eb_0000000000000_0000_000005 [LEAF] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) [Enforcers] - 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.supplier + 1: type=Broadcast, tables=default.region SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc),s1 (TEXT) (asc) @@ -62,6 +62,10 @@ SORT(17) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} @@ -83,10 +87,6 @@ SORT(17) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan index 710b38ddac..af9b3a51d1 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort_NoBroadcast.plan @@ -7,6 +7,10 @@ SORT(7) => target list: default.region.r_name (TEXT), s1 (TEXT) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} + SCAN(0) on default.region + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) => out schema: {(2) default.t.n_regionkey (INT4), s1 (TEXT)} @@ -24,10 +28,6 @@ SORT(7) => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -37,27 +37,27 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000003 |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000002 -2: eb_0000000000000_0000_000003 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000001 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000007 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) SCAN(1) on default.nation => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) @@ -65,11 +65,11 @@ SCAN(1) on default.nation => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) SCAN(2) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) @@ -77,15 +77,15 @@ SCAN(2) on default.supplier => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) TABLE_SUBQUERY(5) as default.t => Targets: CASE WHEN default.t.s_name (TEXT) IS NULL THEN N/O ELSE default.t.s_name (TEXT) END as s1, default.t.n_regionkey (INT4) @@ -100,19 +100,19 @@ TABLE_SUBQUERY(5) as default.t => target list: default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(11) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(14) on eb_0000000000000_0000_000003 + SCAN(14) on eb_0000000000000_0000_000002 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 + SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(0) on default.region => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) @@ -124,8 +124,8 @@ Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) @@ -138,11 +138,11 @@ SORT(17) => out schema: {(2) default.region.r_name (TEXT), s1 (TEXT)} => in schema: {(4) default.region.r_name (TEXT), default.region.r_regionkey (INT4), default.t.n_regionkey (INT4), s1 (TEXT)} SCAN(16) on eb_0000000000000_0000_000004 - => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} - => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} - SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000003 + => out schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} + => in schema: {(2) s1 (TEXT), default.t.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan index 1d5762f6e3..ceb96f9959 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan index ba9a319372..f1fa414673 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(1) default.a.l_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(1) default.b.o_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan index 1d5762f6e3..ceb96f9959 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -60,14 +60,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan index ba9a319372..f1fa414673 100644 --- a/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort_NoBroadcast.plan @@ -15,14 +15,14 @@ JOIN(8)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.o_orderkey (INT4) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} - SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} SCAN(1) on default.orders as b => target list: default.b.o_orderkey (INT4) => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} + SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -50,32 +50,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -SCAN(1) on default.orders as b - => target list: default.b.o_orderkey (INT4) - => out schema: {(1) default.b.o_orderkey (INT4)} - => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} +SCAN(0) on default.lineitem as a + => target list: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -SCAN(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} +SCAN(1) on default.orders as b + => target list: default.b.o_orderkey (INT4) + => out schema: {(1) default.b.o_orderkey (INT4)} + => in schema: {(9) default.b.o_clerk (TEXT), default.b.o_comment (TEXT), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4), default.b.o_orderpriority (TEXT), default.b.o_orderstatus (TEXT), default.b.o_shippriority (INT4), default.b.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) @@ -86,11 +86,11 @@ JOIN(7)(INNER) => out schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.o_orderkey (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(1) default.a.l_orderkey (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.b.o_orderkey (INT4)} => in schema: {(1) default.b.o_orderkey (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan index 9fbfec508a..eab9940ec5 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.orders => target list: default.orders.o_orderkey (INT4) => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.orders - => target list: default.orders.o_orderkey (INT4) - => out schema: {(1) default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(1) default.orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan index 9fbfec508a..eab9940ec5 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.orders => target list: default.orders.o_orderkey (INT4) => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.orders - => target list: default.orders.o_orderkey (INT4) - => out schema: {(1) default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(1) default.orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan index 9fbfec508a..eab9940ec5 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.orders => target list: default.orders.o_orderkey (INT4) => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.orders - => target list: default.orders.o_orderkey (INT4) - => out schema: {(1) default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(1) default.orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan index 9fbfec508a..eab9940ec5 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.orders => target list: default.orders.o_orderkey (INT4) => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.orders - => target list: default.orders.o_orderkey (INT4) - => out schema: {(1) default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.orders + => target list: default.orders.o_orderkey (INT4) + => out schema: {(1) default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.orders.o_orderkey (INT4)} => in schema: {(1) default.orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan index d44658c132..25f5eeb65b 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(FULL_OUTER) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan index d44658c132..25f5eeb65b 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(FULL_OUTER) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan index d44658c132..25f5eeb65b 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(FULL_OUTER) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan index d44658c132..25f5eeb65b 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan @@ -16,14 +16,14 @@ SORT(5) => target list: default.t3.id (INT4), default.t4.id (INT4) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} - SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} SCAN(1) on default.jointable13 as t3 => target list: default.t3.id (INT4) => out schema: {(1) default.t3.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} + SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -53,32 +53,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(1) on default.jointable13 as t3 - => target list: default.t3.id (INT4) - => out schema: {(1) default.t3.id (INT4)} - => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} +SCAN(3) on default.jointable14 as t4 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -SCAN(3) on default.jointable14 as t4 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(1) on default.jointable13 as t3 + => target list: default.t3.id (INT4) + => out schema: {(1) default.t3.id (INT4)} + => in schema: {(2) default.t3.id (INT4), default.t3.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t3.id (INT4), num=32) @@ -89,11 +89,11 @@ JOIN(8)(FULL_OUTER) => out schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} => in schema: {(2) default.t3.id (INT4), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(1) default.t4.id (INT4)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t3.id (INT4)} => in schema: {(1) default.t3.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(1) default.t4.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash.plan index 580a217f55..ae57b835de 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash_NoBroadcast.plan index 580a217f55..ae57b835de 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort.plan index 580a217f55..ae57b835de 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort_NoBroadcast.plan index 580a217f55..ae57b835de 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort_NoBroadcast.plan @@ -7,14 +7,14 @@ SORT(3) => target list: default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} - SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} SCAN(0) on default.empty_orders => target list: default.empty_orders.o_orderkey (INT4) => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} + SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -40,32 +40,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -SCAN(0) on default.empty_orders - => target list: default.empty_orders.o_orderkey (INT4) - => out schema: {(1) default.empty_orders.o_orderkey (INT4)} - => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} +SCAN(1) on default.customer + => target list: default.customer.c_custkey (INT4) + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -SCAN(1) on default.customer - => target list: default.customer.c_custkey (INT4) - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(0) on default.empty_orders + => target list: default.empty_orders.o_orderkey (INT4) + => out schema: {(1) default.empty_orders.o_orderkey (INT4)} + => in schema: {(9) default.empty_orders.o_clerk (TEXT), default.empty_orders.o_comment (TEXT), default.empty_orders.o_custkey (INT4), default.empty_orders.o_orderdate (TEXT), default.empty_orders.o_orderkey (INT4), default.empty_orders.o_orderpriority (TEXT), default.empty_orders.o_orderstatus (TEXT), default.empty_orders.o_shippriority (INT4), default.empty_orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.empty_orders.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4), num=32) @@ -78,11 +78,11 @@ SORT(10) => out schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} => in schema: {(2) default.customer.c_custkey (INT4), default.empty_orders.o_orderkey (INT4)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(1) default.customer.c_custkey (INT4)} - => in schema: {(1) default.customer.c_custkey (INT4)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(1) default.empty_orders.o_orderkey (INT4)} => in schema: {(1) default.empty_orders.o_orderkey (INT4)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(1) default.customer.c_custkey (INT4)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan index 3a058a8f34..a35e200dcd 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,16 +81,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan index a12e09655a..f022519234 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash_NoBroadcast.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -65,34 +65,34 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -103,11 +103,11 @@ JOIN(10)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan index 3a058a8f34..a35e200dcd 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -81,16 +81,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan index a12e09655a..f022519234 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort_NoBroadcast.plan @@ -24,16 +24,16 @@ JOIN(12)(LEFT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -65,34 +65,34 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => filter: default.t1.id (INT4) > 1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => filter: default.t1.id (INT4) > 1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -103,11 +103,11 @@ JOIN(10)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(15) on eb_0000000000000_0000_000002 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(14) on eb_0000000000000_0000_000001 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} + SCAN(14) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan index 3520ac9be6..22fc8cec55 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -61,15 +61,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan index 1255cc5075..f5486f993f 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -51,33 +51,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -88,11 +88,11 @@ JOIN(8)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan index 3520ac9be6..22fc8cec55 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -61,15 +61,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan index 1255cc5075..f5486f993f 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan @@ -15,15 +15,15 @@ JOIN(9)(RIGHT_OUTER) => target list: default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} - SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} SCAN(1) on default.jointable14 as t4 => filter: default.t4.id (INT4) > 1 => target list: default.t4.id (INT4) => out schema: {(1) default.t4.id (INT4)} => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} + SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -51,33 +51,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) -SCAN(1) on default.jointable14 as t4 - => filter: default.t4.id (INT4) > 1 - => target list: default.t4.id (INT4) - => out schema: {(1) default.t4.id (INT4)} - => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} +SCAN(0) on default.jointable11 as t1 + => target list: default.t1.id (INT4), default.t1.name (TEXT) + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -SCAN(0) on default.jointable11 as t1 - => target list: default.t1.id (INT4), default.t1.name (TEXT) - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} +SCAN(1) on default.jointable14 as t4 + => filter: default.t4.id (INT4) > 1 + => target list: default.t4.id (INT4) + => out schema: {(1) default.t4.id (INT4)} + => in schema: {(2) default.t4.id (INT4), default.t4.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.t1.id (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.t4.id (INT4), num=32) @@ -88,11 +88,11 @@ JOIN(8)(INNER) => out schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} => in schema: {(3) default.t1.id (INT4), default.t1.name (TEXT), default.t4.id (INT4)} SCAN(12) on eb_0000000000000_0000_000002 - => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} - SCAN(11) on eb_0000000000000_0000_000001 => out schema: {(1) default.t4.id (INT4)} => in schema: {(1) default.t4.id (INT4)} + SCAN(11) on eb_0000000000000_0000_000001 + => out schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} + => in schema: {(2) default.t1.id (INT4), default.t1.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash.plan index 41aa1083e4..795c011a4e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash.plan @@ -5,15 +5,6 @@ JOIN(11)(FULL_OUTER) => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} - TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(4) on default.lineitem - => filter: default.lineitem.l_orderkey (INT4) < 0 - => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) - => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} TABLE_SUBQUERY(3) as default.a => Targets: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} @@ -23,6 +14,15 @@ JOIN(11)(FULL_OUTER) => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + SCAN(4) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,17 +46,17 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(3) as default.a - => Targets: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - PROJECTION(2) +TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + PROJECTION(6) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(0) on default.lineitem + SCAN(4) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -67,17 +67,17 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - PROJECTION(6) +TABLE_SUBQUERY(3) as default.a + => Targets: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + PROJECTION(2) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(4) on default.lineitem + SCAN(0) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -88,8 +88,8 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) JOIN(11)(FULL_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.b.l_orderkey (INT4) @@ -97,11 +97,11 @@ JOIN(11)(FULL_OUTER) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(1) default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash_NoBroadcast.plan index 41aa1083e4..795c011a4e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Hash_NoBroadcast.plan @@ -5,15 +5,6 @@ JOIN(11)(FULL_OUTER) => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} - TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(4) on default.lineitem - => filter: default.lineitem.l_orderkey (INT4) < 0 - => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) - => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} TABLE_SUBQUERY(3) as default.a => Targets: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} @@ -23,6 +14,15 @@ JOIN(11)(FULL_OUTER) => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + SCAN(4) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,17 +46,17 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(3) as default.a - => Targets: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - PROJECTION(2) +TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + PROJECTION(6) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(0) on default.lineitem + SCAN(4) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -67,17 +67,17 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - PROJECTION(6) +TABLE_SUBQUERY(3) as default.a + => Targets: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + PROJECTION(2) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(4) on default.lineitem + SCAN(0) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -88,8 +88,8 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) JOIN(11)(FULL_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.b.l_orderkey (INT4) @@ -97,11 +97,11 @@ JOIN(11)(FULL_OUTER) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(1) default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort.plan index 41aa1083e4..795c011a4e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort.plan @@ -5,15 +5,6 @@ JOIN(11)(FULL_OUTER) => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} - TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(4) on default.lineitem - => filter: default.lineitem.l_orderkey (INT4) < 0 - => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) - => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} TABLE_SUBQUERY(3) as default.a => Targets: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} @@ -23,6 +14,15 @@ JOIN(11)(FULL_OUTER) => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + SCAN(4) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,17 +46,17 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(3) as default.a - => Targets: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - PROJECTION(2) +TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + PROJECTION(6) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(0) on default.lineitem + SCAN(4) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -67,17 +67,17 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - PROJECTION(6) +TABLE_SUBQUERY(3) as default.a + => Targets: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + PROJECTION(2) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(4) on default.lineitem + SCAN(0) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -88,8 +88,8 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) JOIN(11)(FULL_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.b.l_orderkey (INT4) @@ -97,11 +97,11 @@ JOIN(11)(FULL_OUTER) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(1) default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort_NoBroadcast.plan index 41aa1083e4..795c011a4e 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testFullOuterJoinWithEmptyIntermediateData.1.Sort_NoBroadcast.plan @@ -5,15 +5,6 @@ JOIN(11)(FULL_OUTER) => target list: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} - TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - SCAN(4) on default.lineitem - => filter: default.lineitem.l_orderkey (INT4) < 0 - => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) - => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} TABLE_SUBQUERY(3) as default.a => Targets: default.a.l_orderkey (INT4) => out schema: {(1) default.a.l_orderkey (INT4)} @@ -23,6 +14,15 @@ JOIN(11)(FULL_OUTER) => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + SCAN(4) on default.lineitem + => filter: default.lineitem.l_orderkey (INT4) < 0 + => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) + => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -46,17 +46,17 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(3) as default.a - => Targets: default.a.l_orderkey (INT4) - => out schema: {(1) default.a.l_orderkey (INT4)} - => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} - PROJECTION(2) +TABLE_SUBQUERY(7) as default.b + => Targets: default.b.l_orderkey (INT4) + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} + PROJECTION(6) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(0) on default.lineitem + SCAN(4) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -67,17 +67,17 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -TABLE_SUBQUERY(7) as default.b - => Targets: default.b.l_orderkey (INT4) - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(16) default.b.l_comment (TEXT), default.b.l_commitdate (TEXT), default.b.l_discount (FLOAT8), default.b.l_extendedprice (FLOAT8), default.b.l_linenumber (INT4), default.b.l_linestatus (TEXT), default.b.l_orderkey (INT4), default.b.l_partkey (INT4), default.b.l_quantity (FLOAT8), default.b.l_receiptdate (TEXT), default.b.l_returnflag (TEXT), default.b.l_shipdate (TEXT), default.b.l_shipinstruct (TEXT), default.b.l_shipmode (TEXT), default.b.l_suppkey (INT4), default.b.l_tax (FLOAT8)} - PROJECTION(6) +TABLE_SUBQUERY(3) as default.a + => Targets: default.a.l_orderkey (INT4) + => out schema: {(1) default.a.l_orderkey (INT4)} + => in schema: {(16) default.a.l_comment (TEXT), default.a.l_commitdate (TEXT), default.a.l_discount (FLOAT8), default.a.l_extendedprice (FLOAT8), default.a.l_linenumber (INT4), default.a.l_linestatus (TEXT), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_receiptdate (TEXT), default.a.l_returnflag (TEXT), default.a.l_shipdate (TEXT), default.a.l_shipinstruct (TEXT), default.a.l_shipmode (TEXT), default.a.l_suppkey (INT4), default.a.l_tax (FLOAT8)} + PROJECTION(2) => Targets: default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_linenumber (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_tax (FLOAT8), default.lineitem.l_returnflag (TEXT), default.lineitem.l_linestatus (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_comment (TEXT) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} - SCAN(4) on default.lineitem + SCAN(0) on default.lineitem => filter: default.lineitem.l_orderkey (INT4) < 0 => target list: default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8) => out schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} @@ -88,8 +88,8 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) JOIN(11)(FULL_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.b.l_orderkey (INT4) @@ -97,11 +97,11 @@ JOIN(11)(FULL_OUTER) => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(2) default.a.l_orderkey (INT4), default.b.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(1) default.b.l_orderkey (INT4)} - => in schema: {(1) default.b.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.l_orderkey (INT4)} => in schema: {(1) default.a.l_orderkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(1) default.b.l_orderkey (INT4)} + => in schema: {(1) default.b.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan index 00f234d6d0..2e0cc87499 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -76,15 +76,15 @@ SORT(17) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan index feb21fd52e..703f32c439 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash_NoBroadcast.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -58,33 +58,33 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) @@ -103,11 +103,11 @@ TABLE_SUBQUERY(5) as default.b => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(1) default.lineitem.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(1) default.jointable12.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(1) default.lineitem.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan index 00f234d6d0..2e0cc87499 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -76,15 +76,15 @@ SORT(17) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan index feb21fd52e..703f32c439 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort_NoBroadcast.plan @@ -16,15 +16,15 @@ SORT(7) => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4) => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable11 as a => target list: default.a.id (INT4) => out schema: {(1) default.a.id (INT4)} @@ -58,33 +58,33 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(1) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(2) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4) + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(2) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4) - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.b.id (INT4), num=32) @@ -103,11 +103,11 @@ TABLE_SUBQUERY(5) as default.b => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(2) default.jointable12.id (INT4), default.lineitem.l_orderkey (INT4)} SCAN(14) on eb_0000000000000_0000_000003 - => out schema: {(1) default.lineitem.l_orderkey (INT4)} - => in schema: {(1) default.lineitem.l_orderkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000002 => out schema: {(1) default.jointable12.id (INT4)} => in schema: {(1) default.jointable12.id (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(1) default.lineitem.l_orderkey (INT4)} + => in schema: {(1) default.lineitem.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000001 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan index a54473ea7a..45b95c2191 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -71,15 +71,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan index 863fe12f31..107e1fa6c6 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash_NoBroadcast.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -54,33 +54,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(0) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(0) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) @@ -99,11 +99,11 @@ TABLE_SUBQUERY(4) as default.a => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan index a54473ea7a..45b95c2191 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -71,15 +71,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan index 863fe12f31..107e1fa6c6 100644 --- a/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan +++ b/tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort_NoBroadcast.plan @@ -18,15 +18,15 @@ JOIN(10)(LEFT_OUTER) => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT) => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(0) on default.jointable12 => filter: default.jointable12.id (INT4) > 10 => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -54,33 +54,33 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) -SCAN(0) on default.jointable12 - => filter: default.jointable12.id (INT4) > 10 - => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) - => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} - => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} +SCAN(1) on default.lineitem + => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -SCAN(1) on default.lineitem - => target list: default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT) - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(0) on default.jointable12 + => filter: default.jointable12.id (INT4) > 10 + => target list: default.jointable12.id (INT4), default.jointable12.name (TEXT) + => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.jointable12.id (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) @@ -99,11 +99,11 @@ TABLE_SUBQUERY(4) as default.a => out schema: {(3) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_shipdate (TEXT)} => in schema: {(4) default.jointable12.id (INT4), default.jointable12.name (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} SCAN(13) on eb_0000000000000_0000_000002 - => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} - SCAN(12) on eb_0000000000000_0000_000001 => out schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} => in schema: {(2) default.jointable12.id (INT4), default.jointable12.name (TEXT)} + SCAN(12) on eb_0000000000000_0000_000001 + => out schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} + => in schema: {(2) default.lineitem.l_orderkey (INT4), default.lineitem.l_shipdate (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] diff --git a/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result b/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result index c0f306723b..6135220bd8 100644 --- a/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result +++ b/tajo-core/src/test/resources/results/TestSelectQuery/testExplainSelectPhysical.2.result @@ -23,32 +23,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) -SCAN(0) on default.nation as n1 - => target list: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT) - => out schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} - => in schema: {(4) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n1.n_regionkey (INT4), default.n1.n_comment (TEXT)} +SCAN(1) on default.nation as n2 + => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 + => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} + => in schema: {(4) default.n2.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_regionkey (INT4), default.n2.n_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -SCAN(1) on default.nation as n2 - => target list: default.n2.n_name (TEXT), upper(default.n2.n_name (TEXT)) as ?upper_1 - => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} - => in schema: {(4) default.n2.n_nationkey (INT4), default.n2.n_name (TEXT), default.n2.n_regionkey (INT4), default.n2.n_comment (TEXT)} +SCAN(0) on default.nation as n1 + => target list: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT) + => out schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} + => in schema: {(4) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n1.n_regionkey (INT4), default.n1.n_comment (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=?upper_1 (TEXT), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.n1.n_name (TEXT), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.n1.n_nationkey (INT4), num=32) @@ -59,13 +59,13 @@ SORT(10) => Join Cond: default.n1.n_name (TEXT) = ?upper_1 (TEXT) => target list: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n2.n_name (TEXT) => out schema: {(3) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n2.n_name (TEXT)} - => in schema: {(4) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT), default.n2.n_name (TEXT), ?upper_1 (TEXT)} + => in schema: {(4) default.n2.n_name (TEXT), ?upper_1 (TEXT), default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} SCAN(9) on eb_0000000000000_0000_000002 - => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} - => in schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} - SCAN(8) on eb_0000000000000_0000_000001 => out schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} => in schema: {(2) default.n1.n_nationkey (INT4), default.n1.n_name (TEXT)} + SCAN(8) on eb_0000000000000_0000_000001 + => out schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} + => in schema: {(2) default.n2.n_name (TEXT), ?upper_1 (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan b/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan index 88c6bee82f..945b6e4c92 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan @@ -6,6 +6,20 @@ JOIN(14)(INNER) => out schema: {(12) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(14) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(0) on default.region + => filter: default.region.r_name (TEXT) = AMERICA + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(1) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(12)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} @@ -15,33 +29,19 @@ JOIN(14)(INNER) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT) => out schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - JOIN(12)(INNER) + JOIN(11)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(10) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(5) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(3) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - JOIN(11)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(1) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(0) on default.region - => filter: default.region.r_name (TEXT) = AMERICA - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(5) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -52,21 +52,21 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000010) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- 1: eb_0000000000000_0000_000001 2: eb_0000000000000_0000_000002 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 -6: eb_0000000000000_0000_000006 -7: eb_0000000000000_0000_000007 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000006 +6: eb_0000000000000_0000_000007 +7: eb_0000000000000_0000_000005 8: eb_0000000000000_0000_000008 9: eb_0000000000000_0000_000009 10: eb_0000000000000_0000_000010 @@ -77,102 +77,54 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -SCAN(0) on default.region - => filter: default.region.r_name (TEXT) = AMERICA - => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(5) on default.partsupp + => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) - -SCAN(1) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) SCAN(3) on default.supplier => target list: default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4) => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -SCAN(5) on default.partsupp - => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - => in schema: {(5) default.partsupp.ps_availqty (INT4), default.partsupp.ps_comment (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) JOIN(11)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} - => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(17) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(16) on eb_0000000000000_0000_000001 - => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] -======================================================= - -[Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) - -[Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) - -JOIN(12)(INNER) => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(10) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000005 - => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - => in schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} - SCAN(18) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000002 => out schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000001 + => out schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(3) default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) SCAN(7) on default.part => filter: default.part.p_size (INT4) = 15 AND default.part.p_type (TEXT)LIKE'%BRASS' @@ -181,35 +133,83 @@ SCAN(7) on default.part => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= -Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(1) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +SCAN(0) on default.region + => filter: default.region.r_name (TEXT) = AMERICA + => target list: default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(13)(INNER) +JOIN(12)(INNER) => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT) => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(12) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(21) on eb_0000000000000_0000_000007 + SCAN(19) on eb_0000000000000_0000_000004 => out schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(20) on eb_0000000000000_0000_000006 + SCAN(18) on eb_0000000000000_0000_000003 => out schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} => in schema: {(8) default.partsupp.ps_partkey (INT4), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} +======================================================= +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + => in schema: {(5) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000007 + => out schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(2) default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000006 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + ======================================================= Block Id: eb_0000000000000_0000_000009 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) JOIN(14)(INNER) => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) @@ -217,11 +217,11 @@ JOIN(14)(INNER) => out schema: {(12) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_phone (TEXT)} => in schema: {(14) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.region.r_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} SCAN(23) on eb_0000000000000_0000_000008 - => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - => in schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} - SCAN(22) on eb_0000000000000_0000_000003 => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} + SCAN(22) on eb_0000000000000_0000_000005 + => out schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} + => in schema: {(11) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_supplycost (FLOAT8), default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000010 [TERMINAL] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan b/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan index 6e2d021fee..8a716ebc30 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan @@ -14,14 +14,14 @@ PROJECTION(3) => target list: CASE WHEN default.part.p_type (TEXT)LIKE'PROMO%' THEN default.lineitem.l_extendedprice (FLOAT8) ELSE 0.0 END as ?casewhen, ?multiply_2 (FLOAT8) => out schema: {(2) ?casewhen (FLOAT8), ?multiply_2 (FLOAT8)} => in schema: {(5) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.part.p_partkey (INT4), default.part.p_type (TEXT)} - SCAN(0) on default.lineitem - => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 - => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.part => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(0) on default.lineitem + => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 + => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -47,32 +47,32 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -SCAN(1) on default.part - => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) - => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} +SCAN(0) on default.lineitem + => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 + => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -SCAN(0) on default.lineitem - => target list: default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply_2 - => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +SCAN(1) on default.part + => target list: default.part.p_partkey (INT4), default.part.p_type (TEXT) + => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) @@ -88,11 +88,11 @@ GROUP_BY(11)() => out schema: {(2) ?casewhen (FLOAT8), ?multiply_2 (FLOAT8)} => in schema: {(5) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4), default.part.p_partkey (INT4), default.part.p_type (TEXT)} SCAN(10) on eb_0000000000000_0000_000002 - => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} - => in schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} - SCAN(9) on eb_0000000000000_0000_000001 => out schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} => in schema: {(2) default.part.p_partkey (INT4), default.part.p_type (TEXT)} + SCAN(9) on eb_0000000000000_0000_000001 + => out schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} + => in schema: {(3) ?multiply_2 (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_partkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan index 6477480e93..77c3f59abe 100644 --- a/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan +++ b/tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan @@ -13,51 +13,51 @@ SORT(8) => out schema: {(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} => in schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_nationkey (INT4)} JOIN(19)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(5) on default.region + => filter: default.region.r_name (TEXT) = ASIA + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + JOIN(18)(INNER) => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4) => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} => in schema: {(8) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - JOIN(18)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} - SCAN(3) on default.supplier - => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} JOIN(17)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4) => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - SCAN(2) on default.lineitem - => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} SCAN(1) on default.orders => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - JOIN(16)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} - SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - SCAN(5) on default.region - => filter: default.region.r_name (TEXT) = ASIA - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(2) on default.lineitem + => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} + JOIN(16)(INNER) + => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(3) on default.supplier + => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -69,14 +69,14 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000014) |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 |-eb_0000000000000_0000_000009 - |-eb_0000000000000_0000_000008 - |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000008 + |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 - |-eb_0000000000000_0000_000001 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- @@ -84,11 +84,11 @@ Order of Execution 2: eb_0000000000000_0000_000002 3: eb_0000000000000_0000_000004 4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000007 -6: eb_0000000000000_0000_000008 -7: eb_0000000000000_0000_000003 -8: eb_0000000000000_0000_000006 -9: eb_0000000000000_0000_000009 +5: eb_0000000000000_0000_000003 +6: eb_0000000000000_0000_000006 +7: eb_0000000000000_0000_000008 +8: eb_0000000000000_0000_000009 +9: eb_0000000000000_0000_000007 10: eb_0000000000000_0000_000010 11: eb_0000000000000_0000_000011 12: eb_0000000000000_0000_000012 @@ -101,45 +101,31 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) -SCAN(5) on default.region - => filter: default.region.r_name (TEXT) = ASIA - => target list: default.region.r_regionkey (INT4) - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} +SCAN(0) on default.customer + => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -SCAN(4) on default.nation - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} +SCAN(3) on default.supplier + => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) - -SCAN(1) on default.orders - => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 - => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) - => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} - => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} - -======================================================= -Block Id: eb_0000000000000_0000_000005 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) SCAN(2) on default.lineitem => target list: default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.lineitem.l_extendedprice (FLOAT8) * 1.0 - default.lineitem.l_discount (FLOAT8) as ?multiply @@ -147,62 +133,51 @@ SCAN(2) on default.lineitem => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) - -SCAN(3) on default.supplier - => target list: default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(7) default.supplier.s_acctbal (FLOAT8), default.supplier.s_address (TEXT), default.supplier.s_comment (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_phone (TEXT), default.supplier.s_suppkey (INT4)} - -======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -SCAN(0) on default.customer - => target list: default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4) - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} +SCAN(1) on default.orders + => filter: default.orders.o_orderdate (TEXT) >= 1994-01-01 AND default.orders.o_orderdate (TEXT) < 1995-01-01 + => target list: default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(9) default.orders.o_clerk (TEXT), default.orders.o_comment (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderdate (TEXT), default.orders.o_orderkey (INT4), default.orders.o_orderpriority (TEXT), default.orders.o_orderstatus (TEXT), default.orders.o_shippriority (INT4), default.orders.o_totalprice (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) JOIN(16)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) - => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} - => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) + => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(23) on eb_0000000000000_0000_000002 - => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} - => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} SCAN(22) on eb_0000000000000_0000_000001 - => out schema: {(1) default.region.r_regionkey (INT4)} - => in schema: {(1) default.region.r_regionkey (INT4)} + => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} + => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) JOIN(17)(INNER) => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) @@ -210,65 +185,90 @@ JOIN(17)(INNER) => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(7) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(25) on eb_0000000000000_0000_000005 - => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000004 => out schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} => in schema: {(2) default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000004 + => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} + => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [LEAF] ======================================================= -[Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), num=32) +[Outgoing] +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) + +SCAN(4) on default.nation + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4) + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(4) default.nation.n_comment (TEXT), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [LEAF] +======================================================= [Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) -JOIN(18)(INNER) - => Join Cond: default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) - => target list: default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4) - => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(27) on eb_0000000000000_0000_000008 - => out schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - => in schema: {(2) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4)} - SCAN(26) on eb_0000000000000_0000_000007 - => out schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(2) default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} +SCAN(5) on default.region + => filter: default.region.r_name (TEXT) = ASIA + => target list: default.region.r_regionkey (INT4) + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} ======================================================= -Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 6 => 10 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) -JOIN(19)(INNER) +JOIN(18)(INNER) => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) AND default.lineitem.l_suppkey (INT4) = default.supplier.s_suppkey (INT4) => target list: ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4) => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} => in schema: {(8) ?multiply (FLOAT8), default.customer.c_custkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(29) on eb_0000000000000_0000_000009 - => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - => in schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} - SCAN(28) on eb_0000000000000_0000_000006 + SCAN(27) on eb_0000000000000_0000_000006 => out schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} => in schema: {(5) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_suppkey (INT4), default.orders.o_custkey (INT4)} + SCAN(26) on eb_0000000000000_0000_000003 + => out schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + => in schema: {(3) default.customer.c_custkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + +JOIN(19)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)} + SCAN(29) on eb_0000000000000_0000_000009 + => out schema: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(28) on eb_0000000000000_0000_000008 + => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} + => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000011 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 3 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 11 => 12 (type=HASH_SHUFFLE, key=default.nation.n_name (TEXT), num=32) @@ -284,11 +284,11 @@ GROUP_BY(32)(n_name) => out schema: {(2) ?multiply (FLOAT8), default.nation.n_name (TEXT)} => in schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_nationkey (INT4)} SCAN(31) on eb_0000000000000_0000_000010 - => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} - => in schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} - SCAN(30) on eb_0000000000000_0000_000003 => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)} + SCAN(30) on eb_0000000000000_0000_000007 + => out schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} + => in schema: {(4) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.supplier.s_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000012 [INTERMEDIATE] diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan b/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan index 9dccd73a00..2e2280d4a1 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan @@ -9,14 +9,6 @@ TABLE_SUBQUERY(8) as default.result => target list: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} => in schema: {(4) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT), default.res2.p_partkey (INT4)} - TABLE_SUBQUERY(2) as default.res1 - => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) - => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - SCAN(0) on default.lineitem - => target list: CASE WHEN default.lineitem.l_partkey (INT4) IS NOT NULL THEN WHEN default.lineitem.l_orderkey (INT4) = 1 THEN 1 ELSE 2 END as url, default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) - => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} - => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} TABLE_SUBQUERY(5) as default.res2 => Targets: default.res2.p_partkey (INT4) => out schema: {(1) default.res2.p_partkey (INT4)} @@ -25,6 +17,14 @@ TABLE_SUBQUERY(8) as default.result => target list: default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT) => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + TABLE_SUBQUERY(2) as default.res1 + => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) + => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + SCAN(0) on default.lineitem + => target list: CASE WHEN default.lineitem.l_partkey (INT4) IS NOT NULL THEN WHEN default.lineitem.l_orderkey (INT4) = 1 THEN 1 ELSE 2 END as url, default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4) + => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} + => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -48,27 +48,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) - -TABLE_SUBQUERY(5) as default.res2 - => Targets: default.res2.p_partkey (INT4) - => out schema: {(1) default.res2.p_partkey (INT4)} - => in schema: {(9) default.res2.p_brand (TEXT), default.res2.p_comment (TEXT), default.res2.p_container (TEXT), default.res2.p_mfgr (TEXT), default.res2.p_name (TEXT), default.res2.p_partkey (INT4), default.res2.p_retailprice (FLOAT8), default.res2.p_size (INT4), default.res2.p_type (TEXT)} - PROJECTION(4) - => Targets: default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT) - => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - SCAN(3) on default.part - => target list: default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT) - => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} - -======================================================= -Block Id: eb_0000000000000_0000_000002 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) TABLE_SUBQUERY(2) as default.res1 => Targets: default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT) @@ -83,13 +63,33 @@ TABLE_SUBQUERY(2) as default.res1 => out schema: {(3) default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), url (TEXT)} => in schema: {(16) default.lineitem.l_comment (TEXT), default.lineitem.l_commitdate (TEXT), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_linenumber (INT4), default.lineitem.l_linestatus (TEXT), default.lineitem.l_orderkey (INT4), default.lineitem.l_partkey (INT4), default.lineitem.l_quantity (FLOAT8), default.lineitem.l_receiptdate (TEXT), default.lineitem.l_returnflag (TEXT), default.lineitem.l_shipdate (TEXT), default.lineitem.l_shipinstruct (TEXT), default.lineitem.l_shipmode (TEXT), default.lineitem.l_suppkey (INT4), default.lineitem.l_tax (FLOAT8)} +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) + +TABLE_SUBQUERY(5) as default.res2 + => Targets: default.res2.p_partkey (INT4) + => out schema: {(1) default.res2.p_partkey (INT4)} + => in schema: {(9) default.res2.p_brand (TEXT), default.res2.p_comment (TEXT), default.res2.p_container (TEXT), default.res2.p_mfgr (TEXT), default.res2.p_name (TEXT), default.res2.p_partkey (INT4), default.res2.p_retailprice (FLOAT8), default.res2.p_size (INT4), default.res2.p_type (TEXT)} + PROJECTION(4) + => Targets: default.part.p_partkey (INT4), default.part.p_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_brand (TEXT), default.part.p_type (TEXT), default.part.p_size (INT4), default.part.p_container (TEXT), default.part.p_retailprice (FLOAT8), default.part.p_comment (TEXT) + => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + SCAN(3) on default.part + => target list: default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT) + => out schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + => in schema: {(9) default.part.p_brand (TEXT), default.part.p_comment (TEXT), default.part.p_container (TEXT), default.part.p_mfgr (TEXT), default.part.p_name (TEXT), default.part.p_partkey (INT4), default.part.p_retailprice (FLOAT8), default.part.p_size (INT4), default.part.p_type (TEXT)} + ======================================================= Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Incoming] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.res1.l_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.res2.p_partkey (INT4), num=32) TABLE_SUBQUERY(8) as default.result => Targets: default.result.l_orderkey (INT4), default.result.l_partkey (INT4), default.result.url (TEXT) @@ -105,11 +105,11 @@ TABLE_SUBQUERY(8) as default.result => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} => in schema: {(4) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT), default.res2.p_partkey (INT4)} SCAN(14) on eb_0000000000000_0000_000002 - => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} - SCAN(13) on eb_0000000000000_0000_000001 => out schema: {(1) default.res2.p_partkey (INT4)} => in schema: {(1) default.res2.p_partkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000001 + => out schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} + => in schema: {(3) default.res1.l_orderkey (INT4), default.res1.l_partkey (INT4), default.res1.url (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 432e31190f..fe11af0a41 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -212,12 +212,12 @@ private static JoinEdge swapLeftAndRightIfNecessary(JoinEdge edge) { if (PlannerUtil.isSymmetricJoin(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { double leftCost = getCost(edge.getLeftVertex()); double rightCost = getCost(edge.getRightVertex()); - if (leftCost > rightCost) { + if (leftCost < rightCost) { return new JoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); } else if (leftCost == rightCost) { // compare the relation name to make the join order determinant if (StringUtils.join(edge.getLeftVertex().getRelations(), ""). - compareTo(StringUtils.join(edge.getRightVertex().getRelations(), "")) > 0) { + compareTo(StringUtils.join(edge.getRightVertex().getRelations(), "")) < 0) { return new JoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); } } @@ -307,10 +307,10 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join return null; } - // We assume that every operation has same cost. // COMPUTATION_FACTOR is used to give the larger cost for longer plans. + // We assume that every operation has same cost. // TODO: more accurate cost estimation is required. - private static final double COMPUTATION_FACTOR = 1.1; + private static final double COMPUTATION_FACTOR = 1.5; /** * Getting a cost of one join From 545a48ce44d27dc2b8477594693f5c6b768d76be Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Mon, 15 Jun 2015 07:47:00 +0900 Subject: [PATCH 39/43] Remove debug codes --- .../main/java/org/apache/tajo/master/exec/QueryExecutor.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java index 298a911052..281edad0c5 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java @@ -166,14 +166,10 @@ public void execExplain(LogicalPlan plan, QueryContext queryContext, boolean isG SubmitQueryResponse.Builder response) throws Exception { String explainStr; - explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot()); - LOG.info("What1 \n" + explainStr); boolean isTest = queryContext.getBool(SessionVars.TEST_PLAN_SHAPE_FIX_ENABLED); if (isTest) { ExplainPlanPreprocessorForTest preprocessorForTest = new ExplainPlanPreprocessorForTest(); preprocessorForTest.prepareTest(plan); - explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot()); - LOG.info("What2 \n" + explainStr); } if (isGlobal) { From 757a3d7d63212f5778aca26fdd19306069d6436a Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Fri, 26 Jun 2015 11:26:48 +0900 Subject: [PATCH 40/43] Trigger travis --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 425ac5df54..d85d397cb3 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,9 @@ Release 0.11.0 - unreleased IMPROVEMENT + TAJO-1352: Improve the join order algorithm to consider missed cases of + associative join operators. (jihoon) + TAJO-1659: Simplify scan iteration in SeqScan. (hyunsik) TAJO-751: JDBC driver should support cancel() method. From 963c58c357c84fa41bd0f548b4e7f5d566e471c6 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Thu, 2 Jul 2015 14:25:53 +0900 Subject: [PATCH 41/43] Improve the join graph to allow multiple root vertexes --- .../apache/tajo/plan/LogicalOptimizer.java | 3 -- .../GreedyHeuristicJoinOrderAlgorithm.java | 38 ++++++++++--------- .../apache/tajo/plan/joinorder/JoinGraph.java | 10 +++++ .../tajo/plan/joinorder/JoinGraphContext.java | 19 +++++++--- 4 files changed, 45 insertions(+), 25 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index da62b0a05c..c202db9138 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -244,9 +244,6 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical RelationVertex rightVertex = new RelationVertex(rightChild); JoinEdge edge = context.getJoinGraph().addJoin(context, joinNode.getJoinSpec(), leftVertex, rightVertex); - if (context.getMostLeftVertex() == null) { - context.setMostLeftVertex(leftVertex); - } // find all possible predicates for this join edge Set joinConditions = TUtil.newHashSet(); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index fe11af0a41..c02aa5cd72 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -57,11 +57,12 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); - // Update most left vertex if the previous most left vertex is merged into a new vertex - if (bestPair.getLeftVertex().equals(graphContext.getMostLeftVertex()) - || (PlannerUtil.isSymmetricJoin(bestPair.getJoinType()) - && bestPair.getRightVertex().equals(graphContext.getMostLeftVertex()))) { - graphContext.setMostLeftVertex(newVertex); + // Update root vertex if the previous root vertex is merged into a new one + if (graphContext.getRootVertexes().contains(bestPair.getLeftVertex())) { + graphContext.replaceRootVertexes(bestPair.getLeftVertex(), newVertex); + } else if (PlannerUtil.isSymmetricJoin(bestPair.getJoinType()) + && graphContext.getRootVertexes().contains(bestPair.getRightVertex())) { + graphContext.replaceRootVertexes(bestPair.getRightVertex(), newVertex); } /* @@ -167,7 +168,11 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } context.reset(); - JoinEdge foundJoin = findJoin(context, graphContext, graphContext.getMostLeftVertex(), outer, inner); + JoinEdge foundJoin = null; + for (JoinVertex eachRoot : graphContext.getRootVertexes()) { + foundJoin = findJoin(context, graphContext, eachRoot, outer, inner); + if (foundJoin != null) break; + } if (foundJoin == null) { continue; } @@ -324,33 +329,32 @@ public static double getCost(JoinEdge joinEdge) { // TODO - should statistic information obtained from query history switch (joinEdge.getJoinType()) { // TODO - improve cost estimation - // cost = estimated input size * filter factor * estimated write size - case INNER: - factor = factor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()) - * SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) - / (SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()) - + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); - break; // for outer joins, filter factor does not matter case LEFT_OUTER: - factor = SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + factor *= SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()); break; case RIGHT_OUTER: - factor = SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + factor *= SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema()); break; case FULL_OUTER: - factor = Math.max(SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / + factor *= Math.max(SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()), SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); break; + case INNER: default: // by default, do the same operation with that of inner join - factor = factor * Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()); + // filter factor * output tuple width / input tuple width + factor *= Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()) + * SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) + / (SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()) + + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); break; } + // cost = estimated input size * filter factor * (output tuple width / input tuple width) cost = getCost(joinEdge.getLeftVertex()) * getCost(joinEdge.getRightVertex()) * factor; } else { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 67d50b991e..0cdd90557e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -23,6 +23,8 @@ import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.util.graph.SimpleUndirectedGraph; +import java.util.List; + /** * A join graph must be the connected graph */ @@ -34,6 +36,14 @@ public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex JoinEdge edge = context.getCachedOrNewJoinEdge(joinSpec, left, right); isSymmetricJoinOnly = PlannerUtil.isSymmetricJoin(edge.getJoinType()); this.addEdge(left, right, edge); + List incomeToLeft = getIncomingEdges(left); + if (incomeToLeft == null || incomeToLeft.isEmpty()) { + context.addRootVertexes(left); + } + if (context.getRootVertexes().size() > 1) { + // for the case of cycle + context.removeRootVertexes(right); + } return edge; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 786c05d740..30755b3941 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -28,7 +28,7 @@ import java.util.Set; public class JoinGraphContext { - private JoinVertex mostLeftVertex; // most left vertex in the join plan + private Set rootVertexes = TUtil.newHashSet(); // most left vertex in the join plan private JoinGraph joinGraph = new JoinGraph(); // New join edges are frequently created during join order optimization. // This cache is to reduce the overhead of join edge creation. @@ -101,12 +101,21 @@ public Set getEvaluatedJoinFilters() { return evaluatedJoinFilters; } - public JoinVertex getMostLeftVertex() { - return mostLeftVertex; + public Set getRootVertexes() { + return rootVertexes; } - public void setMostLeftVertex(JoinVertex mostLeftVertex) { - this.mostLeftVertex = mostLeftVertex; + public void addRootVertexes(JoinVertex rootVertex) { + this.rootVertexes.add(rootVertex); + } + + public boolean removeRootVertexes(JoinVertex rootVertex) { + return this.rootVertexes.remove(rootVertex); + } + + public void replaceRootVertexes(JoinVertex oldRoot, JoinVertex newRoot) { + removeRootVertexes(oldRoot); + addRootVertexes(newRoot); } public JoinEdge cacheEdge(JoinEdge edge) { From 4ed118dbffc104e16cc9361581ef1ef90ad851aa Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Tue, 14 Jul 2015 17:36:07 +0900 Subject: [PATCH 42/43] Address review comments and added more comments --- .../org/apache/tajo/catalog/SchemaUtil.java | 14 +- .../main/java/org/apache/tajo/util/Pair.java | 4 - .../apache/tajo/plan/LogicalOptimizer.java | 107 ++++++++++++-- .../org/apache/tajo/plan/LogicalPlanner.java | 2 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 62 +++++--- .../apache/tajo/plan/joinorder/JoinGraph.java | 2 +- .../tajo/plan/joinorder/JoinGraphContext.java | 7 +- .../plan/joinorder/JoinOrderAlgorithm.java | 8 +- .../tajo/plan/joinorder/JoinOrderingUtil.java | 135 ++++++++---------- .../plan/joinorder/JoinedRelationsVertex.java | 2 +- .../rewrite/rules/FilterPushDownRule.java | 2 +- .../apache/tajo/plan/util/PlannerUtil.java | 4 +- 12 files changed, 228 insertions(+), 121 deletions(-) diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java index b0d6e4e8a5..44973dbbc1 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java @@ -162,7 +162,13 @@ public static String toDisplayString(Schema schema) { return sb.toString(); } - public static int estimateSchemaSize(Schema schema) { + /** + * Calculate the row size from the given schema. + * + * @param schema input schema + * @return estimated row size in bytes + */ + public static int estimateRowByteSizeWithSchema(Schema schema) { int size = 0; for (Column column : schema.fields) { size += getColByteSize(column); @@ -170,6 +176,12 @@ public static int estimateSchemaSize(Schema schema) { return size; } + /** + * Return the size of the given column. For the variable-length columns, it returns a prefixed value. + * + * @param col input column + * @return column length in bytes + */ public static int getColByteSize(Column col) { if (col.getDataType().getLength() > 0) { return col.getDataType().getLength(); diff --git a/tajo-common/src/main/java/org/apache/tajo/util/Pair.java b/tajo-common/src/main/java/org/apache/tajo/util/Pair.java index 968381380f..b78e5cf8d5 100644 --- a/tajo-common/src/main/java/org/apache/tajo/util/Pair.java +++ b/tajo-common/src/main/java/org/apache/tajo/util/Pair.java @@ -24,10 +24,6 @@ public class Pair { private T1 first; private T2 second; - public Pair() { - - } - public Pair(T1 first, T2 second) { this.first = first; this.second = second; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java index c202db9138..8ebccdeba0 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java @@ -69,12 +69,6 @@ public LogicalOptimizer(TajoConf conf) { rulesAfterToJoinOpt.addRewriteRule(provider.getPostRules()); } - public void addRuleAfterToJoinOpt(LogicalPlanRewriteRule rewriteRule) { - if (rewriteRule != null) { - rulesAfterToJoinOpt.addRewriteRule(rewriteRule); - } - } - @VisibleForTesting public LogicalNode optimize(LogicalPlan plan) throws PlanningException { OverridableConf conf = new OverridableConf(new TajoConf(), @@ -193,6 +187,23 @@ public LogicalNode visitJoin(Set ctx, LogicalPlan plan, LogicalPlan.Quer } } + /** + * The first phase of the join order optimization is building a join graph from the given query. + * This initial join graph forms a tree which consists of only relation vertexes in an order of their occurrences in + * the query. For example, let me suppose the following query. + * + * default> select * from t1 inner join t2 left outer join t3 inner join t4; + * + * In this example, the initial join graph is: + * + * t1 - (inner join) - t2 - (left outer join) - t3 - (inner join) - t4. + * + * This means that the default join order is left to right. Join queries can be always processed with the + * default join order. This join order will be optimized by {@link JoinOrderAlgorithm}. + * + * JoinGraphBuilder builds an initial join graph as illustrated above. + * + */ private static class JoinGraphBuilder extends BasicLogicalPlanVisitor { private final static JoinGraphBuilder instance; @@ -238,8 +249,9 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical throws PlanningException { super.visitJoin(context, plan, block, joinNode, stack); - RelationNode leftChild = JoinOrderingUtil.findMostRightRelation(plan, block, joinNode.getLeftChild()); - RelationNode rightChild = JoinOrderingUtil.findMostLeftRelation(plan, block, joinNode.getRightChild()); + // given a join node, find the relations which are nearest to the join in the query. + RelationNode leftChild = findMostRightRelation(plan, block, joinNode.getLeftChild()); + RelationNode rightChild = findMostLeftRelation(plan, block, joinNode.getRightChild()); RelationVertex leftVertex = new RelationVertex(leftChild); RelationVertex rightVertex = new RelationVertex(rightChild); @@ -276,7 +288,7 @@ public LogicalNode visitJoin(JoinGraphContext context, LogicalPlan plan, Logical edge.getJoinSpec().setType(JoinType.CROSS); } - if (PlannerUtil.isSymmetricJoin(edge.getJoinType())) { + if (PlannerUtil.isCommutativeJoinType(edge.getJoinType())) { JoinEdge commutativeEdge = context.getCachedOrNewJoinEdge(edge.getJoinSpec(), edge.getRightVertex(), edge.getLeftVertex()); commutativeEdge.addJoinPredicates(joinConditions); @@ -386,4 +398,81 @@ public LogicalNode visitJoin(CostContext joinGraphContext, LogicalPlan plan, Log return joinNode; } } + + /** + * Find the most left relation node in the join tree. For the join tree, please refer to {@link JoinGraphBuilder}. + * + * @param plan logical plan + * @param block query block in which the given join node is involved + * @param from logical node where the search starts + * @return found relation + * @throws PlanningException + */ + public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) + throws PlanningException { + RelationNodeFinderContext context = new RelationNodeFinderContext(); + context.findMostLeft = true; + RelationNodeFinder finder = new RelationNodeFinder(); + finder.visit(context, plan, block, from, new Stack()); + return context.founds.isEmpty() ? null : context.founds.iterator().next(); + } + + /** + * Find the most right relation node in the join tree. For the join tree, please refer to {@link JoinGraphBuilder}. + * + * @param plan logical plan + * @param block query block in which the given join node is involved + * @param from logical node where the search starts + * @return found relation + * @throws PlanningException + */ + public static RelationNode findMostRightRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) + throws PlanningException { + RelationNodeFinderContext context = new RelationNodeFinderContext(); + context.findMostRight = true; + RelationNodeFinder finder = new RelationNodeFinder(); + finder.visit(context, plan, block, from, new Stack()); + return context.founds.isEmpty() ? null : context.founds.iterator().next(); + } + + private static class RelationNodeFinderContext { + private Set founds = TUtil.newHashSet(); + private boolean findMostLeft; + private boolean findMostRight; + } + + /** + * RelationNodeFinder finds the most left/right vertex from the given node in the join graph. + */ + private static class RelationNodeFinder extends BasicLogicalPlanVisitor { + + @Override + public LogicalNode visit(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + LogicalNode node, Stack stack) throws PlanningException { + if (node.getType() != NodeType.TABLE_SUBQUERY) { + super.visit(context, plan, block, node, stack); + } + + if (node instanceof RelationNode) { + context.founds.add((RelationNode) node); + } + + return node; + } + + @Override + public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + JoinNode node, Stack stack) throws PlanningException { + stack.push(node); + LogicalNode result = null; + if (context.findMostLeft) { + result = visit(context, plan, block, node.getLeftChild(), stack); + } + if (context.findMostRight) { + result = visit(context, plan, block, node.getRightChild(), stack); + } + stack.pop(); + return result; + } + } } \ No newline at end of file diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java index c51d068f90..eefa7bac76 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java @@ -2057,7 +2057,7 @@ public static boolean isEvaluatableJoinQual(QueryBlock block, EvalNode evalNode, return false; } - if (PlannerUtil.isOuterJoin(node.getJoinType())) { + if (PlannerUtil.isOuterJoinType(node.getJoinType())) { /* * For outer joins, only predicates which are specified at the on clause can be evaluated during processing join. * Other predicates from the where clause must be evaluated after the join. diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index c02aa5cd72..d9fca738db 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -18,8 +18,6 @@ package org.apache.tajo.plan.joinorder; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.LogicalPlan; @@ -36,12 +34,11 @@ /** * This is a greedy heuristic algorithm to find a bushy join tree. This algorithm finds * the best join order with join conditions and pushed-down join conditions to - * all join operators. + * appropriate join operators. */ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { public static final double DEFAULT_SELECTION_FACTOR = 0.1; - private static final Log LOG = LogFactory.getLog(GreedyHeuristicJoinOrderAlgorithm.class); @Override public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext graphContext) @@ -51,16 +48,21 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo for (RelationNode relationNode : block.getRelations()) { vertexes.add(new RelationVertex(relationNode)); } + + // As illustrated at LogicalOptimizer.JoinGraphBuilder, the join graph initially forms a kind of tree. + // This join graph can be updated by adding new join edges or removing existing join edges + // during join order optimization. JoinEdgeFinderContext context = new JoinEdgeFinderContext(); JoinGraph joinGraph = graphContext.getJoinGraph(); while (vertexes.size() > 1) { JoinEdge bestPair = getBestPair(context, graphContext, vertexes); JoinedRelationsVertex newVertex = new JoinedRelationsVertex(bestPair); - // Update root vertex if the previous root vertex is merged into a new one + // A root vertex is the join vertex where the graph traverse is started. + // The root vertex should be updated if the previous root vertex is merged into a new one. if (graphContext.getRootVertexes().contains(bestPair.getLeftVertex())) { graphContext.replaceRootVertexes(bestPair.getLeftVertex(), newVertex); - } else if (PlannerUtil.isSymmetricJoin(bestPair.getJoinType()) + } else if (PlannerUtil.isCommutativeJoinType(bestPair.getJoinType()) && graphContext.getRootVertexes().contains(bestPair.getRightVertex())) { graphContext.replaceRootVertexes(bestPair.getRightVertex(), newVertex); } @@ -80,8 +82,10 @@ public FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock blo // Find every join edges which should be updated. prepareGraphUpdate(graphContext, joinGraph, bestPair, newVertex, willBeAdded, willBeRemoved); + // Update the join graph updateGraph(graphContext, joinGraph, bestPair, willBeAdded, willBeRemoved); + // Update the join vertex set vertexes.remove(bestPair.getLeftVertex()); vertexes.remove(bestPair.getRightVertex()); vertexes.add(newVertex); @@ -144,7 +148,7 @@ private void prepareGraphUpdate(JoinGraphContext context, List edges, } /** - * Find the best join pair among all joinable operators in candidate set. + * Find the best join pair among all joinable operators in the candidate set. * * @param context * @param graphContext a join graph which consists of vertices and edges, where vertex is relation and @@ -161,6 +165,8 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra double minNonCrossJoinCost = Double.MAX_VALUE; JoinEdge bestNonCrossJoin = null; + // Brute-force algorithm + // check every possible combination of join vertexes. for (JoinVertex outer : vertexes) { for (JoinVertex inner : vertexes) { if (outer.equals(inner)) { @@ -169,6 +175,9 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra context.reset(); JoinEdge foundJoin = null; + + // A root vertex is the join vertex where the graph traverse is started. + // For each root vertex, find possible joins between inner and outer join vertexes. for (JoinVertex eachRoot : graphContext.getRootVertexes()) { foundJoin = findJoin(context, graphContext, eachRoot, outer, inner); if (foundJoin != null) break; @@ -214,7 +223,7 @@ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext gra } private static JoinEdge swapLeftAndRightIfNecessary(JoinEdge edge) { - if (PlannerUtil.isSymmetricJoin(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { + if (PlannerUtil.isCommutativeJoinType(edge.getJoinType()) || edge.getJoinType() == JoinType.FULL_OUTER) { double leftCost = getCost(edge.getLeftVertex()); double rightCost = getCost(edge.getRightVertex()); if (leftCost < rightCost) { @@ -257,14 +266,21 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join JoinGraph joinGraph = graphContext.getJoinGraph(); - // Find the matched edge from begin + // Get all interchangeable vertexes of the begin vertex. + // Please see JoinOrderingUtil.getAllInterchangeableVertexes() for interchangeable vertexes. Set interchangeableWithBegin = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, begin); + // If the left search target is interchangeable with the begin vertex, check every outgoing edges + // from the left target to find the join edge who has the right search target as its right vertex. if (interchangeableWithBegin.contains(leftTarget)) { List edgesFromLeftTarget = joinGraph.getOutgoingEdges(leftTarget); if (edgesFromLeftTarget != null) { for (JoinEdge edgeFromLeftTarget : edgesFromLeftTarget) { edgeFromLeftTarget = JoinOrderingUtil.updateQualIfNecessary(graphContext, edgeFromLeftTarget); + + // Find all interchangeable vertexes with the right vertex of the current edge. + // If the right target vertex is interchangeable with the right vertex of the current edge, + // we've successfully found a join edge between the left and right targets. Set interchangeableWithRightVertex; if (edgeFromLeftTarget.getJoinType() == JoinType.INNER || edgeFromLeftTarget.getJoinType() == JoinType.CROSS) { interchangeableWithRightVertex = JoinOrderingUtil.getAllInterchangeableVertexes(graphContext, @@ -279,6 +295,8 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join if (joinGraph.isSymmetricJoinOnly()) { // Since the targets of the both sides are searched with symmetric characteristics, // the join type is assumed as CROSS. + // TODO: This must be improved to consider a case when a query involves multiple commutative and + // TODO: non-commutative joins. It will be done at TAJO-1683. joinGraph.addJoin(graphContext, new JoinSpec(JoinType.CROSS), leftTarget, rightTarget); return JoinOrderingUtil.updateQualIfNecessary(graphContext, joinGraph.getEdge(leftTarget, rightTarget)); } @@ -291,6 +309,10 @@ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final Join } } + // If the left search target is NOT interchangeable with the begin vertex, + // we cannot find any join edges from the current begin vertex, so search from other vertexes. + // Here, we should consider the associativity to check whether other joins can be executed earlier than the join + // who has the begin vertex as its left vertex. for (JoinVertex interchangeableVertex : interchangeableWithBegin) { List edges = joinGraph.getOutgoingEdges(interchangeableVertex); if (edges != null) { @@ -331,27 +353,27 @@ public static double getCost(JoinEdge joinEdge) { // TODO - improve cost estimation // for outer joins, filter factor does not matter case LEFT_OUTER: - factor *= SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / - SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()); + factor *= SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getSchema()) / + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getLeftVertex().getSchema()); break; case RIGHT_OUTER: - factor *= SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / - SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema()); + factor *= SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getSchema()) / + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getRightVertex().getSchema()); break; case FULL_OUTER: - factor *= Math.max(SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / - SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()), - SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) / - SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); + factor *= Math.max(SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getSchema()) / + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getLeftVertex().getSchema()), + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getSchema()) / + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getRightVertex().getSchema())); break; case INNER: default: // by default, do the same operation with that of inner join // filter factor * output tuple width / input tuple width factor *= Math.pow(DEFAULT_SELECTION_FACTOR, joinEdge.getJoinQual().size()) - * SchemaUtil.estimateSchemaSize(joinEdge.getSchema()) - / (SchemaUtil.estimateSchemaSize(joinEdge.getLeftVertex().getSchema()) - + SchemaUtil.estimateSchemaSize(joinEdge.getRightVertex().getSchema())); + * SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getSchema()) + / (SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getLeftVertex().getSchema()) + + SchemaUtil.estimateRowByteSizeWithSchema(joinEdge.getRightVertex().getSchema())); break; } // cost = estimated input size * filter factor * (output tuple width / input tuple width) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java index 0cdd90557e..4727b2ea4e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java @@ -34,7 +34,7 @@ public class JoinGraph extends SimpleUndirectedGraph { public JoinEdge addJoin(JoinGraphContext context, JoinSpec joinSpec, JoinVertex left, JoinVertex right) throws PlanningException { JoinEdge edge = context.getCachedOrNewJoinEdge(joinSpec, left, right); - isSymmetricJoinOnly = PlannerUtil.isSymmetricJoin(edge.getJoinType()); + isSymmetricJoinOnly &= PlannerUtil.isCommutativeJoinType(edge.getJoinType()); this.addEdge(left, right, edge); List incomeToLeft = getIncomingEdges(left); if (incomeToLeft == null || incomeToLeft.isEmpty()) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java index 30755b3941..97cd5694d5 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraphContext.java @@ -30,10 +30,13 @@ public class JoinGraphContext { private Set rootVertexes = TUtil.newHashSet(); // most left vertex in the join plan private JoinGraph joinGraph = new JoinGraph(); + // New join edges are frequently created during join order optimization. // This cache is to reduce the overhead of join edge creation. private Map, JoinEdge> edgeCache = TUtil.newHashMap(); - private Pair cacheKey = new Pair(); // Join + + // candidate predicates contain the predicates which are not pushed to any join nodes yet. + // evaluated predicates contain the predicates which are already pushed to some join nodes. private Set candidateJoinConditions = TUtil.newHashSet(); // predicates from the on clause private Set candidateJoinFilters = TUtil.newHashSet(); // predicates from the where clause private Set evaluatedJoinConditions = TUtil.newHashSet(); // predicates from the on clause @@ -124,7 +127,7 @@ public JoinEdge cacheEdge(JoinEdge edge) { } public JoinEdge getCachedOrNewJoinEdge(JoinSpec joinSpec, JoinVertex left, JoinVertex right) { - cacheKey.set(left, right); + Pair cacheKey = new Pair(left, right); if (edgeCache.containsKey(cacheKey)) { return edgeCache.get(cacheKey); } else { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java index 5dde3603b2..d9f4c69c5f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java @@ -33,12 +33,14 @@ public interface JoinOrderAlgorithm { /** + * Find the best join order. * * @param plan * @param block - * @param joinGraph A left-deep join tree represents join conditions and their join relationships among relations. - * Each vertex represents a relation, and each edge contains a join condition. - * @return + * @param joinGraphContext A left-deep join tree represents join conditions and the join relationships among + * relations. A vertex can be a relation or a group of joined relations. + * An edge represents a join relation between two vertexes. + * @return found join order * @throws org.apache.tajo.plan.PlanningException */ FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext joinGraphContext) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java index 2cbecd7235..deaafafad4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java @@ -39,6 +39,15 @@ public class JoinOrderingUtil { + /** + * Find join conditions which can be evaluated at the given join edge. The result depends on the isOnPredicate flag + * which represents the given set of predicates is from the on clause of not. + * + * @param candidates set of predicates + * @param edge join edge + * @param isOnPredicates flag to represent the candidates from the on clause of not + * @return predicates which can be evaluated at the given join edge + */ public static Set findJoinConditionForJoinVertex(Set candidates, JoinEdge edge, boolean isOnPredicates) { Set conditionsForThisJoin = TUtil.newHashSet(); @@ -51,6 +60,15 @@ && checkIfEvaluatedAtEdge(predicate, edge, isOnPredicates)) { return conditionsForThisJoin; } + /** + * Check whether the given predicate can be evaluated at the given join edge or not. The result depends on + * the isOnPredicate flag which represents the given predicate is from the on clause of not. + * + * @param evalNode predicate + * @param edge join edge + * @param isOnPredicate flag to represent the candidates from the on clause of not + * @return true if the predicate can be evaluated at the given join edge + */ public static boolean checkIfEvaluatedAtEdge(EvalNode evalNode, JoinEdge edge, boolean isOnPredicate) { Set columnRefs = EvalTreeUtil.findUniqueColumns(evalNode); if (EvalTreeUtil.findDistinctAggFunction(evalNode).size() > 0) { @@ -63,17 +81,27 @@ public static boolean checkIfEvaluatedAtEdge(EvalNode evalNode, JoinEdge edge, b return false; } // Currently, join filters cannot be evaluated at joins - if (PlannerUtil.isOuterJoin(edge.getJoinType()) && !isOnPredicate) { + if (PlannerUtil.isOuterJoinType(edge.getJoinType()) && !isOnPredicate) { return false; } return true; } + /** + * Check the associativity between the given two join edges. + * For the associativity rules, please refer to the below isAssociativeJoinType() function. + * + * @param context join graph context + * @param leftEdge left join edge + * @param rightEdge right join edge + * @return true if two given join edges are associative. + */ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftEdge, JoinEdge rightEdge) { if (isAssociativeJoinType(leftEdge.getJoinType(), rightEdge.getJoinType())) { - // NOTE: There will be more quals which are able to be evaluated at input join edges. - // In this case, the input edges are not associative to evaluate quals at proper join edges. + // NOTE: There will be more predicates which are able to be evaluated at input join edges. + // In this case, the input edges are not considered as associative joins to evaluate those predicates at proper + // join edges, even though they have the associative relationship. // Create a temporal left-deep join node to find the potentially evaluatable quals. JoinedRelationsVertex tempLeftChild = new JoinedRelationsVertex(leftEdge); @@ -163,78 +191,6 @@ public static boolean isAssociativeJoinType(JoinType leftType, JoinType rightTyp return false; } - /** - * Find the most left relation node in the join tree. - * @param plan - * @param block - * @param from - * @return - * @throws PlanningException - */ - public static RelationNode findMostLeftRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) - throws PlanningException { - RelationNodeFinderContext context = new RelationNodeFinderContext(); - context.findMostLeft = true; - RelationNodeFinder finder = new RelationNodeFinder(); - finder.visit(context, plan, block, from, new Stack()); - return context.founds.isEmpty() ? null : context.founds.iterator().next(); - } - - /** - * Find the most right relation node in the join tree. - * @param plan - * @param block - * @param from - * @return - * @throws PlanningException - */ - public static RelationNode findMostRightRelation(LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalNode from) - throws PlanningException { - RelationNodeFinderContext context = new RelationNodeFinderContext(); - context.findMostRight = true; - RelationNodeFinder finder = new RelationNodeFinder(); - finder.visit(context, plan, block, from, new Stack()); - return context.founds.isEmpty() ? null : context.founds.iterator().next(); - } - - private static class RelationNodeFinderContext { - private Set founds = TUtil.newHashSet(); - private boolean findMostLeft; - private boolean findMostRight; - } - - private static class RelationNodeFinder extends BasicLogicalPlanVisitor { - - @Override - public LogicalNode visit(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - LogicalNode node, Stack stack) throws PlanningException { - if (node.getType() != NodeType.TABLE_SUBQUERY) { - super.visit(context, plan, block, node, stack); - } - - if (node instanceof RelationNode) { - context.founds.add((RelationNode) node); - } - - return node; - } - - @Override - public LogicalNode visitJoin(RelationNodeFinderContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - JoinNode node, Stack stack) throws PlanningException { - stack.push(node); - LogicalNode result = null; - if (context.findMostLeft) { - result = visit(context, plan, block, node.getLeftChild(), stack); - } - if (context.findMostRight) { - result = visit(context, plan, block, node.getRightChild(), stack); - } - stack.pop(); - return result; - } - } - /** * Find all interchangeable vertexes from the given vertex. * Join edges between relations are found at runtime. @@ -287,6 +243,13 @@ public static void getAllInterchangeableVertexes(Set founds, JoinGra } } + /** + * Check the given two join edges are equal or symmetric. + * + * @param edge1 + * @param edge2 + * @return True if two join edges are equal or symmetric. + */ public static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { if (edge1.equals(edge2) || isSymmetric(edge1, edge2)) { return true; @@ -294,16 +257,36 @@ public static boolean isEqualsOrSymmetric(JoinEdge edge1, JoinEdge edge2) { return false; } + /** + * Given two join edges e1 and e2, they are symmetric whey they satisfy the follwing conditions. + * + *
      + *
    • e1 and e2 have the same commutative join type.
    • + *
    • e1 and e2 have the same join condition.
    • + *
    • The left and right vertexes of e1 are the right and left vertexes of e2, respectively.
    • + *
    + * + * @param edge1 + * @param edge2 + * @return True if two join edges are symmetric. + */ public static boolean isSymmetric(JoinEdge edge1, JoinEdge edge2) { if (edge1.getLeftVertex().equals(edge2.getRightVertex()) && edge1.getRightVertex().equals(edge2.getLeftVertex()) && edge1.getJoinSpec().equals(edge2.getJoinSpec()) && - PlannerUtil.isSymmetricJoin(edge1.getJoinType())) { + PlannerUtil.isCommutativeJoinType(edge1.getJoinType())) { return true; } return false; } + /** + * If there are predicates which can be evaluated at the given join edge, push those predicates to the join edge. + * + * @param context + * @param edge + * @return + */ public static JoinEdge updateQualIfNecessary(JoinGraphContext context, JoinEdge edge) { Set additionalPredicates = findJoinConditionForJoinVertex( context.getCandidateJoinConditions(), edge, true); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java index e460f3e0c3..6a72bb894f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinedRelationsVertex.java @@ -84,7 +84,7 @@ public LogicalNode buildPlan(LogicalPlan plan, LogicalPlan.QueryBlock block) { JoinNode joinNode = plan.createNode(JoinNode.class); - if (PlannerUtil.isSymmetricJoin(joinEdge.getJoinType())) { + if (PlannerUtil.isCommutativeJoinType(joinEdge.getJoinType())) { // if only one operator is relation if ((leftChild instanceof RelationNode) && !(rightChild instanceof RelationNode)) { // for left deep diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java index 587baa5f88..ee932fd54f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java @@ -248,7 +248,7 @@ private static Set extractNonPushableJoinQuals(final LogicalPlan plan, nonPushableQuals.addAll(extractNonEquiThetaJoinQuals(onPredicates, block, joinNode)); // for outer joins - if (PlannerUtil.isOuterJoin(joinNode.getJoinType())) { + if (PlannerUtil.isOuterJoinType(joinNode.getJoinType())) { nonPushableQuals.addAll(extractNonPushableOuterJoinQuals(plan, onPredicates, wherePredicates, joinNode)); } return nonPushableQuals; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 56a812c562..e314f99671 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -770,12 +770,12 @@ public static T clone(LogicalPlan plan, LogicalNode node } } - public static boolean isSymmetricJoin(JoinType joinType) { + public static boolean isCommutativeJoinType(JoinType joinType) { // Full outer join is also commutative. return joinType == JoinType.INNER || joinType == JoinType.CROSS || joinType == JoinType.FULL_OUTER; } - public static boolean isOuterJoin(JoinType joinType) { + public static boolean isOuterJoinType(JoinType joinType) { return joinType == JoinType.LEFT_OUTER || joinType == JoinType.RIGHT_OUTER || joinType==JoinType.FULL_OUTER; } From 01f297d9e3ddbb30c8cdd745551f46a410028771 Mon Sep 17 00:00:00 2001 From: Jihoon Son Date: Fri, 17 Jul 2015 22:44:24 +0900 Subject: [PATCH 43/43] Fix test failures --- .../resources/results/TestUnionQuery/testUnionAll12.result | 3 ++- .../resources/results/TestUnionQuery/testUnionAll13.result | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll12.result b/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll12.result index c130afa18f..4050574d7f 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll12.result +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll12.result @@ -3,4 +3,5 @@ col1,col2,col3 R,46796.47,1993-11-24F PROMO BURNISHED COPPER,90100.0,1993goldenrod lavender spring chocolate lace LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle -STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk \ No newline at end of file +STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk +SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink \ No newline at end of file diff --git a/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll13.result b/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll13.result index c130afa18f..4050574d7f 100644 --- a/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll13.result +++ b/tajo-core/src/test/resources/results/TestUnionQuery/testUnionAll13.result @@ -3,4 +3,5 @@ col1,col2,col3 R,46796.47,1993-11-24F PROMO BURNISHED COPPER,90100.0,1993goldenrod lavender spring chocolate lace LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle -STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk \ No newline at end of file +STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk +SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink \ No newline at end of file