From d967eeb38039fce1f100adb361c58ef9dd7743da Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 2 Dec 2015 22:15:44 -0800 Subject: [PATCH 01/15] TAJO-2005: Add TableStatUpdateRewriter. --- .../apache/tajo/engine/eval/ExprTestBase.java | 2 +- .../planner/TestEvalNodeToExprConverter.java | 12 +-- .../planner/TestJoinOrderAlgorithm.java | 2 +- .../engine/planner/TestLogicalOptimizer.java | 4 +- .../engine/planner/TestLogicalPlanner.java | 8 +- .../physical/TestHashAntiJoinExec.java | 2 +- .../physical/TestHashSemiJoinExec.java | 2 +- .../planner/physical/TestPhysicalPlanner.java | 2 +- .../engine/planner/physical/TestSortExec.java | 2 +- .../physical/TestSortIntersectExec.java | 2 +- .../tajo/master/TestExecutionBlockCursor.java | 2 +- .../tajo/querymaster/TestKillQuery.java | 4 +- .../org/apache/tajo/master/GlobalEngine.java | 2 +- .../tajo/querymaster/QueryMasterTask.java | 2 +- .../apache/tajo/plan/LogicalOptimizer.java | 16 ++-- .../org/apache/tajo/plan/LogicalPlanner.java | 17 ---- .../rewrite/BaseLogicalPlanRewriteEngine.java | 7 ++ .../BaseLogicalPlanRewriteRuleProvider.java | 3 + .../LogicalPlanRewriteRuleContext.java | 30 +++---- .../plan/rewrite/TableStatUpdateRewriter.java | 89 +++++++++++++++++++ 20 files changed, 145 insertions(+), 65 deletions(-) create mode 100644 tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java index 69f92f42ea..600a45f38d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java @@ -103,7 +103,7 @@ public static void setUp() throws Exception { analyzer = new SQLAnalyzer(); preLogicalPlanVerifier = new PreLogicalPlanVerifier(cat); planner = new LogicalPlanner(cat, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(util.getConfiguration(), cat); + optimizer = new LogicalOptimizer(util.getConfiguration(), cat, TablespaceManager.getInstance()); annotatedPlanVerifier = new LogicalPlanVerifier(); } diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java index 018fa0ec81..1cf4cf26ac 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java @@ -119,7 +119,7 @@ public final void testBinaryOperator1() throws CloneNotSupportedException, TajoE Expr expr = sqlAnalyzer.parse(QUERIES[0]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); @@ -149,7 +149,7 @@ public final void testBinaryOperator2() throws CloneNotSupportedException, TajoE Expr expr = sqlAnalyzer.parse(QUERIES[1]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); @@ -178,7 +178,7 @@ public final void testBinaryOperator3() throws CloneNotSupportedException, TajoE Expr expr = sqlAnalyzer.parse(QUERIES[2]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); @@ -236,7 +236,7 @@ public final void testBetweenPredicate() throws CloneNotSupportedException, Tajo Expr expr = sqlAnalyzer.parse(QUERIES[3]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); @@ -291,7 +291,7 @@ public final void testCaseWhenPredicate() throws CloneNotSupportedException, Taj Expr expr = sqlAnalyzer.parse(QUERIES[4]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); @@ -346,7 +346,7 @@ public final void testThreeFilters() throws CloneNotSupportedException, TajoExce Expr expr = sqlAnalyzer.parse(QUERIES[5]); LogicalPlan plan = planner.createPlan(qc, expr); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java index cf5699fc1c..4ae3e5aad3 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java @@ -125,7 +125,7 @@ public static void setUp() throws Exception { sqlAnalyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); defaultContext = LocalTajoTestingUtility.createDummyContext(util.getConfiguration()); } diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java index b0c5ad1aa8..1b911a12ee 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java @@ -104,10 +104,10 @@ public static void setUp() throws Exception { catalog.createFunction(funcDesc); sqlAnalyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); defaultContext = LocalTajoTestingUtility.createDummyContext(util.getConfiguration()); - optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); } @AfterClass diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java index d291c09b86..98874ba72c 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java @@ -511,7 +511,7 @@ public final void testJoinWithMultipleJoinQual1() throws IOException, TajoExcept Schema expected = tpch.getOutSchema("q2"); assertSchema(expected, node.getOutSchema()); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode[] nodes = PlannerUtil.findAllNodes(node, NodeType.JOIN); @@ -550,7 +550,7 @@ public final void testJoinWithMultipleJoinQual2() throws IOException, TajoExcept LogicalNode node = plan.getRootBlock().getRoot(); testJsonSerDerObject(node); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode[] nodes = PlannerUtil.findAllNodes(node, NodeType.SCAN); @@ -591,7 +591,7 @@ public final void testJoinWithMultipleJoinQual3() throws IOException, TajoExcept LogicalNode node = plan.getRootBlock().getRoot(); testJsonSerDerObject(node); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode[] nodes = PlannerUtil.findAllNodes(node, NodeType.SCAN); @@ -638,7 +638,7 @@ public final void testJoinWithMultipleJoinQual4() throws IOException, TajoExcept LogicalNode node = plan.getRootBlock().getRoot(); testJsonSerDerObject(node); - LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); Map scanMap = new HashMap<>(); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java index 103d2b1ac6..aeda300332 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java @@ -133,7 +133,7 @@ public void setUp() throws Exception { catalog.createTable(people); analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); } @After diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java index f99dc9e5f9..2b50310c0c 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java @@ -137,7 +137,7 @@ public void setUp() throws Exception { catalog.createTable(people); analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); } @After diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java index adeb2503f5..53fbf0ad9a 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java @@ -166,7 +166,7 @@ public static void setUp() throws Exception { catalog.createTable(score); analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); masterPlan = new MasterPlan(LocalTajoTestingUtility.newQueryId(), null, null); createLargeScoreTable(); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java index 30a63bef5c..872815d7b1 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java @@ -113,7 +113,7 @@ public static void setUp() throws Exception { queryContext = new QueryContext(conf); analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); } public static String[] QUERIES = { diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java index 66d38b7d4c..df786678cb 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java @@ -141,7 +141,7 @@ public void setUp() throws Exception { analyzer = new SQLAnalyzer(); planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); } @After diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/master/TestExecutionBlockCursor.java b/tajo-core-tests/src/test/java/org/apache/tajo/master/TestExecutionBlockCursor.java index 578b278093..7c6d8922b5 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/master/TestExecutionBlockCursor.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/master/TestExecutionBlockCursor.java @@ -80,7 +80,7 @@ public static void setUp() throws Exception { analyzer = new SQLAnalyzer(); logicalPlanner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - optimizer = new LogicalOptimizer(conf, catalog); + optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); dispatcher = new AsyncDispatcher(); dispatcher.init(conf); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestKillQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestKillQuery.java index f907a2b812..ac5efd9121 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestKillQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestKillQuery.java @@ -96,7 +96,7 @@ public final void testKillQueryFromInitState() throws Exception { CatalogService catalog = cluster.getMaster().getCatalog(); LogicalPlanner planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - LogicalOptimizer optimizer = new LogicalOptimizer(conf, catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); Expr expr = analyzer.parse(queryStr); LogicalPlan plan = planner.createPlan(defaultContext, expr); @@ -160,7 +160,7 @@ public final void testIgnoreStageStateFromKilled() throws Exception { CatalogService catalog = cluster.getMaster().getCatalog(); LogicalPlanner planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - LogicalOptimizer optimizer = new LogicalOptimizer(conf, catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(conf, catalog, TablespaceManager.getInstance()); Expr expr = analyzer.parse(queryStr); LogicalPlan plan = planner.createPlan(defaultContext, expr); diff --git a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java index 7f18fd4fbb..c088a8b4c6 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java @@ -94,7 +94,7 @@ public void start() { preVerifier = new PreLogicalPlanVerifier(context.getCatalog()); planner = new LogicalPlanner(context.getCatalog(), TablespaceManager.getInstance()); // Access path rewriter is enabled only in QueryMasterTask - optimizer = new LogicalOptimizer(context.getConf(), context.getCatalog()); + optimizer = new LogicalOptimizer(context.getConf(), context.getCatalog(), TablespaceManager.getInstance()); annotatedPlanVerifier = new LogicalPlanVerifier(); postLogicalPlanVerifier = new PostLogicalPlanVerifier(); } catch (Throwable t) { diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java index d6744c3bb1..995a8e5416 100644 --- a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java +++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java @@ -318,7 +318,7 @@ public synchronized void startQuery() { LOG.info(SessionVars.INDEX_ENABLED.keyname() + " : " + queryContext.getBool(SessionVars.INDEX_ENABLED)); CatalogService catalog = getQueryTaskContext().getQueryMasterContext().getWorkerContext().getCatalog(); LogicalPlanner planner = new LogicalPlanner(catalog, TablespaceManager.getInstance()); - LogicalOptimizer optimizer = new LogicalOptimizer(systemConf, catalog); + LogicalOptimizer optimizer = new LogicalOptimizer(systemConf, catalog, TablespaceManager.getInstance()); Expr expr = JsonHelper.fromJson(jsonExpr, Expr.class); jsonExpr = null; // remove the possible OOM 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 404e97160d..e9e6ab27f7 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 @@ -39,6 +39,7 @@ 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.storage.StorageService; import org.apache.tajo.util.ReflectionUtil; import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; @@ -55,21 +56,24 @@ public class LogicalOptimizer { private static final Log LOG = LogFactory.getLog(LogicalOptimizer.class.getName()); - private CatalogService catalog; + private final CatalogService catalog; + private final StorageService storage; private BaseLogicalPlanRewriteEngine rulesBeforeJoinOpt; private BaseLogicalPlanRewriteEngine rulesAfterToJoinOpt; private JoinOrderAlgorithm joinOrderAlgorithm = new GreedyHeuristicJoinOrderAlgorithm(); - public LogicalOptimizer(TajoConf conf, CatalogService catalog) { + public LogicalOptimizer(TajoConf conf, CatalogService catalog, StorageService storage) { this.catalog = catalog; + this.storage = storage; + // TODO: set the catalog instance to FilterPushdownRule Class clazz = conf.getClassVar(ConfVars.LOGICAL_PLAN_REWRITE_RULE_PROVIDER_CLASS); LogicalPlanRewriteRuleProvider provider = (LogicalPlanRewriteRuleProvider) ReflectionUtil.newInstance(clazz, conf); - rulesBeforeJoinOpt = new BaseLogicalPlanRewriteEngine(); + rulesBeforeJoinOpt = new BaseLogicalPlanRewriteEngine(storage); rulesBeforeJoinOpt.addRewriteRule(provider.getPreRules()); - rulesAfterToJoinOpt = new BaseLogicalPlanRewriteEngine(); + rulesAfterToJoinOpt = new BaseLogicalPlanRewriteEngine(storage); rulesAfterToJoinOpt.addRewriteRule(provider.getPostRules()); } @@ -81,7 +85,7 @@ public LogicalNode optimize(LogicalPlan plan) throws TajoException { } public LogicalNode optimize(OverridableConf context, LogicalPlan plan) throws TajoException { - rulesBeforeJoinOpt.rewrite(new LogicalPlanRewriteRuleContext(context, plan, catalog)); + rulesBeforeJoinOpt.rewrite(new LogicalPlanRewriteRuleContext(context, plan, catalog, storage)); DirectedGraphCursor blockCursor = new DirectedGraphCursor<>(plan.getQueryBlockGraph(), plan.getRootBlock().getName()); @@ -94,7 +98,7 @@ public LogicalNode optimize(OverridableConf context, LogicalPlan plan) throws Ta } else { LOG.info("Skip join order optimization"); } - rulesAfterToJoinOpt.rewrite(new LogicalPlanRewriteRuleContext(context, plan, catalog)); + rulesAfterToJoinOpt.rewrite(new LogicalPlanRewriteRuleContext(context, plan, catalog, storage)); return plan.getRootBlock().getRoot(); } 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 79dad04b4b..653751957a 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 @@ -1334,7 +1334,6 @@ public ScanNode visitRelation(PlanContext context, Stack stack, Relation e QueryBlock block = context.queryBlock; ScanNode scanNode = block.getNodeFromExpr(expr); - updatePhysicalInfo(scanNode.getTableDesc()); // Find expression which can be evaluated at this relation node. // Except for column references, additional expressions used in select list, where clause, order-by clauses @@ -1393,22 +1392,6 @@ private static LinkedHashSet createFieldTargetsFromRelation(QueryBlock b return targets; } - private void updatePhysicalInfo(TableDesc desc) { - - // FAKEFILE is used for test - if (!desc.getMeta().getDataFormat().equals("SYSTEM") && !desc.getMeta().getDataFormat().equals("FAKEFILE")) { - try { - if (desc.getStats() != null) { - desc.getStats().setNumBytes(storage.getTableVolumn(desc.getUri())); - } - } catch (UnsupportedException t) { - LOG.warn(desc.getName() + " does not support Tablespace::getTableVolume()"); - // -1 means unknown volume size. - desc.getStats().setNumBytes(-1); - } - } - } - @Override public TableSubQueryNode visitTableSubQuery(PlanContext context, Stack stack, TablePrimarySubQuery expr) throws TajoException { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java index b39575e18f..f38b202388 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java @@ -22,6 +22,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.storage.StorageService; import java.util.LinkedHashMap; import java.util.Map; @@ -35,9 +36,15 @@ public class BaseLogicalPlanRewriteEngine implements LogicalPlanRewriteEngine { /** class logger */ private Log LOG = LogFactory.getLog(BaseLogicalPlanRewriteEngine.class); + private final StorageService storage; + /** a map for query rewrite rules */ private Map rewriteRules = new LinkedHashMap<>(); + public BaseLogicalPlanRewriteEngine(StorageService storage) { + this.storage = storage; + } + /** * Add a query rewrite rule to this engine. * diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java index 120529cb3b..3776f62e45 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java @@ -47,6 +47,9 @@ public Collection> getPreRules() { rules.add(FilterPushDownRule.class); } + // for updating table stats + rules.add(TableStatUpdateRewriter.class); + return rules; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java index 6c43112e96..a899961905 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java @@ -21,26 +21,24 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.storage.StorageService; public class LogicalPlanRewriteRuleContext { - private OverridableConf queryContext; - private LogicalPlan plan; + private final OverridableConf queryContext; + private final LogicalPlan plan; private CatalogService catalog; + private StorageService storage; - public LogicalPlanRewriteRuleContext(OverridableConf queryContext, LogicalPlan plan) { - setQueryContext(queryContext); - setPlan(plan); - } - - public LogicalPlanRewriteRuleContext(OverridableConf queryContext, LogicalPlan plan, CatalogService catalog) { - setQueryContext(queryContext); - setPlan(plan); - setCatalog(catalog); + public LogicalPlanRewriteRuleContext(OverridableConf context, LogicalPlan plan) { + this.queryContext = context; + this.plan = plan; } - public void setCatalog(CatalogService catalog) { + public LogicalPlanRewriteRuleContext(OverridableConf context, LogicalPlan plan, CatalogService catalog, StorageService storage) { + this(context, plan); this.catalog = catalog; + this.storage = storage; } public CatalogService getCatalog() { @@ -51,15 +49,11 @@ public OverridableConf getQueryContext() { return queryContext; } - public void setQueryContext(OverridableConf queryContext) { - this.queryContext = queryContext; - } - public LogicalPlan getPlan() { return plan; } - public void setPlan(LogicalPlan plan) { - this.plan = plan; + public StorageService getStorage() { + return storage; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java new file mode 100644 index 0000000000..126b10e300 --- /dev/null +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -0,0 +1,89 @@ +/* + * 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.rewrite; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.tajo.catalog.TableDesc; +import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.UnsupportedException; +import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.logical.LogicalNode; +import org.apache.tajo.plan.logical.ScanNode; +import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; +import org.apache.tajo.storage.StorageService; + +import java.util.Stack; + +public class TableStatUpdateRewriter implements LogicalPlanRewriteRule { + private static final Log LOG = LogFactory.getLog(TableStatUpdateRewriter.class); + + private static final String NAME = "Table Stat Updater"; + + @Override + public String getName() { + return NAME; + } + + @Override + public boolean isEligible(LogicalPlanRewriteRuleContext context) { + return true; + } + + @Override + public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoException { + LogicalPlan plan = context.getPlan(); + LogicalPlan.QueryBlock rootBlock = plan.getRootBlock(); + + Rewriter r = new Rewriter(context.getStorage()); + r.visit(rootBlock, plan, rootBlock, rootBlock.getRoot(), new Stack<>()); + return plan; + } + + private final class Rewriter extends BasicLogicalPlanVisitor { + private final StorageService storage; + + + private Rewriter(StorageService storage) { + this.storage = storage; + } + + @Override + public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode scanNode, + Stack stack) throws TajoException { + updatePhysicalInfo(scanNode.getTableDesc()); + return scanNode; + } + + private void updatePhysicalInfo(TableDesc desc) { + // FAKEFILE is used for test + if (!desc.getMeta().getDataFormat().equals("SYSTEM") && !desc.getMeta().getDataFormat().equals("FAKEFILE")) { + try { + if (desc.getStats() != null) { + desc.getStats().setNumBytes(storage.getTableVolumn(desc.getUri())); + } + } catch (UnsupportedException t) { + LOG.warn(desc.getName() + " does not support Tablespace::getTableVolume()"); + // -1 means unknown volume size. + desc.getStats().setNumBytes(-1); + } + } + } + } +} From a16aeff172eb8e61bb57ac120619d81f42069a0d Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 2 Dec 2015 23:50:05 -0800 Subject: [PATCH 02/15] TAJO-2007: By default, Optimizer should use the table volume in TableStat. --- .../java/org/apache/tajo/SessionVars.java | 5 ++ .../java/org/apache/tajo/conf/TajoConf.java | 7 +++ .../plan/rewrite/TableStatUpdateRewriter.java | 48 ++++++++++++++----- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java index 8d99a53e74..6863913fa6 100644 --- a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java +++ b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java @@ -19,6 +19,7 @@ package org.apache.tajo; import com.google.common.collect.Maps; +import org.apache.tajo.validation.BooleanValidator; import org.apache.tajo.validation.Validator; import org.apache.tajo.validation.Validators; @@ -88,6 +89,10 @@ public enum SessionVars implements ConfigKey { // Query and Optimization --------------------------------------------------- + // Optimizer + USE_TABLE_VOLUME(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD, + "Enable optimizer to get and use the table volume via storage handlers", DEFAULT), + // for distributed query strategies BROADCAST_NON_CROSS_JOIN_THRESHOLD(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD, "restriction for the total size of broadcasted table for non-cross join (kb)", DEFAULT, Long.class, diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java index 9f788ebb8a..f8628c455e 100644 --- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java +++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java @@ -315,6 +315,13 @@ public static enum ConfVars implements ConfigKey { // Query and Optimization --------------------------------------------------- + + // Enables the optimizer to get and use table volumes via storage handlers. + // This feature may cause some performance degradation when storage access is too slow (S3). + // By default, this config value is false, and in this case the optimizer uses the table stats from catalog. + $USE_TABLE_VOLUME("tajo.optimizer.stats.table-volume", false), + + // for distributed query strategies $DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD("tajo.dist-query.broadcast.non-cross-join.threshold-kb", 5 * 1024l, Validators.min("0")), // 5 MB diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index 126b10e300..186dc3f5b1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -20,6 +20,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.tajo.OverridableConf; +import org.apache.tajo.SessionVars; +import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.UnsupportedException; @@ -28,6 +31,7 @@ import org.apache.tajo.plan.logical.ScanNode; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.storage.StorageService; +import org.apache.tajo.unit.StorageUnit; import java.util.Stack; @@ -57,33 +61,51 @@ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoExc } private final class Rewriter extends BasicLogicalPlanVisitor { + private final OverridableConf conf; + private final CatalogService catalog; private final StorageService storage; - private Rewriter(StorageService storage) { + private Rewriter(OverridableConf conf, CatalogService catalog, StorageService storage) { + this.conf = conf; + this.catalog = catalog; this.storage = storage; } @Override public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode scanNode, Stack stack) throws TajoException { - updatePhysicalInfo(scanNode.getTableDesc()); + final TableDesc table = scanNode.getTableDesc(); + + if (!isVirtual(table)) { + final long tableSize = table.getStats().getNumBytes(); + + // If USE_TABLE_VOLUME is set, we will update the table volume through a storage handler. + // In addition, if the table size is zero, we will update too. + // It is a good workaround to avoid suboptimal join orders without cheap cost. + if (conf.getBool(SessionVars.USE_TABLE_VOLUME) || tableSize == 0) { + table.getStats().setNumBytes(getTableVolume(table)); + } + } + return scanNode; } - private void updatePhysicalInfo(TableDesc desc) { - // FAKEFILE is used for test - if (!desc.getMeta().getDataFormat().equals("SYSTEM") && !desc.getMeta().getDataFormat().equals("FAKEFILE")) { - try { - if (desc.getStats() != null) { - desc.getStats().setNumBytes(storage.getTableVolumn(desc.getUri())); - } - } catch (UnsupportedException t) { - LOG.warn(desc.getName() + " does not support Tablespace::getTableVolume()"); - // -1 means unknown volume size. - desc.getStats().setNumBytes(-1); + private boolean isVirtual(TableDesc table) { + return table.getMeta().getDataFormat().equals("SYSTEM") || table.getMeta().getDataFormat().equals("FAKEFILE"); + } + + private long getTableVolume(TableDesc table) { + try { + if (table.getStats() != null) { + return storage.getTableVolumn(table.getUri()); } + } catch (UnsupportedException t) { + LOG.warn(table.getName() + " does not support Tablespace::getTableVolume()"); + // By default, return 1GB to avoid a single task } + + return StorageUnit.GB; } } } From 60b714bde6a7ddbcb238e8e39095f55f283eb589 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 00:00:09 -0800 Subject: [PATCH 03/15] Removed unused parameters. --- .../apache/tajo/plan/rewrite/TableStatUpdateRewriter.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index 186dc3f5b1..fda499c862 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -22,7 +22,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.OverridableConf; import org.apache.tajo.SessionVars; -import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.UnsupportedException; @@ -55,20 +54,18 @@ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoExc LogicalPlan plan = context.getPlan(); LogicalPlan.QueryBlock rootBlock = plan.getRootBlock(); - Rewriter r = new Rewriter(context.getStorage()); + Rewriter r = new Rewriter(context.getQueryContext(), context.getStorage()); r.visit(rootBlock, plan, rootBlock, rootBlock.getRoot(), new Stack<>()); return plan; } private final class Rewriter extends BasicLogicalPlanVisitor { private final OverridableConf conf; - private final CatalogService catalog; private final StorageService storage; - private Rewriter(OverridableConf conf, CatalogService catalog, StorageService storage) { + private Rewriter(OverridableConf conf, StorageService storage) { this.conf = conf; - this.catalog = catalog; this.storage = storage; } From 82e71774095d634bebec54187051f139aa06d456 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 00:17:40 -0800 Subject: [PATCH 04/15] TAJO-1991: Tablespace::getVolume should take filter predication. --- .../java/org/apache/tajo/plan/LogicalOptimizer.java | 1 - .../java/org/apache/tajo/plan/LogicalPlanner.java | 1 - .../java/org/apache/tajo/plan}/StorageService.java | 6 ++++-- .../plan/rewrite/BaseLogicalPlanRewriteEngine.java | 2 +- .../plan/rewrite/LogicalPlanRewriteRuleContext.java | 2 +- .../tajo/plan/rewrite/TableStatUpdateRewriter.java | 11 +++++++---- .../main/java/org/apache/tajo/storage/Tablespace.java | 3 ++- .../org/apache/tajo/storage/TablespaceManager.java | 7 +++++-- .../apache/tajo/storage/hbase/HBaseTablespace.java | 2 +- .../java/org/apache/tajo/storage/FileTablespace.java | 2 +- .../org/apache/tajo/storage/jdbc/JdbcTablespace.java | 3 ++- 11 files changed, 24 insertions(+), 16 deletions(-) rename {tajo-common/src/main/java/org/apache/tajo/storage => tajo-plan/src/main/java/org/apache/tajo/plan}/StorageService.java (86%) 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 e9e6ab27f7..97e2bf5b17 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 @@ -39,7 +39,6 @@ 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.storage.StorageService; import org.apache.tajo.util.ReflectionUtil; import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; 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 6c38c02cf7..5c262315cd 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 @@ -48,7 +48,6 @@ import org.apache.tajo.plan.rewrite.rules.ProjectionPushDownRule; import org.apache.tajo.plan.util.ExprFinder; import org.apache.tajo.plan.util.PlannerUtil; -import org.apache.tajo.storage.StorageService; import org.apache.tajo.util.KeyValueSet; import org.apache.tajo.util.Pair; import org.apache.tajo.util.StringUtils; diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/StorageService.java b/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java similarity index 86% rename from tajo-common/src/main/java/org/apache/tajo/storage/StorageService.java rename to tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java index 0c3c03124f..f27aeff0b8 100644 --- a/tajo-common/src/main/java/org/apache/tajo/storage/StorageService.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java @@ -16,9 +16,11 @@ * limitations under the License. */ -package org.apache.tajo.storage; +package org.apache.tajo.plan; +import com.google.common.base.Optional; import org.apache.tajo.exception.UnsupportedException; +import org.apache.tajo.plan.expr.EvalNode; import javax.annotation.Nullable; import java.net.URI; @@ -38,5 +40,5 @@ public interface StorageService { */ URI getTableURI(@Nullable String spaceName, String databaseName, String tableName); - long getTableVolumn(URI uri) throws UnsupportedException; + long getTableVolumn(URI uri, Optional filter) throws UnsupportedException; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java index f38b202388..21a0905d72 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.storage.StorageService; +import org.apache.tajo.plan.StorageService; import java.util.LinkedHashMap; import java.util.Map; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java index a899961905..aa7308af70 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/LogicalPlanRewriteRuleContext.java @@ -21,7 +21,7 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.storage.StorageService; +import org.apache.tajo.plan.StorageService; public class LogicalPlanRewriteRuleContext { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index fda499c862..0a73874749 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -18,6 +18,7 @@ package org.apache.tajo.plan.rewrite; +import com.google.common.base.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tajo.OverridableConf; @@ -26,10 +27,11 @@ import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.LogicalPlan; +import org.apache.tajo.plan.StorageService; +import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.logical.ScanNode; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; -import org.apache.tajo.storage.StorageService; import org.apache.tajo.unit.StorageUnit; import java.util.Stack; @@ -76,12 +78,13 @@ public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock if (!isVirtual(table)) { final long tableSize = table.getStats().getNumBytes(); + final Optional filter = scanNode.hasQual() ? Optional.of(scanNode.getQual()) : Optional.absent(); // If USE_TABLE_VOLUME is set, we will update the table volume through a storage handler. // In addition, if the table size is zero, we will update too. // It is a good workaround to avoid suboptimal join orders without cheap cost. if (conf.getBool(SessionVars.USE_TABLE_VOLUME) || tableSize == 0) { - table.getStats().setNumBytes(getTableVolume(table)); + table.getStats().setNumBytes(getTableVolume(table, filter)); } } @@ -92,10 +95,10 @@ private boolean isVirtual(TableDesc table) { return table.getMeta().getDataFormat().equals("SYSTEM") || table.getMeta().getDataFormat().equals("FAKEFILE"); } - private long getTableVolume(TableDesc table) { + private long getTableVolume(TableDesc table, Optional filter) { try { if (table.getStats() != null) { - return storage.getTableVolumn(table.getUri()); + return storage.getTableVolumn(table.getUri(), filter); } } catch (UnsupportedException t) { LOG.warn(table.getName() + " does not support Tablespace::getTableVolume()"); diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java index 81fbbc0ce7..01ef9debf0 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java @@ -18,6 +18,7 @@ package org.apache.tajo.storage; +import com.google.common.base.Optional; import net.minidev.json.JSONObject; import org.apache.hadoop.fs.Path; import org.apache.tajo.ExecutionBlockId; @@ -98,7 +99,7 @@ public String toString() { return name + "=" + uri.toString(); } - public abstract long getTableVolume(URI uri) throws UnsupportedException; + public abstract long getTableVolume(URI uri, Optional filter) throws UnsupportedException; /** * if {@link StorageProperty#isArbitraryPathAllowed} is true, diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java index b1e3275b64..e3af8a69af 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java @@ -36,6 +36,8 @@ import org.apache.tajo.exception.UndefinedTablespaceException; import org.apache.tajo.exception.UndefinedTablespaceHandlerException; import org.apache.tajo.exception.UnsupportedException; +import org.apache.tajo.plan.StorageService; +import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.fragment.Fragment; import org.apache.tajo.util.JavaResourceUtil; import org.apache.tajo.util.Pair; @@ -433,8 +435,9 @@ public URI getTableURI(@Nullable String spaceName, String databaseName, String t } @Override - public long getTableVolumn(URI tableUri) throws UnsupportedException { - return get(tableUri).getTableVolume(tableUri); + public long getTableVolumn(URI tableUri, com.google.common.base.Optional filter) + throws UnsupportedException { + return get(tableUri).getTableVolume(tableUri, filter); } public static Iterable getAllTablespaces() { diff --git a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java index f06cc670f7..5a820e64e3 100644 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java @@ -97,7 +97,7 @@ public Configuration getHbaseConf() { } @Override - public long getTableVolume(URI uri) throws UnsupportedException { + public long getTableVolume(URI uri, com.google.common.base.Optional filter) throws UnsupportedException { throw new UnsupportedException(); } diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java index d95852c5e2..5cf297657f 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java @@ -125,7 +125,7 @@ protected void storageInit() throws IOException { } @Override - public long getTableVolume(URI uri) throws UnsupportedException { + public long getTableVolume(URI uri, com.google.common.base.Optional filter) throws UnsupportedException { Path path = new Path(uri); ContentSummary summary; try { diff --git a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java index 74893071c5..da0b5a7f1c 100644 --- a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java +++ b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java @@ -18,6 +18,7 @@ package org.apache.tajo.storage.jdbc; +import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import net.minidev.json.JSONObject; @@ -109,7 +110,7 @@ protected void storageInit() throws IOException { } @Override - public long getTableVolume(URI uri) throws UnsupportedException { + public long getTableVolume(URI uri, Optional filter) throws UnsupportedException { throw new UnsupportedException(); } From 66c5278bf1d98ff691802a9cbe6eedf9a7dd08d7 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 00:20:46 -0800 Subject: [PATCH 05/15] Add guava to pom. --- tajo-storage/tajo-storage-pgsql/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tajo-storage/tajo-storage-pgsql/pom.xml b/tajo-storage/tajo-storage-pgsql/pom.xml index 6f37ab6d2a..bca8179dd7 100644 --- a/tajo-storage/tajo-storage-pgsql/pom.xml +++ b/tajo-storage/tajo-storage-pgsql/pom.xml @@ -213,6 +213,11 @@ 0.3 test + + com.google.guava + guava + runtime + com.google.guava guava From edd604c823d5a5d183b8860d25a05c05a86ce3ae Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 00:37:44 -0800 Subject: [PATCH 06/15] Fixed errors. --- .../main/java/org/apache/tajo/SessionVars.java | 5 +++-- .../main/java/org/apache/tajo/conf/TajoConf.java | 2 +- .../plan/rewrite/TableStatUpdateRewriter.java | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java index 6863913fa6..5146820f9e 100644 --- a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java +++ b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java @@ -90,8 +90,9 @@ public enum SessionVars implements ConfigKey { // Query and Optimization --------------------------------------------------- // Optimizer - USE_TABLE_VOLUME(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD, - "Enable optimizer to get and use the table volume via storage handlers", DEFAULT), + USE_TABLE_VOLUME(ConfVars.$USE_TABLE_VOLUME, + "Enable optimizer to get and use the table volume via storage handlers", DEFAULT, Boolean.class, + Validators.bool()), // for distributed query strategies BROADCAST_NON_CROSS_JOIN_THRESHOLD(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD, diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java index f8628c455e..fe79c780b2 100644 --- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java +++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java @@ -319,7 +319,7 @@ public static enum ConfVars implements ConfigKey { // Enables the optimizer to get and use table volumes via storage handlers. // This feature may cause some performance degradation when storage access is too slow (S3). // By default, this config value is false, and in this case the optimizer uses the table stats from catalog. - $USE_TABLE_VOLUME("tajo.optimizer.stats.table-volume", false), + $USE_TABLE_VOLUME("tajo.optimizer.stats.table-volume", Boolean.FALSE), // for distributed query strategies diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index 0a73874749..4373c8c079 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -24,6 +24,7 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.SessionVars; import org.apache.tajo.catalog.TableDesc; +import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.LogicalPlan; @@ -77,7 +78,8 @@ public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock final TableDesc table = scanNode.getTableDesc(); if (!isVirtual(table)) { - final long tableSize = table.getStats().getNumBytes(); + final TableStats stats = getTableStat(table); + final long tableSize = stats.getNumBytes(); final Optional filter = scanNode.hasQual() ? Optional.of(scanNode.getQual()) : Optional.absent(); // If USE_TABLE_VOLUME is set, we will update the table volume through a storage handler. @@ -91,6 +93,17 @@ public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock return scanNode; } + private TableStats getTableStat(TableDesc table) { + TableStats stats; + if (table.getStats() == null) { + stats = new TableStats(); + table.setStats(stats); + } else { + stats = table.getStats(); + } + return stats; + } + private boolean isVirtual(TableDesc table) { return table.getMeta().getDataFormat().equals("SYSTEM") || table.getMeta().getDataFormat().equals("FAKEFILE"); } From a2ab0e634ed59665c4a4e27bd6cef4347549865a Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 00:47:38 -0800 Subject: [PATCH 07/15] Changed Optional to JDK8's one. --- .../src/main/java/org/apache/tajo/plan/StorageService.java | 2 +- .../apache/tajo/plan/rewrite/TableStatUpdateRewriter.java | 4 ++-- .../src/main/java/org/apache/tajo/storage/Tablespace.java | 2 +- .../main/java/org/apache/tajo/storage/TablespaceManager.java | 2 +- .../java/org/apache/tajo/storage/hbase/HBaseTablespace.java | 2 +- .../main/java/org/apache/tajo/storage/FileTablespace.java | 2 +- tajo-storage/tajo-storage-jdbc/pom.xml | 1 - .../java/org/apache/tajo/storage/jdbc/JdbcTablespace.java | 2 +- tajo-storage/tajo-storage-pgsql/pom.xml | 5 ----- 9 files changed, 8 insertions(+), 14 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java b/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java index f27aeff0b8..10d11f0183 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/StorageService.java @@ -18,12 +18,12 @@ package org.apache.tajo.plan; -import com.google.common.base.Optional; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import javax.annotation.Nullable; import java.net.URI; +import java.util.Optional; /** * TablespaceManager interface for loosely coupled usages diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index 4373c8c079..a0cc21ba9e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -18,7 +18,6 @@ package org.apache.tajo.plan.rewrite; -import com.google.common.base.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tajo.OverridableConf; @@ -35,6 +34,7 @@ import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.unit.StorageUnit; +import java.util.Optional; import java.util.Stack; public class TableStatUpdateRewriter implements LogicalPlanRewriteRule { @@ -80,7 +80,7 @@ public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock if (!isVirtual(table)) { final TableStats stats = getTableStat(table); final long tableSize = stats.getNumBytes(); - final Optional filter = scanNode.hasQual() ? Optional.of(scanNode.getQual()) : Optional.absent(); + final Optional filter = scanNode.hasQual() ? Optional.of(scanNode.getQual()) : Optional.empty(); // If USE_TABLE_VOLUME is set, we will update the table volume through a storage handler. // In addition, if the table size is zero, we will update too. diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java index 01ef9debf0..6c97754815 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java @@ -18,7 +18,6 @@ package org.apache.tajo.storage; -import com.google.common.base.Optional; import net.minidev.json.JSONObject; import org.apache.hadoop.fs.Path; import org.apache.tajo.ExecutionBlockId; @@ -41,6 +40,7 @@ import java.net.URI; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.Set; /** diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java index e3af8a69af..12e283f40c 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TablespaceManager.java @@ -435,7 +435,7 @@ public URI getTableURI(@Nullable String spaceName, String databaseName, String t } @Override - public long getTableVolumn(URI tableUri, com.google.common.base.Optional filter) + public long getTableVolumn(URI tableUri, Optional filter) throws UnsupportedException { return get(tableUri).getTableVolume(tableUri, filter); } diff --git a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java index 5a820e64e3..1032a850e9 100644 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java @@ -97,7 +97,7 @@ public Configuration getHbaseConf() { } @Override - public long getTableVolume(URI uri, com.google.common.base.Optional filter) throws UnsupportedException { + public long getTableVolume(URI uri, Optional filter) throws UnsupportedException { throw new UnsupportedException(); } diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java index 5cf297657f..ee4512b56a 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/FileTablespace.java @@ -125,7 +125,7 @@ protected void storageInit() throws IOException { } @Override - public long getTableVolume(URI uri, com.google.common.base.Optional filter) throws UnsupportedException { + public long getTableVolume(URI uri, Optional filter) throws UnsupportedException { Path path = new Path(uri); ContentSummary summary; try { diff --git a/tajo-storage/tajo-storage-jdbc/pom.xml b/tajo-storage/tajo-storage-jdbc/pom.xml index 61481c74a9..804cad4e8b 100644 --- a/tajo-storage/tajo-storage-jdbc/pom.xml +++ b/tajo-storage/tajo-storage-jdbc/pom.xml @@ -193,7 +193,6 @@ com.google.protobuf protobuf-java - diff --git a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java index da0b5a7f1c..1f7f299e48 100644 --- a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java +++ b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcTablespace.java @@ -18,7 +18,6 @@ package org.apache.tajo.storage.jdbc; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import net.minidev.json.JSONObject; @@ -48,6 +47,7 @@ import java.sql.SQLException; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Properties; /** diff --git a/tajo-storage/tajo-storage-pgsql/pom.xml b/tajo-storage/tajo-storage-pgsql/pom.xml index bca8179dd7..6f37ab6d2a 100644 --- a/tajo-storage/tajo-storage-pgsql/pom.xml +++ b/tajo-storage/tajo-storage-pgsql/pom.xml @@ -213,11 +213,6 @@ 0.3 test - - com.google.guava - guava - runtime - com.google.guava guava From c342c4b9b5d7365d7df5d9b4a977082f18430a62 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 3 Dec 2015 01:00:56 -0800 Subject: [PATCH 08/15] Fixed undeterministic results. --- .../test/java/org/apache/tajo/engine/query/TestHBaseTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java index 95109b9eae..edd6c7080d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java @@ -664,7 +664,7 @@ public void testJoin() throws Exception { ResultSet res = executeString("select a.rk, a.col1, a.col2, a.col3, b.l_orderkey, b.l_linestatus " + "from hbase_mapped_table a " + - "join default.lineitem b on a.col3 = b.l_orderkey"); + "join default.lineitem b on a.col3 = b.l_orderkey order by a.rk, a.col1, a.col2, a.col3"); assertResultSet(res); res.close(); } finally { From ee304104cde1edad1553d82e2d9f1dbd06e06e9b Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 4 Dec 2015 00:11:44 -0800 Subject: [PATCH 09/15] Set the default volume. --- .../org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index a0cc21ba9e..95afd07c2d 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -115,10 +115,10 @@ private long getTableVolume(TableDesc table, Optional filter) { } } catch (UnsupportedException t) { LOG.warn(table.getName() + " does not support Tablespace::getTableVolume()"); - // By default, return 1GB to avoid a single task } - return StorageUnit.GB; + // By default, return -1; + return -1; } } } From b25688fd1d16fc37b5710ce6c96c28f9b0fe46d9 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 4 Dec 2015 00:57:31 -0800 Subject: [PATCH 10/15] Removed invalid imports. --- .../src/main/java/org/apache/tajo/plan/LogicalOptimizer.java | 3 +-- 1 file changed, 1 insertion(+), 2 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 e9e6ab27f7..42f43f1c14 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 @@ -30,8 +30,8 @@ import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.conf.TajoConf.ConfVars; -import org.apache.tajo.plan.expr.*; import org.apache.tajo.exception.TajoException; +import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.joinorder.*; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.rewrite.BaseLogicalPlanRewriteEngine; @@ -39,7 +39,6 @@ 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.storage.StorageService; import org.apache.tajo.util.ReflectionUtil; import org.apache.tajo.util.TUtil; import org.apache.tajo.util.graph.DirectedGraphCursor; From 1a931c9e415ab3f355a32d1ffdd88f9e660398cb Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 4 Dec 2015 10:26:42 -0800 Subject: [PATCH 11/15] Updated the test result. --- .../resources/results/TestTajoCli/testHelpSessionVars.result | 1 + 1 file changed, 1 insertion(+) diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testHelpSessionVars.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testHelpSessionVars.result index 5c2468d609..46e6b763da 100644 --- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testHelpSessionVars.result +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testHelpSessionVars.result @@ -18,6 +18,7 @@ Available Session Variables: \set LC_MONETARY [text value] - Formatting of currency amounts \set LC_NUMERIC [text value] - Formatting of numbers \set LC_TIME [text value] - Formatting of dates and times +\set USE_TABLE_VOLUME [true or false] - Enable optimizer to get and use the table volume via storage handlers \set BROADCAST_NON_CROSS_JOIN_THRESHOLD [long value] - restriction for the total size of broadcasted table for non-cross join (kb) \set BROADCAST_CROSS_JOIN_THRESHOLD [long value] - restriction for the total size of broadcasted table for cross join (kb) \set JOIN_TASK_INPUT_SIZE [int value] - join task input size (mb) From ead71440e8e06b30a1a3e13539fc1f5df221f6ee Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Sat, 12 Dec 2015 13:35:48 -0800 Subject: [PATCH 12/15] Fixed unit tests. --- .../org/apache/tajo/TajoTestingCluster.java | 1 + .../java/org/apache/tajo/SessionVars.java | 1 - .../apache/tajo/validation/MinValidator.java | 4 + .../tajo/engine/query/TestCrossJoin.java | 17 +- .../query/TestInnerJoinWithSubQuery.java | 20 +- .../query/TestJoinOnPartitionedTables.java | 2 +- .../tajo/engine/query/TestJoinQuery.java | 11 +- .../engine/query/TestMultipleJoinTypes.java | 2 +- .../tajo/engine/query/TestOuterJoinQuery.java | 10 +- .../engine/query/TestSetSessionQuery.java | 20 +- .../tajo/engine/query/TestUnionQuery.java | 12 +- .../queries/TestTablePartitions/case3.sql | 7 +- ...rossJoinOfOneSmallTableAndJoin.1.Hash.plan | 92 ++++-- ...rossJoinOfOneSmallTableAndJoin.1.Sort.plan | 92 ++++-- .../testBroadcastTwoPartJoin.Hash.plan | 239 ++++++++++----- ...BroadcastTwoPartJoin.Hash_NoBroadcast.plan | 192 ++++++------ .../testBroadcastTwoPartJoin.Sort.plan | 239 ++++++++++----- ...BroadcastTwoPartJoin.Sort_NoBroadcast.plan | 192 ++++++------ .../testJoinAsterisk.Hash.plan | 18 +- .../testJoinAsterisk.Hash_NoBroadcast.plan | 38 +-- .../testJoinAsterisk.Sort.plan | 18 +- .../testJoinAsterisk.Sort_NoBroadcast.plan | 38 +-- .../testJoinOnMultipleDatabases.Hash.plan | 106 +++---- ...nOnMultipleDatabases.Hash_NoBroadcast.plan | 202 ++++++------- .../testJoinOnMultipleDatabases.Sort.plan | 106 +++---- ...nOnMultipleDatabases.Sort_NoBroadcast.plan | 202 ++++++------- .../testJoinWithMultipleJoinQual1.Hash.plan | 208 ++++++++----- ...ithMultipleJoinQual1.Hash_NoBroadcast.plan | 214 ++++++------- .../testJoinWithMultipleJoinQual1.Sort.plan | 208 ++++++++----- ...ithMultipleJoinQual1.Sort_NoBroadcast.plan | 214 ++++++------- .../testTPCHQ2Join.Hash.plan | 212 ++++++++----- .../testTPCHQ2Join.Hash_NoBroadcast.plan | 220 +++++++------- .../testTPCHQ2Join.Sort.plan | 212 ++++++++----- .../testTPCHQ2Join.Sort_NoBroadcast.plan | 220 +++++++------- .../testWhereClauseJoin5.Hash.plan | 102 +++++-- .../testWhereClauseJoin5.Sort.plan | 102 +++++-- .../testWhereClauseJoin6.Hash.plan | 174 +++++++---- ...testWhereClauseJoin6.Hash_NoBroadcast.plan | 170 +++++------ .../testWhereClauseJoin6.Sort.plan | 174 +++++++---- ...testWhereClauseJoin6.Sort_NoBroadcast.plan | 170 +++++------ .../testBroadcastSubquery.Hash.plan | 118 ++++++-- .../testBroadcastSubquery.Sort.plan | 118 ++++++-- .../testBroadcastSubquery2.Hash.plan | 244 +++++++++++---- .../testBroadcastSubquery2.Sort.plan | 244 +++++++++++---- .../testJoinWithMultipleJoinQual2.Hash.plan | 20 +- ...ithMultipleJoinQual2.Hash_NoBroadcast.plan | 54 ++-- .../testJoinWithMultipleJoinQual2.Sort.plan | 20 +- ...ithMultipleJoinQual2.Sort_NoBroadcast.plan | 54 ++-- .../testJoinWithMultipleJoinQual3.Hash.plan | 127 +++++--- ...ithMultipleJoinQual3.Hash_NoBroadcast.plan | 198 ++++++------ .../testJoinWithMultipleJoinQual3.Sort.plan | 127 +++++--- ...ithMultipleJoinQual3.Sort_NoBroadcast.plan | 198 ++++++------ .../testJoinWithMultipleJoinQual3.result | 2 +- .../testJoinWithMultipleJoinQual4.Hash.plan | 167 +++++----- ...ithMultipleJoinQual4.Hash_NoBroadcast.plan | 198 ++++++------ .../testJoinWithMultipleJoinQual4.Sort.plan | 167 +++++----- ...ithMultipleJoinQual4.Sort_NoBroadcast.plan | 198 ++++++------ .../testComplexJoinsWithCaseWhen.Hash.plan | 71 +++-- .../testComplexJoinsWithCaseWhen.Sort.plan | 71 +++-- .../testComplexJoinsWithCaseWhen2.Hash.plan | 47 ++- .../testComplexJoinsWithCaseWhen2.Sort.plan | 47 ++- .../testInnerAndOuterWithEmpty.1.Hash.plan | 49 ++- .../testInnerAndOuterWithEmpty.1.Sort.plan | 49 ++- .../testJoinWithMultipleJoinTypes.Hash.plan | 63 ++-- .../testJoinWithMultipleJoinTypes.Sort.plan | 63 ++-- .../testFullOuterJoin1.Hash.plan | 38 +-- .../testFullOuterJoin1.Hash_NoBroadcast.plan | 38 +-- .../testFullOuterJoin1.Sort.plan | 38 +-- .../testFullOuterJoin1.Sort_NoBroadcast.plan | 38 +-- .../testLeftOuterJoin1.Hash.plan | 53 +++- .../testLeftOuterJoin1.Sort.plan | 53 +++- .../testLeftOuterJoin2.Hash.plan | 98 ++++-- .../testLeftOuterJoin2.Sort.plan | 98 ++++-- .../testLeftOuterJoin3.Hash.plan | 270 ++++++++++++----- .../testLeftOuterJoin3.Hash_NoBroadcast.plan | 240 +++++++-------- .../testLeftOuterJoin3.Sort.plan | 270 ++++++++++++----- .../testLeftOuterJoin3.Sort_NoBroadcast.plan | 240 +++++++-------- ...stLeftOuterJoinWithConstantExpr1.Hash.plan | 53 +++- ...stLeftOuterJoinWithConstantExpr1.Sort.plan | 53 +++- ...stLeftOuterJoinWithConstantExpr4.Hash.plan | 49 ++- ...stLeftOuterJoinWithConstantExpr4.Sort.plan | 49 ++- ...stLeftOuterJoinWithConstantExpr5.Hash.plan | 47 ++- ...stLeftOuterJoinWithConstantExpr5.Sort.plan | 47 ++- ...testLeftOuterJoinWithEmptyTable4.Hash.plan | 57 +++- ...testLeftOuterJoinWithEmptyTable4.Sort.plan | 57 +++- .../testLeftOuterJoinWithNull1.Hash.plan | 53 +++- .../testLeftOuterJoinWithNull1.Sort.plan | 53 +++- .../testLeftOuterJoinWithNull2.Hash.plan | 53 +++- .../testLeftOuterJoinWithNull2.Sort.plan | 53 +++- .../testLeftOuterJoinWithNull3.Hash.plan | 53 +++- .../testLeftOuterJoinWithNull3.Sort.plan | 53 +++- ...oinWithThetaJoinConditionInWhere.Hash.plan | 43 ++- ...oinWithThetaJoinConditionInWhere.Sort.plan | 43 ++- ...BroadcastDataFileWithZeroLength2.Hash.plan | 49 ++- ...BroadcastDataFileWithZeroLength2.Sort.plan | 49 ++- .../testRightOuterJoin1.Hash.plan | 53 +++- .../testRightOuterJoin1.Sort.plan | 53 +++- ...stLeftOuterJoinWithConstantExpr2.Hash.plan | 69 +++-- ...stLeftOuterJoinWithConstantExpr2.Sort.plan | 69 +++-- ...eftOuterJoinWithEmptySubquery1.1.Hash.plan | 89 ++++-- ...eftOuterJoinWithEmptySubquery1.1.Sort.plan | 89 ++++-- .../TestSQLAnalyzer/setsession1.result | 2 +- .../TestSQLAnalyzer/setsession2.result | 2 +- .../TestSQLAnalyzer/setsession3.result | 2 +- .../TestSQLAnalyzer/setsession4.result | 2 +- .../TestSQLAnalyzer/setsession5.result | 2 +- .../TestSQLAnalyzer/setsession6.result | 2 +- .../TestSQLAnalyzer/setsession7.result | 2 +- .../results/TestTPCH/testQ2FourJoins.plan | 222 +++++++------- .../results/TestTPCH/testTPCHQ5.plan | 286 +++++++++--------- .../apache/tajo/parser/sql/SQLAnalyzer.java | 3 +- .../GreedyHeuristicJoinOrderAlgorithm.java | 2 +- .../storage/pgsql/TestPgSQLQueryTests.java | 5 +- 113 files changed, 6521 insertions(+), 4016 deletions(-) diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java index 3dfb902151..6801ff48e6 100644 --- a/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java +++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java @@ -126,6 +126,7 @@ void initPropertiesAndConfigs() { // Injection of equality testing code of logical plan (de)serialization conf.setClassVar(ConfVars.LOGICAL_PLAN_REWRITE_RULE_PROVIDER_CLASS, LogicalPlanTestRuleProvider.class); conf.setClassVar(ConfVars.GLOBAL_PLAN_REWRITE_RULE_PROVIDER_CLASS, GlobalPlanTestRuleProvider.class); + conf.setLongVar(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD, 1024 * 1024); // 1GB conf.setInt(ConfVars.WORKER_RESOURCE_AVAILABLE_CPU_CORES.varname, 4); conf.setInt(ConfVars.WORKER_RESOURCE_AVAILABLE_MEMORY_MB.varname, 2000); diff --git a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java index 5146820f9e..ba85549092 100644 --- a/tajo-common/src/main/java/org/apache/tajo/SessionVars.java +++ b/tajo-common/src/main/java/org/apache/tajo/SessionVars.java @@ -19,7 +19,6 @@ package org.apache.tajo; import com.google.common.collect.Maps; -import org.apache.tajo.validation.BooleanValidator; import org.apache.tajo.validation.Validator; import org.apache.tajo.validation.Validators; diff --git a/tajo-common/src/main/java/org/apache/tajo/validation/MinValidator.java b/tajo-common/src/main/java/org/apache/tajo/validation/MinValidator.java index 431fe9b26f..6f249e31ae 100644 --- a/tajo-common/src/main/java/org/apache/tajo/validation/MinValidator.java +++ b/tajo-common/src/main/java/org/apache/tajo/validation/MinValidator.java @@ -67,6 +67,10 @@ protected boolean validateInternal(T object) { BigDecimal objDecimal = (BigDecimal) object; BigDecimal minDecimal = new BigDecimal(minValue); result = objDecimal.compareTo(minDecimal) >= 0; + } else if (object instanceof String) { + BigDecimal objDecimal = new BigDecimal((String)object); + BigDecimal minDecimal = new BigDecimal(minValue); + result = objDecimal.compareTo(minDecimal) >= 0; } } else { diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCrossJoin.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCrossJoin.java index 7990ee7107..88e8a3e967 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCrossJoin.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCrossJoin.java @@ -119,12 +119,25 @@ public final void testCrossJoinWithThetaJoinConditionInWhere() throws Exception @Test (expected = TooLargeInputForCrossJoinException.class) public final void testCrossJoinOfOneLargeTableAndJoin() throws Exception { - executeString("select * from nation cross join region left outer join lineitem on r_regionkey = l_orderkey inner join supplier on l_suppkey = s_suppkey"); + try { + executeString("SET SESSION BROADCAST_CROSS_JOIN_THRESHOLD to 2").close(); + executeString("select * from nation cross join region left outer join lineitem on r_regionkey = l_orderkey " + + "inner join supplier on l_suppkey = s_suppkey"); + } finally { + executeString("SET SESSION BROADCAST_CROSS_JOIN_THRESHOLD to " + + ORIGINAL_BROADCAST_CROSS_JOIN_THRESHOLD).close(); + } } @Test (expected = TooLargeInputForCrossJoinException.class) public final void testCrossJoinOfTwoLargeTables() throws Exception { - executeString("select * from nation n1 cross join nation n2"); + try { + executeString("SET SESSION BROADCAST_CROSS_JOIN_THRESHOLD 2").close(); + executeString("select * from nation n1 cross join nation n2"); + } finally { + executeString("SET SESSION BROADCAST_CROSS_JOIN_THRESHOLD " + + ORIGINAL_BROADCAST_CROSS_JOIN_THRESHOLD).close(); + } } @Test (expected = InvalidInputsForCrossJoin.class) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java index f987c5f8de..5a7bfea320 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java @@ -57,7 +57,7 @@ public final void testJoinWithMultipleJoinQual2() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testJoinWithMultipleJoinQual3() throws Exception { runSimpleTests(); @@ -70,24 +70,6 @@ public final void testJoinWithMultipleJoinQual4() throws Exception { runSimpleTests(); } - @Test - public final void testJoinWithJson2() throws Exception { - /* - 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'); - */ - ResultSet res = executeJsonQuery(); - assertResultSet(res); - cleanupQuery(res); - } - @Test @Option(withExplain = true, withExplainGlobal = true, parameterized = true) @SimpleTest( diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java index d2585a70b1..1db1f77060 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java @@ -174,7 +174,7 @@ public final void testCasebyCase1() throws Exception { ResultSet res = executeString( "select a.l_orderkey as key1, b.l_orderkey as key2 from lineitem as a " + "left outer join " + tableName + " b " + - "on a.l_partkey = b.l_partkey and b.l_orderkey = 1000" + "on a.l_partkey = b.l_partkey and b.l_orderkey = 1000 order by key1, key2" ); String expected = "key1,key2\n" + diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 7acb73a262..9b5b9ed4a6 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -54,6 +54,7 @@ public class TestJoinQuery extends QueryTestCaseBase { private static final Log LOG = LogFactory.getLog(TestJoinQuery.class); private static int reference = 0; + protected static long ORIGINAL_BROADCAST_CROSS_JOIN_THRESHOLD = 1024 * 1024; public TestJoinQuery(String joinOption) throws Exception { super(TajoConstants.DEFAULT_DATABASE_NAME, joinOption); @@ -62,7 +63,7 @@ public TestJoinQuery(String joinOption) throws Exception { testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.varname, "" + 5); testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, - "" + 2); + 1024 * 1024 + ""); testingCluster.setAllTajoDaemonConfValue( ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, @@ -76,6 +77,8 @@ public TestJoinQuery(String joinOption) throws Exception { ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.defaultVal); if (joinOption.indexOf("NoBroadcast") >= 0) { + testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, + 1024 * 1024 + ""); testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "false"); } @@ -86,6 +89,8 @@ public TestJoinQuery(String joinOption) throws Exception { String.valueOf(256)); testingCluster.setAllTajoDaemonConfValue(ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.varname, String.valueOf(256)); + testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, + 1024 * 1024 + ""); } if (joinOption.indexOf("Sort") >= 0) { testingCluster.setAllTajoDaemonConfValue( @@ -94,6 +99,8 @@ public TestJoinQuery(String joinOption) throws Exception { String.valueOf(0)); testingCluster.setAllTajoDaemonConfValue(ConfVars.$EXECUTOR_GROUPBY_INMEMORY_HASH_THRESHOLD.varname, String.valueOf(0)); + testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, + 1024 * 1024 + ""); } } @@ -119,7 +126,7 @@ public static void classTearDown() throws SQLException { testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.varname, ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.defaultVal); testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, - ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.defaultVal); + 1024 * 1024 + ""); testingCluster.setAllTajoDaemonConfValue( ConfVars.$EXECUTOR_HASH_JOIN_SIZE_THRESHOLD.varname, diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java index d3cde3dfd5..9c7ac587ba 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java @@ -71,7 +71,7 @@ public void testComplexJoinsWithCaseWhen2() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest(prepare = { "CREATE TABLE customer_broad_parts (" + " c_nationkey INT4," + diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java index 0b42a6d39e..8dda11d0df 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java @@ -81,7 +81,7 @@ public final void testLeftOuterJoinWithConstantExpr1() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testLeftOuterJoinWithConstantExpr4() throws Exception { // outer join with constant projections @@ -95,7 +95,7 @@ public final void testLeftOuterJoinWithConstantExpr4() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testLeftOuterJoinWithConstantExpr5() throws Exception { // outer join with constant projections @@ -116,7 +116,7 @@ public final void testRightOuterJoin1() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testFullOuterJoin1() throws Exception { runSimpleTests(); @@ -417,7 +417,7 @@ public final void testJoinFilterOfRowPreservedTable1() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testLeftOuterJoin2() throws Exception { // large, large, small, small @@ -425,7 +425,7 @@ public final void testLeftOuterJoin2() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true, parameterized = true) + @Option(withExplain = true, withExplainGlobal = true, parameterized = true, sort = true) @SimpleTest() public final void testLeftOuterJoin3() throws Exception { // large, large, small, large, small, small diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSetSessionQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSetSessionQuery.java index 358afbc14f..05995d2e6f 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSetSessionQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSetSessionQuery.java @@ -65,16 +65,16 @@ public final void testSetTimezone() throws Exception { @Test public final void testSetSession1() throws Exception { - assertFalse(getClient().existSessionVariable("key1")); - executeString("SET SESSION key1 to true").close(); - assertTrue(getClient().existSessionVariable("key1")); + assertFalse(getClient().existSessionVariable("KEY1")); + executeString("SET SESSION KEY1 to true").close(); + assertTrue(getClient().existSessionVariable("KEY1")); - executeString("SET SESSION key1 to true").close(); - executeString("SET SESSION key2 to 'val1'").close(); - assertTrue(getClient().existSessionVariable("key1")); - assertTrue(getClient().existSessionVariable("key2")); - executeString("RESET key1").close(); - executeString("SET SESSION key2 to DEFAULT").close(); - assertFalse(getClient().existSessionVariable("key2")); + executeString("SET SESSION KEY2 to true").close(); + executeString("SET SESSION KEY2 to 'val1'").close(); + assertTrue(getClient().existSessionVariable("KEY1")); + assertTrue(getClient().existSessionVariable("KEY2")); + executeString("RESET KEY1").close(); + executeString("SET SESSION KEY2 to DEFAULT").close(); + assertFalse(getClient().existSessionVariable("KEY2")); } } \ No newline at end of file diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java index ce2278278b..7795d392a3 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java @@ -545,24 +545,24 @@ public final void testUnionWithCrossJoin() throws Exception { public final void testThreeJoinInUnion() throws Exception { // https://issues.apache.org/jira/browse/TAJO-881 ResultSet res = executeString( - "select orders.o_orderkey \n" + + "select o_orderkey from (select orders.o_orderkey \n" + "from orders\n" + "join lineitem on orders.o_orderkey = lineitem.l_orderkey\n" + "join customer on orders.o_custkey = customer.c_custkey\n" + "union all \n" + - "select nation.n_nationkey from nation" + "select nation.n_nationkey from nation) t order by o_orderkey" ); String expected = "o_orderkey\n" + "-------------------------------\n" + + "0\n" + + "1\n" + "1\n" + "1\n" + "2\n" + + "2\n" + "3\n" + "3\n" + - "0\n" + - "1\n" + - "2\n" + "3\n" + "4\n" + "5\n" + @@ -685,7 +685,7 @@ public void testComplexUnion1() throws Exception { } @Test - @Option(withExplain = true, withExplainGlobal = true) + @Option(withExplain = true, withExplainGlobal = true, sort = true) @SimpleTest public void testComplexUnion2() throws Exception { runSimpleTests(); diff --git a/tajo-core-tests/src/test/resources/queries/TestTablePartitions/case3.sql b/tajo-core-tests/src/test/resources/queries/TestTablePartitions/case3.sql index 6cb1ea142a..0164d4ceda 100644 --- a/tajo-core-tests/src/test/resources/queries/TestTablePartitions/case3.sql +++ b/tajo-core-tests/src/test/resources/queries/TestTablePartitions/case3.sql @@ -4,5 +4,10 @@ select key from lineitem as l, testQueryCasesOnColumnPartitionedTable as p where - (key = 45.0 or key = 38.0) and l.l_orderkey = p.col1; + (key = 45.0 or key = 38.0) and l.l_orderkey = p.col1 +order by + l.l_orderkey, + p.col1, + key + diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Hash.plan index 36a1b43c98..d43ff3245d 100644 --- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Hash.plan @@ -37,21 +37,90 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-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_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- +======================================================= +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_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] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) + +SCAN(3) on default.lineitem + => 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 [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.lineitem.l_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.region.r_regionkey (INT4) = default.lineitem.l_orderkey (INT4) + => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => 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(13) 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(5) 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_000007 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + [Enforcers] 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.region - 2: type=Broadcast, tables=default.supplier JOIN(11)(CROSS) => 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), 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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) @@ -66,23 +135,12 @@ JOIN(11)(CROSS) => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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: {(26) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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: {(26) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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(5) 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) + SCAN(16) 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)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.region.r_regionkey (INT4) = default.lineitem.l_orderkey (INT4) - => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.lineitem - => 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)} - 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_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Sort.plan index 36a1b43c98..d43ff3245d 100644 --- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTableAndJoin.1.Sort.plan @@ -37,21 +37,90 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-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_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- +======================================================= +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_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] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) + +SCAN(3) on default.lineitem + => 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 [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.lineitem.l_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.region.r_regionkey (INT4) = default.lineitem.l_orderkey (INT4) + => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + => out schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + => in schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000002 + => 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(13) 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +SCAN(5) 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_000007 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + [Enforcers] 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.region - 2: type=Broadcast, tables=default.supplier JOIN(11)(CROSS) => 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), 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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) @@ -66,23 +135,12 @@ JOIN(11)(CROSS) => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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: {(26) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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: {(26) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_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(5) 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) + SCAN(16) 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)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.region.r_regionkey (INT4) = default.lineitem.l_orderkey (INT4) - => 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4) + SCAN(15) on eb_0000000000000_0000_000003 => out schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} => in schema: {(19) 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), default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)} - SCAN(3) on default.lineitem - => 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)} - 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_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan index 3452c673d8..a61fb5e0dd 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} - => 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)} + => 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(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)} + 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)} + JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), 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)} 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(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)} + => 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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,156 @@ 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 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000003 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000006 +4: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 +8: eb_0000000000000_0000_000010 +9: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.customer - 1: type=Broadcast, tables=default.lineitem - 2: type=Broadcast, tables=default.orders - 3: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.nation + +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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (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) + => 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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(21) 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(20) 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_000008 [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) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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.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(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(22) on eb_0000000000000_0000_000006 + => 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_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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) SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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 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)} - => 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(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)} - 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(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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (INT4), default.part.p_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => 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)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan index d0bcedad7d..fd7cac14d9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} - => 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)} + => 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(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)} + 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)} + JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), 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)} 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(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)} + => 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 ------------------------------- ------------------------------------------------------------------------------- @@ -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(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(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_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 => 5 (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] ======================================================= [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.orders.o_custkey (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)} +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_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.lineitem.l_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(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_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.part.p_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)} +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] ======================================================= [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.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (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)} + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderkey (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)} + => 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(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)} + => 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_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.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] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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)} + => 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(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)} + => 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 - => 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)} + => 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_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] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} + => 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)} 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)} + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan index 3452c673d8..a61fb5e0dd 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} - => 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)} + => 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(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)} + 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)} + JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), 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)} 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(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)} + => 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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,156 @@ 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 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000003 +2: eb_0000000000000_0000_000004 +3: eb_0000000000000_0000_000006 +4: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000005 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 +8: eb_0000000000000_0000_000010 +9: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000003 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.customer - 1: type=Broadcast, tables=default.lineitem - 2: type=Broadcast, tables=default.orders - 3: type=Broadcast, tables=default.part + 0: type=Broadcast, tables=default.nation + +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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (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) + => 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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} + SCAN(21) 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(20) 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_000008 [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) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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.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(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(22) on eb_0000000000000_0000_000006 + => 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_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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) SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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 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)} - => 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(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)} - 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(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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (INT4), default.part.p_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000008 + => 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)} + SCAN(24) on eb_0000000000000_0000_000005 + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan index d0bcedad7d..fd7cac14d9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} - => 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)} + => 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(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)} + 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)} + JOIN(14)(INNER) + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), 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)} 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(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)} + => 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 ------------------------------- ------------------------------------------------------------------------------- @@ -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(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(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_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 => 5 (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] ======================================================= [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.orders.o_custkey (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)} +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_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.lineitem.l_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(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_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.part.p_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)} +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] ======================================================= [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.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (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)} + => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => target list: default.nation.n_name (TEXT), default.orders.o_orderkey (INT4) + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.nation.n_name (TEXT), default.orders.o_custkey (INT4), default.orders.o_orderkey (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)} + => 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(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)} + => 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_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.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] 8 => 9 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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)} + => 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(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)} + => 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 - => 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)} + => 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_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] 5 => 9 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.orders.o_custkey (INT4) = default.customer.c_custkey (INT4) + => Join Cond: default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4) => 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)} + => in schema: {(4) default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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)} + => 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)} 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)} + => out schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.nation.n_name (TEXT), default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan index 0120a2bc11..412c05bcb0 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan +++ b/tajo-core-tests/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 ------------------------------- ------------------------------------------------------------------------------- @@ -32,21 +32,21 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.a + 0: type=Broadcast, tables=default.b 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(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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan index afc6b062a6..f5ee800fe9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash_NoBroadcast.plan +++ b/tajo-core-tests/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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan index 0120a2bc11..412c05bcb0 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan +++ b/tajo-core-tests/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 ------------------------------- ------------------------------------------------------------------------------- @@ -32,21 +32,21 @@ Block Id: eb_0000000000000_0000_000003 [ROOT] ======================================================= [Enforcers] - 0: type=Broadcast, tables=default.a + 0: type=Broadcast, tables=default.b 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(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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan index afc6b062a6..f5ee800fe9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort_NoBroadcast.plan +++ b/tajo-core-tests/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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan index 466c0be2d4..41125d79c1 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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,7 +66,7 @@ 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.partsupp + 0: type=Broadcast, tables=default.nation 1: type=Broadcast, tables=default.region 2: type=Broadcast, tables=joins.part_ 3: type=Broadcast, tables=joins.supplier_ @@ -74,45 +74,45 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan index df2c8008e7..7ba3a64bee 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -91,7 +91,31 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (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_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (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) @@ -103,47 +127,46 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (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.partsupp.ps_suppkey (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)} + => 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(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)} + => 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(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_000004 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= -[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] -======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) [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)} +JOIN(14)(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(21) on eb_0000000000000_0000_000005 + => 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(20) on eb_0000000000000_0000_000004 + => 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_000007 [LEAF] @@ -157,29 +180,6 @@ 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] ======================================================= @@ -189,27 +189,27 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] [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) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (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)} + => 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(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)} + => 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_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) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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: {(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)} + => 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)} + SCAN(24) on eb_0000000000000_0000_000003 + => 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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan index 466c0be2d4..41125d79c1 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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,7 +66,7 @@ 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.partsupp + 0: type=Broadcast, tables=default.nation 1: type=Broadcast, tables=default.region 2: type=Broadcast, tables=joins.part_ 3: type=Broadcast, tables=joins.supplier_ @@ -74,45 +74,45 @@ Block Id: eb_0000000000000_0000_000009 [LEAF] SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan index df2c8008e7..7ba3a64bee 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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)} 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)} + => 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(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(14)(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(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)} + 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(13)(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)} + => 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(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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -91,7 +91,31 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 6 (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_000005 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 5 => 6 (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) @@ -103,47 +127,46 @@ Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=joins.part_.p_partkey (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.partsupp.ps_suppkey (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)} + => 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(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)} + => 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(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_000004 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= -[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] -======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32) [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)} +JOIN(14)(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(21) on eb_0000000000000_0000_000005 + => 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(20) on eb_0000000000000_0000_000004 + => 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_000007 [LEAF] @@ -157,29 +180,6 @@ 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] ======================================================= @@ -189,27 +189,27 @@ Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] [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) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (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)} + => 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(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)} + => 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_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) +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: joins.supplier_.s_acctbal (FLOAT8) (asc, nulls last),joins.supplier_.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),joins.part_.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => 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.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)} + => 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: {(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)} + => 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)} + SCAN(24) on eb_0000000000000_0000_000003 + => 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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan index da5cc8f808..28803b390b 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan @@ -3,45 +3,45 @@ explain SORT(10) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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 + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) + => 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(13)(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)} + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,127 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000008 +5: eb_0000000000000_0000_000009 +6: eb_0000000000000_0000_000010 +7: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) + +JOIN(13)(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) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => 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(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_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.p - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.r - 3: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.n + 1: type=Broadcast, tables=default.r + +JOIN(15)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (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, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} - 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)} - => 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(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)} - 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(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)} - 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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan index 9e28ed23ab..c1760af6b6 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(10) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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 + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) + => 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(13)(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)} + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) SCAN(5) on default.partsupp as ps => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) @@ -91,42 +91,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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 => 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: {(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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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,11 +99,11 @@ 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] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (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 => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -146,11 +111,11 @@ SCAN(0) on default.nation as n => 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] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[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) @@ -158,47 +123,82 @@ 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_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(13)(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 + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => 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)} + 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_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [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) +[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] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) -JOIN(15)(INNER) +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(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.s.s_nationkey (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_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(23) on eb_0000000000000_0000_000007 + => 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(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)} @@ -208,8 +208,8 @@ 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.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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)} + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan index da5cc8f808..28803b390b 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan @@ -3,45 +3,45 @@ explain SORT(10) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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 + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) + => 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(13)(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)} + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,127 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000008 +5: eb_0000000000000_0000_000009 +6: eb_0000000000000_0000_000010 +7: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) + +JOIN(13)(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) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => 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(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_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.p - 1: type=Broadcast, tables=default.ps - 2: type=Broadcast, tables=default.r - 3: type=Broadcast, tables=default.s + 0: type=Broadcast, tables=default.n + 1: type=Broadcast, tables=default.r + +JOIN(15)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (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, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} - 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)} - => 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(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)} - 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(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)} - 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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan index 9e28ed23ab..c1760af6b6 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(10) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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 + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(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(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_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)} - JOIN(14)(INNER) + => 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(13)(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)} + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) SCAN(5) on default.partsupp as ps => target list: default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4) @@ -91,42 +91,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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 => 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: {(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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.p.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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,11 +99,11 @@ 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] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (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 => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4) @@ -146,11 +111,11 @@ SCAN(0) on default.nation as n => 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] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) +[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) @@ -158,47 +123,82 @@ 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_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.ps.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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] 3 => 9 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) -JOIN(14)(INNER) +JOIN(13)(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 + => target list: default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4) + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(4) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_partkey (INT4), default.ps.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => 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)} + 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_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [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) +[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] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) -JOIN(15)(INNER) +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(23) on eb_0000000000000_0000_000007 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000004 + => 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.s.s_nationkey (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_000008 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.n.n_nationkey (INT4) + => target list: default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4) + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(10) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (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(23) on eb_0000000000000_0000_000007 + => 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(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)} @@ -208,8 +208,8 @@ 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.ps.ps_suppkey (INT4), default.ps.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), default.s.s_suppkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.s.s_acctbal (FLOAT8) (asc, nulls last),default.s.s_name (TEXT) (asc, nulls last),default.n.n_name (TEXT) (asc, nulls last),default.p.p_partkey (INT4) (asc, nulls last) 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)) + => Join Cond: (default.n.n_regionkey (INT4) = default.ps.ps_suppkey (INT4) AND default.s.s_suppkey (INT4) = default.ps.ps_suppkey (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)} + => in schema: {(11) default.n.n_name (TEXT), 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_phone (TEXT), default.s.s_suppkey (INT4)} 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)} + => out schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + => in schema: {(8) default.n.n_name (TEXT), default.n.n_regionkey (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), default.s.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} + => in schema: {(3) default.p.p_mfgr (TEXT), default.p.p_partkey (INT4), default.ps.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan index 3c8a90f902..cd38b6407c 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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(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.supplier.s_acctbal (FLOAT8), default.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)} + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,127 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000008 +5: eb_0000000000000_0000_000009 +6: eb_0000000000000_0000_000010 +7: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_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 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +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.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => 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(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_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.partsupp - 2: type=Broadcast, tables=default.region - 3: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.region + +JOIN(15)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} - 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)} - => 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(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)} - 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(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)} - 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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan index 441b576819..3721404da7 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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(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.supplier.s_acctbal (FLOAT8), default.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)} + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -91,42 +91,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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) - -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: {(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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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,11 +99,11 @@ 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] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (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) @@ -146,11 +111,11 @@ SCAN(3) 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_000007 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(4) on default.region => target list: default.region.r_regionkey (INT4) @@ -158,58 +123,93 @@ SCAN(4) on default.region => 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_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -JOIN(14)(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.supplier.s_acctbal (FLOAT8), default.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 + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => 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)} + 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_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [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) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (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) +[q_0000000000000_0000] 6 => 8 (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)} => 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 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000004 => 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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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_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) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(23) on eb_0000000000000_0000_000007 + => 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(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] 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.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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)} + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan index 3c8a90f902..cd38b6407c 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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(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.supplier.s_acctbal (FLOAT8), default.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)} + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -50,69 +50,127 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000009 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000008 +5: eb_0000000000000_0000_000009 +6: eb_0000000000000_0000_000010 +7: eb_0000000000000_0000_000011 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000009 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_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 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +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.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 + => 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(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_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.partsupp - 2: type=Broadcast, tables=default.region - 3: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.nation + 1: type=Broadcast, tables=default.region + +JOIN(15)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} - 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)} - => 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(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)} - 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(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)} - 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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000008 + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan index 441b576819..3721404da7 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort_NoBroadcast.plan @@ -3,45 +3,45 @@ explain SORT(6) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(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(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(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.supplier.s_acctbal (FLOAT8), default.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)} + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} 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)} - 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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -91,42 +91,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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) - -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: {(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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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,11 +99,11 @@ 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] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (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) @@ -146,11 +111,11 @@ SCAN(3) 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_000007 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(4) on default.region => target list: default.region.r_regionkey (INT4) @@ -158,58 +123,93 @@ SCAN(4) on default.region => 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_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -JOIN(14)(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.supplier.s_acctbal (FLOAT8), default.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 + => target list: default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(4) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000002 => 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)} + 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_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [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) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (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) +[q_0000000000000_0000] 6 => 8 (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)} => 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 + SCAN(21) on eb_0000000000000_0000_000005 => out schema: {(1) default.region.r_regionkey (INT4)} => in schema: {(1) default.region.r_regionkey (INT4)} - SCAN(22) on eb_0000000000000_0000_000006 + SCAN(20) on eb_0000000000000_0000_000004 => 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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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_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) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +JOIN(15)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_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), default.supplier.s_suppkey (INT4) + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (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(23) on eb_0000000000000_0000_000007 + => 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(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] 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.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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) @@ -217,16 +217,16 @@ Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] SORT(26) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) JOIN(16)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(10) default.nation.n_name (TEXT), default.part.p_mfgr (TEXT), default.part.p_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_phone (TEXT), default.supplier.s_suppkey (INT4)} 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)} + => out schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + => in schema: {(7) default.nation.n_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), default.supplier.s_suppkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000003 + => out schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000010 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan index 882929c89b..a5ceb2a511 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan @@ -32,24 +32,91 @@ 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_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +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_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.partsupp - 1: type=Broadcast, tables=default.supplier +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.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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[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) + +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: {(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] +======================================================= + +[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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) @@ -58,23 +125,12 @@ SORT(16) => 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(0) on default.part - => target list: default.part.p_partkey (INT4) + SCAN(15) on eb_0000000000000_0000_000004 => 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(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) + => 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: {(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(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)} + => 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] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan index 882929c89b..a5ceb2a511 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan @@ -32,24 +32,91 @@ 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_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +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_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.partsupp - 1: type=Broadcast, tables=default.supplier +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.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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[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) + +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: {(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] +======================================================= + +[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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last) @@ -58,23 +125,12 @@ SORT(16) => 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(0) on default.part - => target list: default.part.p_partkey (INT4) + SCAN(15) on eb_0000000000000_0000_000004 => 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(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) + => 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: {(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(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)} + => 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] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan index 5b37e9211a..de1c6e35a4 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan @@ -3,36 +3,36 @@ explain SORT(5) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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)} + JOIN(11)(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)} + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (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)} + 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 ------------------------------- ------------------------------------------------------------------------------- @@ -41,59 +41,117 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 -3: eb_0000000000000_0000_000009 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000006 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_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 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.partsupp - 2: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.nation + +JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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_000007 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000006 + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan index ba3164bcd2..57738c8f8f 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash_NoBroadcast.plan @@ -3,36 +3,36 @@ explain SORT(5) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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)} + JOIN(11)(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)} + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (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)} + 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 ------------------------------- ------------------------------------------------------------------------------- @@ -42,19 +42,19 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 + |-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 ------------------------------------------------------------------------------- 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 +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 @@ -66,7 +66,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -78,90 +78,90 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (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(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_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= -[Incoming] -[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) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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: {(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)} +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_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (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)} +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_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -JOIN(12)(INNER) +JOIN(11)(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 + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000002 => 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)} + 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_000006 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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)} +JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000005 + => 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(17) on eb_0000000000000_0000_000004 + => 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_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) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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) @@ -169,16 +169,16 @@ Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] SORT(21) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (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)} + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan index 5b37e9211a..de1c6e35a4 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan @@ -3,36 +3,36 @@ explain SORT(5) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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)} + JOIN(11)(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)} + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (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)} + 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 ------------------------------- ------------------------------------------------------------------------------- @@ -41,59 +41,117 @@ 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_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 -3: eb_0000000000000_0000_000009 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000006 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (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_000003 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_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 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) + +JOIN(11)(INNER) + => Join Cond: default.part.p_partkey (INT4) = default.partsupp.ps_partkey (INT4) + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.part - 1: type=Broadcast, tables=default.partsupp - 2: type=Broadcast, tables=default.supplier + 0: type=Broadcast, tables=default.nation + +JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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_000007 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(20) on eb_0000000000000_0000_000006 + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan index ba3164bcd2..57738c8f8f 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort_NoBroadcast.plan @@ -3,36 +3,36 @@ explain SORT(5) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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)} + 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)} + JOIN(11)(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)} + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (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)} + 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 ------------------------------- ------------------------------------------------------------------------------- @@ -42,19 +42,19 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 + |-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 ------------------------------------------------------------------------------- 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 +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 @@ -66,7 +66,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (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) @@ -78,90 +78,90 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (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(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_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= -[Incoming] -[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) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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: {(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)} +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_000004 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (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)} +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_000005 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -JOIN(12)(INNER) +JOIN(11)(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 + => target list: default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4) + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(3) default.part.p_partkey (INT4), default.partsupp.ps_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000002 => 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)} + 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_000006 [LEAF] +Block Id: eb_0000000000000_0000_000006 [INTERMEDIATE] ======================================================= +[Incoming] +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) + [Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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)} +JOIN(12)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4) + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(6) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(18) on eb_0000000000000_0000_000005 + => 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(17) on eb_0000000000000_0000_000004 + => 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_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) +[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (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) @@ -169,16 +169,16 @@ Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] SORT(21) => Sort Keys: default.supplier.s_acctbal (FLOAT8) (asc, nulls last),default.supplier.s_name (TEXT) (asc, nulls last),default.part.p_partkey (INT4) (asc, nulls last),default.nation.n_name (TEXT) (asc, nulls last) JOIN(13)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (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)} + => in schema: {(6) default.nation.n_name (TEXT), default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (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)} + => out schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + => in schema: {(4) default.nation.n_name (TEXT), default.supplier.s_acctbal (FLOAT8), default.supplier.s_name (TEXT), default.supplier.s_suppkey (INT4)} + SCAN(19) on eb_0000000000000_0000_000003 + => out schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} + => in schema: {(2) default.part.p_partkey (INT4), default.partsupp.ps_suppkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan index 7935c1806d..e7a3684fb1 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan @@ -36,24 +36,99 @@ 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_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +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_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part +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.part.p_partkey (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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)} + 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)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (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)} + +======================================================= +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) + +[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) SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.a.o_custkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last) @@ -62,31 +137,12 @@ SORT(18) => 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) + 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)} - 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_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000003 => 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)} + => 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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan index 7935c1806d..e7a3684fb1 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan @@ -36,24 +36,99 @@ 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_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +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_000005 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [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) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.lineitem.l_partkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders - 1: type=Broadcast, tables=default.part +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.part.p_partkey (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (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)} + 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)} + +======================================================= +Block Id: eb_0000000000000_0000_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.a.o_orderkey (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)} + +======================================================= +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) + +[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) SORT(18) => Sort Keys: default.lineitem.l_orderkey (INT4) (asc, nulls last),default.a.o_custkey (INT4) (asc, nulls last),default.part.p_name (TEXT) (asc, nulls last) @@ -62,31 +137,12 @@ SORT(18) => 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) + 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)} - 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_partkey (INT4) = default.part.p_partkey (INT4) - => target list: default.lineitem.l_orderkey (INT4), default.part.p_name (TEXT) + => in schema: {(2) default.a.o_custkey (INT4), default.a.o_orderkey (INT4)} + SCAN(16) on eb_0000000000000_0000_000003 => 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)} + => 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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan index 20fe5ee000..cbd07fcfc9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan @@ -73,25 +73,157 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000008 + |-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_000008 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 -4: eb_0000000000000_0000_000012 +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 +12: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.part +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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_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)} + +======================================================= +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] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[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) + => 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(21)(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(27) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(26) 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_000004 [LEAF] +======================================================= + +[Outgoing] +[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 + => 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +JOIN(23)(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(29) on eb_0000000000000_0000_000004 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(28) 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.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) GROUP_BY(32)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) @@ -111,30 +243,51 @@ GROUP_BY(32)(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(8) on default.part - => target list: default.part.p_partkey (INT4) + SCAN(31) on eb_0000000000000_0000_000007 => 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) + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(30) 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: {(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: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[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.f.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(33) 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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.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) -[Enforcers] - 0: type=Broadcast, tables=default.a - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.part - GROUP_BY(36)() => exprs: (sum(default.b.l_quantity (FLOAT8))) => target list: ?sum_12 (FLOAT8) @@ -147,53 +300,12 @@ GROUP_BY(36)() => 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)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + SCAN(35) on eb_0000000000000_0000_000009 => 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(33) 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(23)(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) + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(34) on eb_0000000000000_0000_000005 => 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)} - => 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(21)(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(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)} + => 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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan index 20fe5ee000..cbd07fcfc9 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan @@ -73,25 +73,157 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 |-eb_0000000000000_0000_000010 - |-eb_0000000000000_0000_000008 + |-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_000008 -2: eb_0000000000000_0000_000010 -3: eb_0000000000000_0000_000011 -4: eb_0000000000000_0000_000012 +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 +12: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.l_partkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.part +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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_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)} + +======================================================= +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] 2 => 3 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) + +[Outgoing] +[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) + => 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(21)(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(27) on eb_0000000000000_0000_000002 + => out schema: {(1) default.part.p_partkey (INT4)} + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(26) 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_000004 [LEAF] +======================================================= + +[Outgoing] +[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 + => 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 8 (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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32) + +JOIN(23)(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(29) on eb_0000000000000_0000_000004 + => out schema: {(1) default.c.o_orderkey (INT4)} + => in schema: {(1) default.c.o_orderkey (INT4)} + SCAN(28) 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.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) GROUP_BY(32)(l_orderkey) => exprs: (avg(default.e.l_quantity (FLOAT8))) @@ -111,30 +243,51 @@ GROUP_BY(32)(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(8) on default.part - => target list: default.part.p_partkey (INT4) + SCAN(31) on eb_0000000000000_0000_000007 => 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) + => in schema: {(1) default.part.p_partkey (INT4)} + SCAN(30) 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: {(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: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[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.f.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(33) 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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.e.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) -[Enforcers] - 0: type=Broadcast, tables=default.a - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.part - GROUP_BY(36)() => exprs: (sum(default.b.l_quantity (FLOAT8))) => target list: ?sum_12 (FLOAT8) @@ -147,53 +300,12 @@ GROUP_BY(36)() => 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)} - TABLE_SUBQUERY(14) as default.f - => Targets: default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4) + SCAN(35) on eb_0000000000000_0000_000009 => 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(33) 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(23)(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) + => in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)} + SCAN(34) on eb_0000000000000_0000_000005 => 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)} - => 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(21)(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(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)} + => 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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan index f19b5cda83..7848e95d5a 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan +++ b/tajo-core-tests/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)} @@ -27,6 +23,10 @@ JOIN(11)(INNER) => 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(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.n + 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)} @@ -80,6 +76,10 @@ JOIN(11)(INNER) => 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(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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan index 59f15f11b1..2f7da9984d 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash_NoBroadcast.plan +++ b/tajo-core-tests/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)} @@ -27,6 +23,10 @@ JOIN(11)(INNER) => 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(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,26 +35,26 @@ 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.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO @@ -63,11 +63,11 @@ SCAN(0) on default.nation as n => 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] +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.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -75,15 +75,15 @@ 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_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.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (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) +[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 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(13) on eb_0000000000000_0000_000002 => 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] +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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan index f19b5cda83..7848e95d5a 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan +++ b/tajo-core-tests/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)} @@ -27,6 +23,10 @@ JOIN(11)(INNER) => 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(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.n + 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)} @@ -80,6 +76,10 @@ JOIN(11)(INNER) => 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(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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan index 59f15f11b1..2f7da9984d 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort_NoBroadcast.plan +++ b/tajo-core-tests/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)} @@ -27,6 +23,10 @@ JOIN(11)(INNER) => 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(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,26 +35,26 @@ 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.n.n_regionkey (INT4), num=32) SCAN(0) on default.nation as n => filter: default.n.n_name (TEXT) = MOROCCO @@ -63,11 +63,11 @@ SCAN(0) on default.nation as n => 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] +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.r.r_regionkey (INT4), num=32) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -75,15 +75,15 @@ 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_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.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (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) +[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 + SCAN(14) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(13) on eb_0000000000000_0000_000001 + SCAN(13) on eb_0000000000000_0000_000002 => 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] +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-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan index dc04a934e2..65fb49174a 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan @@ -1,41 +1,41 @@ explain ------------------------------- JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -43,27 +43,33 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000005 +2: eb_0000000000000_0000_000006 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.ps + 0: type=Broadcast, tables=default.n 1: type=Broadcast, tables=default.r - 2: type=Broadcast, tables=default.s -JOIN(14)(INNER) +JOIN(13)(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)} + => target list: 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: {(5) 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: {(6) 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)} 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)} @@ -86,19 +92,42 @@ 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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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(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)} + 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +JOIN(14)(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.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.ps.ps_suppkey (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: {(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(20) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan index 7d89fa2821..ef458aa80d 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash_NoBroadcast.plan @@ -1,41 +1,41 @@ explain ------------------------------- JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -44,54 +44,30 @@ 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_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 +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_000001 [LEAF] -======================================================= - -[Outgoing] -[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) - => 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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_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_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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (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) @@ -100,11 +76,11 @@ SCAN(0) on default.nation as n => 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 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (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) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -112,38 +88,15 @@ 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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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) - -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.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] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (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) +[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.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -158,32 +111,79 @@ 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(19) on eb_0000000000000_0000_000005 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 + SCAN(16) on eb_0000000000000_0000_000002 => 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_000001 [LEAF] +======================================================= + +[Outgoing] +[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), 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 [INTERMEDIATE] +======================================================= + +[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) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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(19) on eb_0000000000000_0000_000004 + => 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(18) 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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: {(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)} + => 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(20) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan index dc04a934e2..65fb49174a 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan @@ -1,41 +1,41 @@ explain ------------------------------- JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -43,27 +43,33 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000005 +2: eb_0000000000000_0000_000006 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.ps + 0: type=Broadcast, tables=default.n 1: type=Broadcast, tables=default.r - 2: type=Broadcast, tables=default.s -JOIN(14)(INNER) +JOIN(13)(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)} + => target list: 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: {(5) 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: {(6) 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)} 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)} @@ -86,19 +92,42 @@ 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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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(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)} + 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) + +JOIN(14)(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.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.ps.ps_suppkey (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: {(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(20) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan index 7d89fa2821..ef458aa80d 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort_NoBroadcast.plan @@ -1,41 +1,41 @@ explain ------------------------------- JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.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: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -44,54 +44,30 @@ 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_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 +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_000001 [LEAF] -======================================================= - -[Outgoing] -[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) - => 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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_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_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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (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) @@ -100,11 +76,11 @@ SCAN(0) on default.nation as n => 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 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (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) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -112,38 +88,15 @@ 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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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) - -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.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] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (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) +[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.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -158,32 +111,79 @@ 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(19) on eb_0000000000000_0000_000005 + SCAN(17) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(18) on eb_0000000000000_0000_000004 + SCAN(16) on eb_0000000000000_0000_000002 => 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_000001 [LEAF] +======================================================= + +[Outgoing] +[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), 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 [INTERMEDIATE] +======================================================= + +[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) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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(19) on eb_0000000000000_0000_000004 + => 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(18) 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) JOIN(14)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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: {(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)} + => 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(20) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.result b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.result index da3c1e449d..c9c76faf9f 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.result +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.result @@ -1,5 +1,5 @@ n_nationkey,n_name,n_regionkey,n_comment,ps_availqty,s_suppkey ------------------------------- 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,8895,3 -5,ETHIOPIA,0,ven packages wake quickly. regu,3325,2 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,4651,4 +5,ETHIOPIA,0,ven packages wake quickly. regu,3325,2 diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan index 7c48e473a8..0d9f1c1138 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan @@ -3,41 +3,41 @@ explain SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) 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.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) 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.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: {(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.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -45,64 +45,93 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000005 +2: eb_0000000000000_0000_000006 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.ps + 0: type=Broadcast, tables=default.n 1: type=Broadcast, tables=default.r - 2: type=Broadcast, tables=default.s + +JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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(13)(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(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(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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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(13)(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(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)} - JOIN(14)(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(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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(22) on eb_0000000000000_0000_000006 + => 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(21) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan index 554ee76661..c41813aac5 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan @@ -3,41 +3,41 @@ explain SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) 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.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) 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.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: {(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.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -46,54 +46,30 @@ 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_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 +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_000001 [LEAF] -======================================================= - -[Outgoing] -[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) - => 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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_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_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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (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) @@ -102,11 +78,11 @@ SCAN(0) on default.nation as n => 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 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (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) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -114,38 +90,15 @@ 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_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(14)(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(18) on eb_0000000000000_0000_000002 - => 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(17) 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.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) +[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.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -160,34 +113,81 @@ 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(20) on eb_0000000000000_0000_000005 + SCAN(18) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000002 => 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_000001 [LEAF] +======================================================= + +[Outgoing] +[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), 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 [INTERMEDIATE] +======================================================= + +[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) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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(20) on eb_0000000000000_0000_000004 + => 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(19) 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(22) on eb_0000000000000_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(21) 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)} + => 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(21) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan index 7c48e473a8..0d9f1c1138 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan @@ -3,41 +3,41 @@ explain SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) 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.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) 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.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: {(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.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -45,64 +45,93 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000006 + |-eb_0000000000000_0000_000005 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000005 +2: eb_0000000000000_0000_000006 +3: eb_0000000000000_0000_000007 +4: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000007 [ROOT] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.ps + 0: type=Broadcast, tables=default.n 1: type=Broadcast, tables=default.r - 2: type=Broadcast, tables=default.s + +JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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(13)(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(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(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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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(13)(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(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)} - JOIN(14)(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(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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(22) on eb_0000000000000_0000_000006 + => 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(21) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan index 554ee76661..c41813aac5 100644 --- a/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan @@ -3,41 +3,41 @@ explain SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} - 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)} - => in schema: {(4) 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.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(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) + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(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(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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)} + 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)} + => in schema: {(4) 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.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: {(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.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)} + => 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(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 ------------------------------- ------------------------------------------------------------------------------- @@ -46,54 +46,30 @@ 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_000005 |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000005 -5: eb_0000000000000_0000_000003 +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_000001 [LEAF] -======================================================= - -[Outgoing] -[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) - => 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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_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_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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 2 => 4 (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) @@ -102,11 +78,11 @@ SCAN(0) on default.nation as n => 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 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (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) SCAN(1) on default.region as r => target list: default.r.r_regionkey (INT4) @@ -114,38 +90,15 @@ 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_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000004 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.n.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32) - -JOIN(14)(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(18) on eb_0000000000000_0000_000002 - => 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(17) 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.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) +[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.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT) @@ -160,34 +113,81 @@ 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(20) on eb_0000000000000_0000_000005 + SCAN(18) on eb_0000000000000_0000_000003 => out schema: {(1) default.r.r_regionkey (INT4)} => in schema: {(1) default.r.r_regionkey (INT4)} - SCAN(19) on eb_0000000000000_0000_000004 + SCAN(17) on eb_0000000000000_0000_000002 => 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_000001 [LEAF] +======================================================= + +[Outgoing] +[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), 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 [INTERMEDIATE] +======================================================= + +[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) + +[Outgoing] +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) + +JOIN(14)(INNER) + => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => target list: 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: {(5) 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: {(6) 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(20) on eb_0000000000000_0000_000004 + => 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(19) 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_000006 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 6 => 7 (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_000007 [ROOT] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.s.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.ps.ps_suppkey (INT4), num=32) SELECTION(12) => Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4) JOIN(15)(INNER) - => Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4) + => 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.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)} + => in schema: {(7) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (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(22) on eb_0000000000000_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(21) 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)} + => 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(21) on eb_0000000000000_0000_000005 + => out schema: {(5) 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: {(5) 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)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan index 63ac101754..c0c3fc11e8 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan @@ -32,24 +32,64 @@ 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 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +1: eb_0000000000000_0000_000003 +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_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.supplier + +JOIN(8)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => 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(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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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, nulls last),s1 (TEXT) (asc, nulls last) @@ -58,23 +98,12 @@ SORT(15) => 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_nationkey (INT4), default.region.r_name (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - SCAN(3) on default.supplier - => target list: default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + SCAN(14) on eb_0000000000000_0000_000004 => 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)} - JOIN(8)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => in schema: {(2) default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 => 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(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)} + => in schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan index 63ac101754..c0c3fc11e8 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan @@ -32,24 +32,64 @@ 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 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 -3: eb_0000000000000_0000_000007 +1: eb_0000000000000_0000_000003 +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_000003 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=RANGE_SHUFFLE, key=default.region.r_name (TEXT), s1 (TEXT), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) [Enforcers] 0: type=Broadcast, tables=default.region - 1: type=Broadcast, tables=default.supplier + +JOIN(8)(INNER) + => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) + => 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(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_000004 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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, nulls last),s1 (TEXT) (asc, nulls last) @@ -58,23 +98,12 @@ SORT(15) => 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_nationkey (INT4), default.region.r_name (TEXT), default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} - SCAN(3) on default.supplier - => target list: default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4) + SCAN(14) on eb_0000000000000_0000_000004 => 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)} - JOIN(8)(INNER) - => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4) - => target list: default.nation.n_nationkey (INT4), default.region.r_name (TEXT) + => in schema: {(2) default.supplier.s_name (TEXT), default.supplier.s_nationkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000003 => 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(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)} + => in schema: {(2) default.nation.n_nationkey (INT4), default.region.r_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan index 894197b40a..48b756d84b 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan @@ -36,24 +36,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-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_000002 +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] 1 => 5 (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 => 5 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + [Outgoing] [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 SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc, nulls last),s1 (TEXT) (asc, nulls last) @@ -79,12 +110,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), default.supplier.s_acctbal (FLOAT8), default.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(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) + 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(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) + 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan index 894197b40a..48b756d84b 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan @@ -36,24 +36,55 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000007) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-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_000002 +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] 1 => 5 (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 => 5 (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_000005 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) + [Outgoing] [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 SORT(17) => Sort Keys: default.region.r_name (TEXT) (asc, nulls last),s1 (TEXT) (asc, nulls last) @@ -79,12 +110,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), default.supplier.s_acctbal (FLOAT8), default.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(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) + 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(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) + 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan index ceb96f9959..2f2ca890fb 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan @@ -30,20 +30,51 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.l_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)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_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)} + ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_orderkey (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.a.l_orderkey (INT4) = default.c.c_custkey (INT4) @@ -60,14 +91,12 @@ 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) + SCAN(12) on eb_0000000000000_0000_000002 => 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) + => 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: {(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: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan index ceb96f9959..2f2ca890fb 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan @@ -30,20 +30,51 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.l_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)} + +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_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)} + ======================================================= Block Id: eb_0000000000000_0000_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_orderkey (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.a.l_orderkey (INT4) = default.c.c_custkey (INT4) @@ -60,14 +91,12 @@ 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) + SCAN(12) on eb_0000000000000_0000_000002 => 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) + => 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: {(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: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Hash.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Hash.plan index 2c990f8ea3..0e93c56467 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Hash.plan @@ -33,20 +33,59 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as c + => 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 => 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_0000000000000_0000_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.c - 1: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r JOIN(10)(INNER) => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) @@ -62,20 +101,10 @@ JOIN(10)(INNER) => 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)} - TABLE_SUBQUERY(3) as default.n - => Targets: default.n.n_nationkey (INT4) + SCAN(13) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.customer as c - => 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) + => in schema: {(1) default.n.n_nationkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000001 => 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Sort.plan b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Sort.plan index 2c990f8ea3..0e93c56467 100644 --- a/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Sort.plan @@ -33,20 +33,59 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) + +SCAN(0) on default.customer as c + => 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 => 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_0000000000000_0000_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.c.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.n.n_nationkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.c - 1: type=Broadcast, tables=default.r + 0: type=Broadcast, tables=default.r JOIN(10)(INNER) => Join Cond: default.r.r_regionkey (INT4) = default.c.c_custkey (INT4) @@ -62,20 +101,10 @@ JOIN(10)(INNER) => 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)} - TABLE_SUBQUERY(3) as default.n - => Targets: default.n.n_nationkey (INT4) + SCAN(13) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.customer as c - => 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) + => in schema: {(1) default.n.n_nationkey (INT4)} + SCAN(12) on eb_0000000000000_0000_000001 => 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan index 8c98e69aea..62c8cbbd8e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan +++ b/tajo-core-tests/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(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)} + 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)} 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.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_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.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_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) +[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) @@ -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.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)} + 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] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan index 8c98e69aea..62c8cbbd8e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash_NoBroadcast.plan +++ b/tajo-core-tests/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(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)} + 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)} 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.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_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.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_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) +[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) @@ -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.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)} + 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] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan index 8c98e69aea..62c8cbbd8e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan +++ b/tajo-core-tests/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(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)} + 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)} 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.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_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.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_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) +[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) @@ -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.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)} + 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] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan index 8c98e69aea..62c8cbbd8e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort_NoBroadcast.plan +++ b/tajo-core-tests/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(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)} + 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)} 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.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_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.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_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) +[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) @@ -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.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)} + 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] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Hash.plan index 0c6e74c4d7..68050ca979 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Hash.plan @@ -23,23 +23,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -48,14 +77,12 @@ SORT(10) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Sort.plan index 0c6e74c4d7..68050ca979 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Sort.plan @@ -23,23 +23,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -48,14 +77,12 @@ SORT(10) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Hash.plan index 45923dc04f..6660a4d718 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Hash.plan @@ -38,21 +38,90 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SCAN(1) on default.customer as b + => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_custkey (INT4), num=32) + +SCAN(3) on default.orders as c + => target list: default.c.o_custkey (INT4) + => out schema: {(1) default.c.o_custkey (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_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.b.c_custkey (INT4) = default.c.o_custkey (INT4) + => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => in schema: {(4) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.c.o_custkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(1) default.c.o_custkey (INT4)} + => in schema: {(1) default.c.o_custkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => in schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.a.l_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)} + ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d + 0: type=Broadcast, tables=default.d JOIN(11)(LEFT_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.d.n_nationkey (INT4) @@ -68,23 +137,12 @@ JOIN(11)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) => out schema: {(4) default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} => in schema: {(4) default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.c_custkey (INT4) = default.c.o_custkey (INT4) - => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + SCAN(16) on eb_0000000000000_0000_000004 => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - => in schema: {(4) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.c.o_custkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_custkey (INT4) - => out schema: {(1) default.c.o_custkey (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.customer as b - => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) - => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - => 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(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) + => in schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 => 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)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Sort.plan index 45923dc04f..6660a4d718 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Sort.plan @@ -38,21 +38,90 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000008) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 + |-eb_0000000000000_0000_000004 + |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000007 -2: eb_0000000000000_0000_000008 +1: eb_0000000000000_0000_000002 +2: eb_0000000000000_0000_000003 +3: eb_0000000000000_0000_000004 +4: eb_0000000000000_0000_000001 +5: eb_0000000000000_0000_000007 +6: eb_0000000000000_0000_000008 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +SCAN(1) on default.customer as b + => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => 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 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_custkey (INT4), num=32) + +SCAN(3) on default.orders as c + => target list: default.c.o_custkey (INT4) + => out schema: {(1) default.c.o_custkey (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_000004 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) +[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.c.o_custkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + +JOIN(9)(LEFT_OUTER) + => Join Cond: default.b.c_custkey (INT4) = default.c.o_custkey (INT4) + => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => in schema: {(4) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.c.o_custkey (INT4)} + SCAN(14) on eb_0000000000000_0000_000003 + => out schema: {(1) default.c.o_custkey (INT4)} + => in schema: {(1) default.c.o_custkey (INT4)} + SCAN(13) on eb_0000000000000_0000_000002 + => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + => in schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.a.l_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)} + ======================================================= Block Id: eb_0000000000000_0000_000007 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 7 (type=HASH_SHUFFLE, key=default.a.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 7 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d + 0: type=Broadcast, tables=default.d JOIN(11)(LEFT_OUTER) => Join Cond: default.a.l_orderkey (INT4) = default.d.n_nationkey (INT4) @@ -68,23 +137,12 @@ JOIN(11)(LEFT_OUTER) => target list: default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) => out schema: {(4) default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} => in schema: {(4) default.a.l_orderkey (INT4), default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - JOIN(9)(LEFT_OUTER) - => Join Cond: default.b.c_custkey (INT4) = default.c.o_custkey (INT4) - => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) + SCAN(16) on eb_0000000000000_0000_000004 => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - => in schema: {(4) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.c.o_custkey (INT4)} - SCAN(3) on default.orders as c - => target list: default.c.o_custkey (INT4) - => out schema: {(1) default.c.o_custkey (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.customer as b - => target list: default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4) - => out schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} - => 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(0) on default.lineitem as a - => target list: default.a.l_orderkey (INT4) + => in schema: {(3) default.b.c_custkey (INT4), default.b.c_name (TEXT), default.b.c_nationkey (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 => 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)} + => in schema: {(1) default.a.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000008 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan index 637657bd82..e392c04371 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan @@ -10,41 +10,41 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} SCAN(5) on default.orders as d => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) => 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(14)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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), 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: {(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.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)} + => 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)} @@ -56,73 +56,189 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-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_000011 -2: eb_0000000000000_0000_000012 +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_000008 +7: eb_0000000000000_0000_000009 +8: eb_0000000000000_0000_000010 +9: eb_0000000000000_0000_000011 +10: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000011 [ROOT] +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_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)} + ======================================================= +Block Id: eb_0000000000000_0000_000003 [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) + +[Outgoing] +[q_0000000000000_0000] 3 => 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 + => 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] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (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) + => 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(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d - 3: type=Broadcast, tables=default.e - 4: type=Broadcast, tables=default.f + 0: type=Broadcast, tables=default.e + +JOIN(15)(LEFT_OUTER) + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + SCAN(5) on default.orders as d + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) + => 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)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) + +JOIN(16)(LEFT_OUTER) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(26) on eb_0000000000000_0000_000008 + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000005 + => 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: {(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.f.p_partkey (INT4), num=32) + +SCAN(9) on default.part as f + => target list: default.f.p_name (TEXT), default.f.p_partkey (INT4) + => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} + => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.f.p_partkey (INT4), num=32) JOIN(17)(LEFT_OUTER) => Join Cond: default.f.p_partkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.e.n_name (TEXT), default.f.p_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.e.n_name (TEXT), default.f.p_name (TEXT)} => in schema: {(10) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4)} - SCAN(9) on default.part as f - => target list: default.f.p_name (TEXT), default.f.p_partkey (INT4) + SCAN(28) on eb_0000000000000_0000_000010 => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} - => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} - JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => in schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000009 => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} - JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(5) on default.orders as d - => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => 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.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: {(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.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)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000012 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan index 04d0ae6e28..a21d2b01de 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash_NoBroadcast.plan @@ -10,41 +10,41 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} SCAN(5) on default.orders as d => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) => 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(14)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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), 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: {(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.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)} + => 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)} @@ -59,23 +59,23 @@ 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_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +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 @@ -83,12 +83,24 @@ Order of Execution 12: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) @@ -96,11 +108,34 @@ SCAN(1) on default.lineitem as b => 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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000003 [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) + +[Outgoing] +[q_0000000000000_0000] 3 => 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 + => 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] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (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(3) on default.orders as c => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) @@ -108,132 +143,97 @@ SCAN(3) 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_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= -[Incoming] -[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] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) -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(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(5) on default.orders as d + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) + => 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)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.e.n_nationkey (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(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[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 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) JOIN(14)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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: {(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(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_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) - -SCAN(5) on default.orders as d - => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => 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)} + => 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)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000006 + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000007 + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000006 => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000005 - => 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: {(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)} - -======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) - -SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} SCAN(26) on eb_0000000000000_0000_000008 - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000007 - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000005 + => 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: {(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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [LEAF] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan index 637657bd82..e392c04371 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan @@ -10,41 +10,41 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} SCAN(5) on default.orders as d => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) => 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(14)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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), 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: {(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.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)} + => 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)} @@ -56,73 +56,189 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000012) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000012 |-eb_0000000000000_0000_000011 + |-eb_0000000000000_0000_000010 + |-eb_0000000000000_0000_000009 + |-eb_0000000000000_0000_000008 + |-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_000011 -2: eb_0000000000000_0000_000012 +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_000008 +7: eb_0000000000000_0000_000009 +8: eb_0000000000000_0000_000010 +9: eb_0000000000000_0000_000011 +10: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000011 [ROOT] +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_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)} + ======================================================= +Block Id: eb_0000000000000_0000_000003 [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) + +[Outgoing] +[q_0000000000000_0000] 3 => 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 + => 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] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.c.o_orderkey (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)} + +======================================================= +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) + +[Outgoing] +[q_0000000000000_0000] 5 => 9 (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) + => 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(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000008 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c - 2: type=Broadcast, tables=default.d - 3: type=Broadcast, tables=default.e - 4: type=Broadcast, tables=default.f + 0: type=Broadcast, tables=default.e + +JOIN(15)(LEFT_OUTER) + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + SCAN(5) on default.orders as d + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) + => 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)} + +======================================================= +Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] +======================================================= + +[Incoming] +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) + +[Outgoing] +[q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) + +JOIN(16)(LEFT_OUTER) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(26) on eb_0000000000000_0000_000008 + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000005 + => 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: {(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)} + +======================================================= +Block Id: eb_0000000000000_0000_000010 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.f.p_partkey (INT4), num=32) + +SCAN(9) on default.part as f + => target list: default.f.p_name (TEXT), default.f.p_partkey (INT4) + => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} + => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} + +======================================================= +Block Id: eb_0000000000000_0000_000011 [ROOT] +======================================================= + +[Incoming] +[q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.f.p_partkey (INT4), num=32) JOIN(17)(LEFT_OUTER) => Join Cond: default.f.p_partkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.e.n_name (TEXT), default.f.p_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.e.n_name (TEXT), default.f.p_name (TEXT)} => in schema: {(10) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4)} - SCAN(9) on default.part as f - => target list: default.f.p_name (TEXT), default.f.p_partkey (INT4) + SCAN(28) on eb_0000000000000_0000_000010 => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} - => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} - JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => in schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} + SCAN(27) on eb_0000000000000_0000_000009 => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} - JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(5) on default.orders as d - => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => 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.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: {(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.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)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} ======================================================= Block Id: eb_0000000000000_0000_000012 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan index 04d0ae6e28..a21d2b01de 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort_NoBroadcast.plan @@ -10,41 +10,41 @@ JOIN(17)(LEFT_OUTER) => out schema: {(2) default.f.p_name (TEXT), default.f.p_partkey (INT4)} => in schema: {(9) default.f.p_brand (TEXT), default.f.p_comment (TEXT), default.f.p_container (TEXT), default.f.p_mfgr (TEXT), default.f.p_name (TEXT), default.f.p_partkey (INT4), default.f.p_retailprice (FLOAT8), default.f.p_size (INT4), default.f.p_type (TEXT)} JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} SCAN(5) on default.orders as d => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) => 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(14)(LEFT_OUTER) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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), 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: {(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.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)} + => 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)} @@ -59,23 +59,23 @@ 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_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 - |-eb_0000000000000_0000_000004 - |-eb_0000000000000_0000_000003 - |-eb_0000000000000_0000_000002 + |-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 +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 @@ -83,12 +83,24 @@ Order of Execution 12: eb_0000000000000_0000_000012 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 3 (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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 4 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) SCAN(1) on default.lineitem as b => target list: default.b.l_orderkey (INT4) @@ -96,11 +108,34 @@ SCAN(1) on default.lineitem as b => 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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000003 [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) + +[Outgoing] +[q_0000000000000_0000] 3 => 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 + => 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] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (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(3) on default.orders as c => target list: default.c.o_orderdate (TEXT), default.c.o_orderkey (INT4) @@ -108,132 +143,97 @@ SCAN(3) 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_000004 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= -[Incoming] -[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] 4 => 5 (type=HASH_SHUFFLE, key=default.b.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) -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(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(5) on default.orders as d + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) + => 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)} ======================================================= -Block Id: eb_0000000000000_0000_000001 [LEAF] +Block Id: eb_0000000000000_0000_000007 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.e.n_nationkey (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(7) on default.nation as e + => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000005 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[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 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) JOIN(14)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.b.l_orderkey (INT4) + => Join Cond: default.b.l_orderkey (INT4) = default.c.o_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: {(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(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_000006 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) - -SCAN(5) on default.orders as d - => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => 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)} + => 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)} ======================================================= -Block Id: eb_0000000000000_0000_000007 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) -[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) JOIN(15)(LEFT_OUTER) - => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4) - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(24) on eb_0000000000000_0000_000006 + => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => target list: default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(4) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(24) on eb_0000000000000_0000_000007 + => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + SCAN(23) on eb_0000000000000_0000_000006 => out schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} => in schema: {(2) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - SCAN(23) on eb_0000000000000_0000_000005 - => 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: {(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)} - -======================================================= -Block Id: eb_0000000000000_0000_000008 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) - -SCAN(7) on default.nation as e - => target list: default.e.n_name (TEXT), default.e.n_nationkey (INT4) - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(4) default.e.n_comment (TEXT), default.e.n_name (TEXT), default.e.n_nationkey (INT4), default.e.n_regionkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE] ======================================================= [Incoming] -[q_0000000000000_0000] 7 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) -[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 5 => 9 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) [Outgoing] [q_0000000000000_0000] 9 => 11 (type=HASH_SHUFFLE, key=default.d.o_orderkey (INT4), num=32) JOIN(16)(LEFT_OUTER) - => Join Cond: default.d.o_orderkey (INT4) = default.e.n_nationkey (INT4) + => Join Cond: default.a.c_custkey (INT4) = default.d.o_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), default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT) => out schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} - => in schema: {(9) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT), default.e.n_nationkey (INT4)} + => in schema: {(8) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} SCAN(26) on eb_0000000000000_0000_000008 - => out schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - => in schema: {(2) default.e.n_name (TEXT), default.e.n_nationkey (INT4)} - SCAN(25) on eb_0000000000000_0000_000007 - => out schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} - => in schema: {(7) 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.d.o_orderdate (TEXT), default.d.o_orderkey (INT4)} + => out schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + => in schema: {(3) default.d.o_orderdate (TEXT), default.d.o_orderkey (INT4), default.e.n_name (TEXT)} + SCAN(25) on eb_0000000000000_0000_000005 + => 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: {(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)} ======================================================= Block Id: eb_0000000000000_0000_000010 [LEAF] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Hash.plan index fbfe7f8012..93ee8bae62 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Hash.plan @@ -27,23 +27,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(10) => 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.orders - => target list: default.orders.o_orderkey (INT4) + SCAN(9) on eb_0000000000000_0000_000002 => 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(0) on default.customer - => target list: default.customer.c_custkey (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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Sort.plan index fbfe7f8012..93ee8bae62 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Sort.plan @@ -27,23 +27,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(10) => 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.orders - => target list: default.orders.o_orderkey (INT4) + SCAN(9) on eb_0000000000000_0000_000002 => 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(0) on default.customer - => target list: default.customer.c_custkey (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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Hash.plan index a0c32f72bb..5a5f04af58 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Hash.plan @@ -25,19 +25,49 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.o +[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 @@ -48,15 +78,12 @@ PROJECTION(3) => 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(1) on default.orders as o - => filter: default.o.o_orderpriority (TEXT) = 5-LOW - => target list: default.o.o_orderkey (INT4) + SCAN(8) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.lineitem as l - => target list: default.l.l_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: {(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)} + => in schema: {(1) default.l.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Sort.plan index a0c32f72bb..5a5f04af58 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.Sort.plan @@ -25,19 +25,49 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.o +[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 @@ -48,15 +78,12 @@ PROJECTION(3) => 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(1) on default.orders as o - => filter: default.o.o_orderpriority (TEXT) = 5-LOW - => target list: default.o.o_orderkey (INT4) + SCAN(8) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.lineitem as l - => target list: default.l.l_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: {(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)} + => in schema: {(1) default.l.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Hash.plan index 22a5037888..0bd853a9b2 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Hash.plan @@ -26,19 +26,48 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.o +[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 @@ -51,14 +80,12 @@ PROJECTION(4) => 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(1) on default.orders as o - => target list: 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: {(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)} - SCAN(0) on default.lineitem as l - => target list: default.l.l_orderkey (INT4) + => 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: {(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)} + => in schema: {(1) default.l.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Sort.plan index 22a5037888..0bd853a9b2 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr5.Sort.plan @@ -26,19 +26,48 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.o +[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 @@ -51,14 +80,12 @@ PROJECTION(4) => 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(1) on default.orders as o - => target list: 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: {(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)} - SCAN(0) on default.lineitem as l - => target list: default.l.l_orderkey (INT4) + => 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: {(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)} + => in schema: {(1) default.l.l_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Hash.plan index 9b2aeeb845..56023bcff0 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Hash.plan @@ -55,25 +55,54 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 -2: eb_0000000000000_0000_000007 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000008 -5: eb_0000000000000_0000_000009 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000004 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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))) @@ -85,14 +114,12 @@ GROUP_BY(17)() => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Sort.plan index 9b2aeeb845..56023bcff0 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Sort.plan @@ -55,25 +55,54 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000009) |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000004 |-eb_0000000000000_0000_000003 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000003 -2: eb_0000000000000_0000_000007 -3: eb_0000000000000_0000_000004 -4: eb_0000000000000_0000_000008 -5: eb_0000000000000_0000_000009 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000007 +5: eb_0000000000000_0000_000004 +6: eb_0000000000000_0000_000008 +7: eb_0000000000000_0000_000009 ------------------------------------------------------------------------------- ======================================================= -Block Id: eb_0000000000000_0000_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=, num=1) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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))) @@ -85,14 +114,12 @@ GROUP_BY(17)() => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000007 [LEAF] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Hash.plan index 074245f6c8..2ce8bed387 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Hash.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Sort.plan index 074245f6c8..2ce8bed387 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Sort.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Hash.plan index 28c69e2c04..df7b41643b 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Hash.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Sort.plan index 28c69e2c04..df7b41643b 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Sort.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Hash.plan index 27fa16f722..27f7335d2e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Hash.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Sort.plan index 27fa16f722..27f7335d2e 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Sort.plan @@ -25,23 +25,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -52,14 +81,12 @@ SORT(11) => 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(1) on default.orders - => target list: 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: {(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.customer - => target list: default.customer.c_custkey (INT4) + => 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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan index 20f77b3725..ac73ab98dc 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan @@ -22,19 +22,48 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.b +[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(6) => Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT) @@ -43,12 +72,10 @@ SELECTION(6) => 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(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) + SCAN(10) 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(0) on default.region as a - => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4) + SCAN(9) 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan index 20f77b3725..ac73ab98dc 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan @@ -22,19 +22,48 @@ 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_000003 -2: eb_0000000000000_0000_000004 +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] ======================================================= -[Enforcers] - 0: type=Broadcast, tables=default.b +[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(6) => Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT) @@ -43,12 +72,10 @@ SELECTION(6) => 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(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) + SCAN(10) 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(0) on default.region as a - => target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4) + SCAN(9) 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)} diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Hash.plan index 7b9c695261..bfc571db57 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Hash.plan @@ -31,20 +31,51 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_custkey (INT4), num=32) + +SCAN(1) on default.orders as b + => target list: default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) + => out schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), 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_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_custkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c + 0: type=Broadcast, tables=default.c SELECTION(5) => Search Cond: default.c.n_nationkey (INT4) IS NOT NULL @@ -62,14 +93,12 @@ SELECTION(5) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) => out schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), 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.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => in schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} + SCAN(11) 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: {(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: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Sort.plan index 7b9c695261..bfc571db57 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Sort.plan @@ -31,20 +31,51 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000006) ------------------------------------------------------------------------------- |-eb_0000000000000_0000_000006 |-eb_0000000000000_0000_000005 + |-eb_0000000000000_0000_000002 + |-eb_0000000000000_0000_000001 ------------------------------------------------------------------------------- Order of Execution ------------------------------------------------------------------------------- -1: eb_0000000000000_0000_000005 -2: eb_0000000000000_0000_000006 +1: eb_0000000000000_0000_000001 +2: eb_0000000000000_0000_000002 +3: eb_0000000000000_0000_000005 +4: eb_0000000000000_0000_000006 ------------------------------------------------------------------------------- +======================================================= +Block Id: eb_0000000000000_0000_000001 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 1 => 5 (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_000002 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_custkey (INT4), num=32) + +SCAN(1) on default.orders as b + => target list: default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) + => out schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), 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_000005 [ROOT] ======================================================= +[Incoming] +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.c_custkey (INT4), num=32) +[q_0000000000000_0000] 2 => 5 (type=HASH_SHUFFLE, key=default.b.o_custkey (INT4), num=32) + [Enforcers] - 0: type=Broadcast, tables=default.b - 1: type=Broadcast, tables=default.c + 0: type=Broadcast, tables=default.c SELECTION(5) => Search Cond: default.c.n_nationkey (INT4) IS NOT NULL @@ -62,14 +93,12 @@ SELECTION(5) => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) => out schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} => in schema: {(6) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} - SCAN(1) on default.orders as b - => target list: default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4) + SCAN(12) on eb_0000000000000_0000_000002 => out schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), 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.customer as a - => target list: default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4) + => in schema: {(3) default.b.o_custkey (INT4), default.b.o_orderdate (TEXT), default.b.o_orderkey (INT4)} + SCAN(11) 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: {(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: {(3) default.a.c_custkey (INT4), default.a.c_name (TEXT), default.a.c_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Hash.plan index 66c22df5ea..c421b35181 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Hash.plan @@ -23,23 +23,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -48,14 +77,12 @@ SORT(10) => 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) + SCAN(9) on eb_0000000000000_0000_000002 => 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) + => 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: {(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: {(1) default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Sort.plan index 66c22df5ea..c421b35181 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Sort.plan @@ -23,23 +23,52 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.orders.o_orderkey (INT4) (asc, nulls last) @@ -48,14 +77,12 @@ SORT(10) => 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) + SCAN(9) on eb_0000000000000_0000_000002 => 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) + => 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: {(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: {(1) default.orders.o_orderkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Hash.plan index dffcecb971..6ee78dd10a 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Hash.plan @@ -31,23 +31,60 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.o.o_orderkey (INT4) (asc, nulls last) @@ -56,22 +93,12 @@ SORT(12) => 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)} - TABLE_SUBQUERY(3) as default.o - => Targets: default.o.o_orderkey (INT4) + SCAN(11) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Sort.plan index dffcecb971..6ee78dd10a 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Sort.plan @@ -31,23 +31,60 @@ 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_000003 -2: eb_0000000000000_0000_000004 -3: eb_0000000000000_0000_000005 +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_000003 [LEAF] +Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 3 => 4 (type=RANGE_SHUFFLE, key=default.customer.c_custkey (INT4), default.o.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) -[Enforcers] - 0: type=Broadcast, tables=default.orders +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, nulls last),default.o.o_orderkey (INT4) (asc, nulls last) @@ -56,22 +93,12 @@ SORT(12) => 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)} - TABLE_SUBQUERY(3) as default.o - => Targets: default.o.o_orderkey (INT4) + SCAN(11) on eb_0000000000000_0000_000002 => 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)} - SCAN(0) on default.customer - => target list: default.customer.c_custkey (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: {(8) default.customer.c_acctbal (FLOAT8), default.customer.c_address (TEXT), default.customer.c_comment (TEXT), default.customer.c_custkey (INT4), default.customer.c_mktsegment (TEXT), default.customer.c_name (TEXT), default.customer.c_nationkey (INT4), default.customer.c_phone (TEXT)} + => in schema: {(1) default.customer.c_custkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000004 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan index e800b21f88..24829f43ee 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan @@ -37,24 +37,73 @@ 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), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) + +SCAN(0) on default.jointable11 as a + => target list: default.a.id (INT4) + => out schema: {(1) default.a.id (INT4)} + => in schema: {(2) default.a.id (INT4), default.a.name (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.jointable12 - 1: type=Broadcast, tables=default.lineitem + +TABLE_SUBQUERY(5) as default.b + => Targets: default.b.id (INT4) + => out schema: {(1) default.b.id (INT4)} + => in schema: {(1) default.b.id (INT4)} + PROJECTION(4) + => Targets: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(1) default.jointable12.id (INT4)} + JOIN(10)(INNER) + => Join Cond: default.jointable12.id (INT4) = default.lineitem.l_orderkey (INT4) + => 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(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_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), num=32) SORT(17) => Sort Keys: default.a.id (INT4) (asc, nulls last) @@ -63,32 +112,12 @@ SORT(17) => target list: default.a.id (INT4), default.b.id (INT4) => out schema: {(2) default.a.id (INT4), default.b.id (INT4)} => in schema: {(2) default.a.id (INT4), default.b.id (INT4)} - TABLE_SUBQUERY(5) as default.b - => Targets: default.b.id (INT4) + SCAN(16) on eb_0000000000000_0000_000004 => out schema: {(1) default.b.id (INT4)} - => in schema: {(1) default.b.id (INT4)} - PROJECTION(4) - => Targets: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(1) default.jointable12.id (INT4)} - JOIN(10)(INNER) - => Join Cond: default.jointable12.id (INT4) = default.lineitem.l_orderkey (INT4) - => 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(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) + => in schema: {(1) default.b.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.id (INT4)} - => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(1) default.a.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan index e800b21f88..24829f43ee 100644 --- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan +++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan @@ -37,24 +37,73 @@ 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), num=32) +[q_0000000000000_0000] 1 => 5 (type=HASH_SHUFFLE, key=default.a.id (INT4), num=32) + +SCAN(0) on default.jointable11 as a + => target list: default.a.id (INT4) + => out schema: {(1) default.a.id (INT4)} + => in schema: {(2) default.a.id (INT4), default.a.name (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.jointable12 - 1: type=Broadcast, tables=default.lineitem + +TABLE_SUBQUERY(5) as default.b + => Targets: default.b.id (INT4) + => out schema: {(1) default.b.id (INT4)} + => in schema: {(1) default.b.id (INT4)} + PROJECTION(4) + => Targets: default.jointable12.id (INT4) + => out schema: {(1) default.jointable12.id (INT4)} + => in schema: {(1) default.jointable12.id (INT4)} + JOIN(10)(INNER) + => Join Cond: default.jointable12.id (INT4) = default.lineitem.l_orderkey (INT4) + => 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(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_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), num=32) SORT(17) => Sort Keys: default.a.id (INT4) (asc, nulls last) @@ -63,32 +112,12 @@ SORT(17) => target list: default.a.id (INT4), default.b.id (INT4) => out schema: {(2) default.a.id (INT4), default.b.id (INT4)} => in schema: {(2) default.a.id (INT4), default.b.id (INT4)} - TABLE_SUBQUERY(5) as default.b - => Targets: default.b.id (INT4) + SCAN(16) on eb_0000000000000_0000_000004 => out schema: {(1) default.b.id (INT4)} - => in schema: {(1) default.b.id (INT4)} - PROJECTION(4) - => Targets: default.jointable12.id (INT4) - => out schema: {(1) default.jointable12.id (INT4)} - => in schema: {(1) default.jointable12.id (INT4)} - JOIN(10)(INNER) - => Join Cond: default.jointable12.id (INT4) = default.lineitem.l_orderkey (INT4) - => 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(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) + => in schema: {(1) default.b.id (INT4)} + SCAN(15) on eb_0000000000000_0000_000001 => out schema: {(1) default.a.id (INT4)} - => in schema: {(2) default.a.id (INT4), default.a.name (TEXT)} + => in schema: {(1) default.a.id (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000006 [ROOT] diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession1.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession1.result index ffd27dd20b..c0bd8a917d 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession1.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession1.result @@ -1,5 +1,5 @@ { - "name": "enable_seqscan", + "name": "ENABLE_SEQSCAN", "value": "true", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession2.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession2.result index 7809a2e2bb..efba43c633 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession2.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession2.result @@ -1,5 +1,5 @@ { - "name": "enable_seqscan", + "name": "ENABLE_SEQSCAN", "value": "false", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession3.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession3.result index 9a3675581b..71dd5019d2 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession3.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession3.result @@ -1,5 +1,5 @@ { - "name": "extsort_buffer_size", + "name": "EXTSORT_BUFFER_SIZE", "value": "100", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession4.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession4.result index 007a56327d..18b03b047c 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession4.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession4.result @@ -1,5 +1,5 @@ { - "name": "extsort_buffer_size", + "name": "EXTSORT_BUFFER_SIZE", "value": "50.7", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession5.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession5.result index 8e61229c31..de6e03b54e 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession5.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession5.result @@ -1,5 +1,5 @@ { - "name": "extsort_buffer_size", + "name": "EXTSORT_BUFFER_SIZE", "value": "ABCD", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession6.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession6.result index 8e61229c31..de6e03b54e 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession6.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession6.result @@ -1,5 +1,5 @@ { - "name": "extsort_buffer_size", + "name": "EXTSORT_BUFFER_SIZE", "value": "ABCD", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession7.result b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession7.result index 8e61229c31..de6e03b54e 100644 --- a/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession7.result +++ b/tajo-core-tests/src/test/resources/results/TestSQLAnalyzer/setsession7.result @@ -1,5 +1,5 @@ { - "name": "extsort_buffer_size", + "name": "EXTSORT_BUFFER_SIZE", "value": "ABCD", "OpType": "SetSession" } \ No newline at end of file diff --git a/tajo-core-tests/src/test/resources/results/TestTPCH/testQ2FourJoins.plan b/tajo-core-tests/src/test/resources/results/TestTPCH/testQ2FourJoins.plan index dbee0e3065..79a157cea8 100644 --- a/tajo-core-tests/src/test/resources/results/TestTPCH/testQ2FourJoins.plan +++ b/tajo-core-tests/src/test/resources/results/TestTPCH/testQ2FourJoins.plan @@ -1,47 +1,47 @@ explain ------------------------------- JOIN(14)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: 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) => 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)} + => in schema: {(14) 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_suppkey (INT4), 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), 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), 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4) + => out schema: {(8) default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), 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), default.supplier.s_suppkey (INT4)} + 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(12)(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(11)(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)} + => 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_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) + => out schema: {(6) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(7) 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_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} SCAN(7) on default.part => filter: (default.part.p_size (INT4) = 15 AND default.part.p_type (TEXT)LIKE'%BRASS') => 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 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(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)} - 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(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_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,7 @@ Block Id: eb_0000000000000_0000_000001 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (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) @@ -89,42 +89,7 @@ Block Id: eb_0000000000000_0000_000002 [LEAF] ======================================================= [Outgoing] -[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_000003 [INTERMEDIATE] -======================================================= - -[Incoming] -[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) - -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(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_000004 [LEAF] -======================================================= - -[Outgoing] -[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.part.p_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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,11 +98,11 @@ 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] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 4 => 6 (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) @@ -145,11 +110,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_000007 [LEAF] +Block Id: eb_0000000000000_0000_000005 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) SCAN(0) on default.region => filter: default.region.r_name (TEXT) = AMERICA @@ -158,70 +123,105 @@ SCAN(0) on default.region => 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_000003 [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] 1 => 3 (type=HASH_SHUFFLE, key=default.partsupp.ps_partkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (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] 3 => 9 (type=HASH_SHUFFLE, key=default.partsupp.ps_suppkey (INT4), num=32) -JOIN(12)(INNER) +JOIN(11)(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 + => 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_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8) + => out schema: {(6) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(7) 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_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + SCAN(17) on eb_0000000000000_0000_000002 => 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 - => 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)} + 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_000008 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [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) +[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 5 => 6 (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) +[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) -JOIN(13)(INNER) +JOIN(12)(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 + SCAN(19) on eb_0000000000000_0000_000005 => 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 + SCAN(18) on eb_0000000000000_0000_000004 => 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_000007 [LEAF] +======================================================= + +[Outgoing] +[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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_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) + +[Outgoing] +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) + +JOIN(13)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => target list: default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4) + => out schema: {(8) default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4)} + => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), 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), default.supplier.s_suppkey (INT4)} + SCAN(21) on eb_0000000000000_0000_000007 + => 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(20) on eb_0000000000000_0000_000006 + => 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_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.partsupp.ps_suppkey (INT4), num=32) +[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) JOIN(14)(INNER) - => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: default.supplier.s_suppkey (INT4) = default.partsupp.ps_suppkey (INT4) => target list: 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) => 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)} + => in schema: {(14) 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_suppkey (INT4), 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), default.supplier.s_suppkey (INT4)} 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)} + => out schema: {(8) default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4)} + => in schema: {(8) default.nation.n_name (TEXT), 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), default.supplier.s_suppkey (INT4)} + SCAN(22) on eb_0000000000000_0000_000003 + => out schema: {(6) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} + => in schema: {(6) default.part.p_mfgr (TEXT), default.part.p_partkey (INT4), default.part.p_size (INT4), default.part.p_type (TEXT), default.partsupp.ps_suppkey (INT4), default.partsupp.ps_supplycost (FLOAT8)} ======================================================= Block Id: eb_0000000000000_0000_000010 [TERMINAL] diff --git a/tajo-core-tests/src/test/resources/results/TestTPCH/testTPCHQ5.plan b/tajo-core-tests/src/test/resources/results/TestTPCH/testTPCHQ5.plan index 9c6e5231ef..4e2bf5cc86 100644 --- a/tajo-core-tests/src/test/resources/results/TestTPCH/testTPCHQ5.plan +++ b/tajo-core-tests/src/test/resources/results/TestTPCH/testTPCHQ5.plan @@ -8,56 +8,56 @@ 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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: (default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) AND default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4)) => target list: ?multiply (FLOAT8), default.nation.n_name (TEXT) => 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)} + => in schema: {(8) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (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 Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) + => target list: default.customer.c_nationkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_nationkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (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(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(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 Cond: 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.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(8) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (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(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(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)} - 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)} + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (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: {(4) default.nation.n_name (TEXT), default.nation.n_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)} + 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(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)} explain ------------------------------- ------------------------------------------------------------------------------- @@ -72,19 +72,19 @@ Execution Block Graph (TERMINAL - eb_0000000000000_0000_000014) |-eb_0000000000000_0000_000008 |-eb_0000000000000_0000_000007 |-eb_0000000000000_0000_000006 - |-eb_0000000000000_0000_000005 + |-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 ------------------------------------------------------------------------------- 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 +3: eb_0000000000000_0000_000003 +4: eb_0000000000000_0000_000004 +5: eb_0000000000000_0000_000005 6: eb_0000000000000_0000_000006 7: eb_0000000000000_0000_000008 8: eb_0000000000000_0000_000009 @@ -101,174 +101,174 @@ 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.nation.n_regionkey (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(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_000002 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.region.r_regionkey (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(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_000004 [LEAF] +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] 4 => 6 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (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)} +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: {(1) default.region.r_regionkey (INT4)} + => in schema: {(1) default.region.r_regionkey (INT4)} + SCAN(22) 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_000005 [LEAF] +Block Id: eb_0000000000000_0000_000004 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.orders.o_orderkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (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(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_000003 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000005 [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.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 3 => 5 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 4 => 5 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) -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(23) on eb_0000000000000_0000_000002 +JOIN(17)(INNER) + => Join Cond: default.supplier.s_nationkey (INT4) = default.nation.n_nationkey (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: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} + SCAN(25) on eb_0000000000000_0000_000004 => 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: {(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: {(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_000006 [INTERMEDIATE] +Block Id: eb_0000000000000_0000_000006 [LEAF] ======================================================= -[Incoming] -[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 => 7 (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), num=32) -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(25) on eb_0000000000000_0000_000005 - => 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)} +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_000008 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32) +[q_0000000000000_0000] 8 => 10 (type=HASH_SHUFFLE, key=default.orders.o_custkey (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(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_000009 [LEAF] ======================================================= [Outgoing] -[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (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_000007 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 5 => 7 (type=HASH_SHUFFLE, key=default.supplier.s_suppkey (INT4), num=32) +[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.lineitem.l_suppkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 7 => 11 (type=HASH_SHUFFLE, key=default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 7 => 11 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.supplier.s_nationkey (INT4), num=32) 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 Cond: 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.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4) + => out schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(8) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.lineitem.l_suppkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4), default.supplier.s_suppkey (INT4)} 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)} + => 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(26) on eb_0000000000000_0000_000005 + => 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)} ======================================================= 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] 8 => 10 (type=HASH_SHUFFLE, key=default.orders.o_custkey (INT4), num=32) +[q_0000000000000_0000] 9 => 10 (type=HASH_SHUFFLE, key=default.customer.c_custkey (INT4), num=32) [Outgoing] -[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), default.orders.o_orderkey (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)} + => Join Cond: default.customer.c_custkey (INT4) = default.orders.o_custkey (INT4) + => target list: default.customer.c_nationkey (INT4), default.orders.o_orderkey (INT4) + => out schema: {(2) default.customer.c_nationkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(4) default.customer.c_custkey (INT4), default.customer.c_nationkey (INT4), default.orders.o_custkey (INT4), default.orders.o_orderkey (INT4)} SCAN(29) on eb_0000000000000_0000_000009 - => 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)} 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)} + => 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_000011 [INTERMEDIATE] ======================================================= [Incoming] -[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) +[q_0000000000000_0000] 7 => 11 (type=HASH_SHUFFLE, key=default.lineitem.l_orderkey (INT4), default.supplier.s_nationkey (INT4), num=32) +[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=default.customer.c_nationkey (INT4), default.orders.o_orderkey (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.supplier.s_nationkey (INT4) = default.nation.n_nationkey (INT4) + => Join Cond: (default.customer.c_nationkey (INT4) = default.supplier.s_nationkey (INT4) AND default.lineitem.l_orderkey (INT4) = default.orders.o_orderkey (INT4)) => target list: ?multiply (FLOAT8), default.nation.n_name (TEXT) => 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)} + => in schema: {(8) ?multiply (FLOAT8), default.customer.c_nationkey (INT4), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.orders.o_orderkey (INT4), default.supplier.s_nationkey (INT4)} SCAN(31) on eb_0000000000000_0000_000010 - => 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)} + => out schema: {(2) default.customer.c_nationkey (INT4), default.orders.o_orderkey (INT4)} + => in schema: {(2) default.customer.c_nationkey (INT4), default.orders.o_orderkey (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)} + => out schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4)} + => in schema: {(6) ?multiply (FLOAT8), default.lineitem.l_discount (FLOAT8), default.lineitem.l_extendedprice (FLOAT8), default.lineitem.l_orderkey (INT4), default.nation.n_name (TEXT), default.supplier.s_nationkey (INT4)} ======================================================= Block Id: eb_0000000000000_0000_000012 [INTERMEDIATE] diff --git a/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java index c33fc097d4..f00c85ee6f 100644 --- a/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java +++ b/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java @@ -112,7 +112,8 @@ public Expr visitSession_statement(@NotNull Session_statementContext ctx) { } else { value = null; } - return new SetSession(ctx.name.getText(), value); + // Keep upper case letters (workaround temporarily) + return new SetSession(ctx.name.getText().toUpperCase(), value); } else if (checkIfExist(ctx.TIME()) && checkIfExist(ctx.ZONE())) { 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 c158f5744b..fbf6904c72 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 @@ -399,7 +399,7 @@ public static double getCost(JoinEdge joinEdge) { } else { // make cost bigger if cross join cost = Math.pow(getCostOfVertex(joinEdge.getLeftVertex()) * - getCostOfVertex(joinEdge.getRightVertex()), 2); + getCostOfVertex(joinEdge.getRightVertex()), 8); } return checkInfinity(cost * COMPUTATION_FACTOR); diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java index f706680962..766eda3118 100644 --- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java +++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java @@ -90,12 +90,13 @@ public void testTPCH_Q2_Part() throws Exception { @Option(sort = true) public void testTPCH_Q2_Part_MixedStorage() throws Exception { // Manually enable broadcast feature + try { testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED.varname, "true"); testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.varname, "" + (5 * 1024)); testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, - "" + (2 * 1024)); + 1024 * 1024 + ""); runSimpleTests(); @@ -105,7 +106,7 @@ public void testTPCH_Q2_Part_MixedStorage() throws Exception { testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.varname, TajoConf.ConfVars.$DIST_QUERY_BROADCAST_NON_CROSS_JOIN_THRESHOLD.defaultVal); testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.varname, - TajoConf.ConfVars.$DIST_QUERY_BROADCAST_CROSS_JOIN_THRESHOLD.defaultVal); + 1024 * 1024 + ""); } } From 5ffb0826ce4bc2da18b7d0fe18588f0b1bc2b932 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Sat, 12 Dec 2015 18:22:58 -0800 Subject: [PATCH 13/15] Fixed test failures. --- .../tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java | 2 +- .../org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java | 2 +- 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 fbf6904c72..c158f5744b 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 @@ -399,7 +399,7 @@ public static double getCost(JoinEdge joinEdge) { } else { // make cost bigger if cross join cost = Math.pow(getCostOfVertex(joinEdge.getLeftVertex()) * - getCostOfVertex(joinEdge.getRightVertex()), 8); + getCostOfVertex(joinEdge.getRightVertex()), 2); } return checkInfinity(cost * COMPUTATION_FACTOR); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java index ac1d2e1f3d..3683f60a1a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/TableStatUpdateRewriter.java @@ -104,7 +104,7 @@ private TableStats getTableStat(TableDesc table) { } private boolean isVirtual(TableDesc table) { - return table.getMeta().getDataFormat().equals("SYSTEM") || table.getMeta().getDataFormat().equals("FAKEFILE"); + return table.getMeta().getDataFormat().equals("SYSTEM"); } private long getTableVolume(TableDesc table, Optional filter) { From 8bcb0e7bae10fa4e73ab9aa7a9739ec881047d6c Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Sun, 13 Dec 2015 12:35:18 -0800 Subject: [PATCH 14/15] Recover the change log and fix config key. --- tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java index fe79c780b2..cf8ac0677c 100644 --- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java +++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java @@ -319,7 +319,7 @@ public static enum ConfVars implements ConfigKey { // Enables the optimizer to get and use table volumes via storage handlers. // This feature may cause some performance degradation when storage access is too slow (S3). // By default, this config value is false, and in this case the optimizer uses the table stats from catalog. - $USE_TABLE_VOLUME("tajo.optimizer.stats.table-volume", Boolean.FALSE), + $USE_TABLE_VOLUME("tajo.optimizer.stats.use-table-volume", Boolean.FALSE), // for distributed query strategies From f3278330cd9e7aa29a9845e85e3a3393eb886f9b Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Thu, 17 Dec 2015 20:57:31 -0800 Subject: [PATCH 15/15] Add change log to CHANGES. --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 51c1e62e58..854612d8c4 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,8 @@ Release 0.12.0 - unreleased IMPROVEMENT + TAJO-1991: Tablespace::getVolume should take filter predication. (hyunsik) + TAJO-2007: By default, Optimizer should use the table volume in TableStat. (hyunsik)