[ 
https://issues.apache.org/jira/browse/TAJO-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14560806#comment-14560806
 ] 

Hudson commented on TAJO-1553:
------------------------------

ABORTED: Integrated in Tajo-master-CODEGEN-build #360 (See 
[https://builds.apache.org/job/Tajo-master-CODEGEN-build/360/])
TAJO-1553: Improve broadcast join planning. (jihoon) (jihoonson: rev 
8fd9ae72c70b24c25eaf17d60a832cc7bd7d252c)
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase3.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/BroadcastJoinPlanVisitor.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Hash.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Sort.plan
* tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion1.result
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Sort.plan
* tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.result
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase1.1.Sort.plan
* tajo-core/src/test/java/org/apache/tajo/querymaster/TestKillQuery.java
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.result
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Sort.plan
* tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition2.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Hash.plan
* tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testDifferentTypesJoinCondition.Hash.plan
* tajo-core/src/test/resources/queries/TestUnionQuery/testComplexUnion2.sql
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash.plan
* 
tajo-plan/src/main/java/org/apache/tajo/plan/function/python/TajoScriptEngine.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase4.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
* tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.result
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase3.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk4.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase3.1.result
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan
* tajo-core/src/test/resources/queries/TestUnionQuery/testComplexUnion1.sql
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin4.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Sort.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanEqualityTester.java
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition6.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition3.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin2.Hash.plan
* tajo-core/src/test/java/org/apache/tajo/benchmark/TestTPCH.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition5.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testNaturalJoin.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/BaseGlobalPlanRewriteRuleProvider.java
* tajo-core/src/main/java/org/apache/tajo/querymaster/Stage.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Sort.plan
* tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.result
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk3.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Hash_NoBroadcast.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.Sort.plan
* tajo-core/src/test/resources/results/TestTPCH/testTPCHQ5.plan
* tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Sort.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteEngine.java
* 
tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase4.1.Hash.plan
* tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion2.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase6.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs1.Sort.plan
* tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Hash.plan
* tajo-core/src/test/resources/results/TestUnionQuery/testComplexUnion1.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition4.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testInnerAndOuterWithEmpty.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase5.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testTPCHQ2Join.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull3.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual2.Hash.plan
* 
tajo-core/src/test/resources/queries/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.sql
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase6.1.Sort.plan
* tajo-core/src/test/java/org/apache/tajo/master/TestExecutionBlockCursor.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery2.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testComplexJoinCondition1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Hash.plan
* tajo-plan/src/main/proto/Plan.proto
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvalsWithSameExprs2.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan
* tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.result
* 
tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Hash.plan
* tajo-core/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength2.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Hash.plan
* tajo-core/src/test/resources/results/TestTPCH/testQ2FourJoins.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithEmptyTable.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithOrPredicates.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinWithMultipleJoinQual1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.Sort_NoBroadcast.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinCoReferredEvals1.Hash.plan
* CHANGES
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase3.1.Sort.plan
* tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java
* tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.result
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull2.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase1.1.Sort_NoBroadcast.plan
* 
tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase5.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable4.Hash.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen2.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual3.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/BroadcastJoinMarkCandidateVisitor.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testBroadcastTwoPartJoin.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.4.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.2.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase3.1.Hash_NoBroadcast.plan
* tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java
* 
tajo-core/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase3.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithEmptyTable1.Hash.plan
* 
tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
* tajo-core/src/test/resources/queries/TestTPCH/testTPCHQ5.sql
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase3.1.Sort_NoBroadcast.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java
* 
tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase1.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Sort.plan
* tajo-core/src/test/resources/queries/default/complex_union_2.sql
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.Sort.plan
* tajo-core/src/test/resources/results/TestTPCH/testQ1OrderBy.plan
* tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
* tajo-plan/src/main/java/org/apache/tajo/plan/logical/JoinNode.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.5.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.3.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testComplexJoinCondition7.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan
* tajo-core/src/test/resources/results/TestTPCH/testTPCH14Expr.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithAsterisk2.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin6.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.Sort.plan
* tajo-core/src/main/java/org/apache/tajo/engine/planner/global/MasterPlan.java
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testJoinWithMultipleJoinTypes.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase2_1.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testOuterJoinAndCaseWhen1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithEmptySubquery1.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin3.Hash.plan
* tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.Hash.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java
* tajo-core/src/test/java/org/apache/tajo/master/TestGlobalPlanner.java
* 
tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase1.1.Hash_NoBroadcast.plan
* 
tajo-core/src/main/java/org/apache/tajo/engine/planner/global/ExecutionBlock.java
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.Sort.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoin.1.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase2.1.result
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase1.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testJoinAsterisk.Hash.plan
* 
tajo-core/src/test/resources/results/TestMultipleJoinTypes/testComplexJoinsWithCaseWhen.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinPredicationCaseByCase1.1.Hash.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.Sort.plan
* 
tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java
* tajo-core/src/test/resources/queries/default/complex_union_1.sql
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testWhereClauseJoin5.Sort.plan
* 
tajo-core/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.plan
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinAndCaseWhen.Sort.plan
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.Hash.plan
* tajo-core/src/test/resources/results/TestTPCH/testQ1OrderBy.result
* 
tajo-core/src/test/resources/queries/TestInnerJoinQuery/testBroadcastTwoPartJoin.sql
* tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java
* 
tajo-core/src/test/resources/queries/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.sql
* 
tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinPredicationCaseByCase1.1.result
* 
tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinAndCaseWhen.Sort.plan
* tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java


> Improve broadcast join planning
> -------------------------------
>
>                 Key: TAJO-1553
>                 URL: https://issues.apache.org/jira/browse/TAJO-1553
>             Project: Tajo
>          Issue Type: Improvement
>          Components: distributed query plan, planner/optimizer
>            Reporter: Jihoon Son
>            Assignee: Jihoon Son
>             Fix For: 0.11.0
>
>
> The global engine generates a logical plan, and then marks some parts of the 
> plan as broadcast plan which means that they and their input will be 
> broadcasted to all workers. 
> Currently, broadcast parts are identified according to some rigid and 
> hard-coded rules. This will limit the broadcast opportunities in many cases.
> So, in this issue, I propose refactoring the broadcast planner to be more 
> general.
> Broadcast parts can be identified recursively.
> * A leaf node will be broadcasted if its input size does not exceed the 
> pre-defined threshold.
> * An intermediate node will be broadcasted if it has at least one broadcast 
> child.
> * For outer joins, row-preserved tables must not be broadcasted to avoid 
> input data duplication.
> * Given an EB containing a join and its child EBs, those EBs can be merged 
> into a single EB if at least one child EB's output is broadcastable.
> * Given a user-defined threshold, the total size of broadcast relations of an 
> EB cannot exceed such threshold.
> ** After merging EBs according to the first rule, the result EB may not 
> satisfy the second rule. In this case, enforce repartition join for large 
> relations to satisfy the second rule.
> * Preserved-row relations cannot be broadcasted to avoid duplicated results. 
> That is, full outer join cannot be executed with broadcast join.
> ** Here is brief backgrounds for this rule. Data of preserved-row relations 
> will be appeared in the join result regardless of join conditions. If 
> multiple tasks execute outer join with broadcasted preserved-row relations, 
> they emit duplicates results.
> ** Even though a single task can execute outer join when every input is 
> broadcastable, broadcast join is not allowed if one of input relation 
> consists of multiple files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to