Uploaded image for project: 'Tajo'
  1. Tajo
  2. TAJO-2135

Invalid join result when join key columns contain nulls

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 0.11.0
    • Fix Version/s: 0.12.0, 0.11.3
    • Component/s: None
    • Labels:
      None

      Description

      You can simply reproduce this bug as follows. The correct answer of the below query is 20965674.

      tpcds100> select count(*) from store_sales, store_returns 
      where 
      ss_customer_sk = sr_customer_sk 
      and ss_item_sk = sr_item_sk 
      ;
      [=========================================>] 100%  33.315 sec
      ?count
      -------------------------------
      101145653
      (1 rows, 33.315 sec, 16 B selected)
      

        Issue Links

          Activity

          Hide
          hudson Hudson added a comment -

          SUCCESS: Integrated in Tajo-master-build #1137 (See https://builds.apache.org/job/Tajo-master-build/1137/)
          TAJO-2135: Invalid join result when join key columns contain nulls. (jihoonson: rev c156e5c936462857d26920b3c5863c9d38b3ac62)

          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/.marker
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result
          • tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result
          • tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result
          • tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result
          • tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result
          • tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java
          • tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/supplier.tbl
          • tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result
          • tajo-cluster-tests/src/test/resources/tpch/customer.tbl
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result
          • tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
          • tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result
          • tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result
          • tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result
          • tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result
          • tajo-cluster-tests/src/test/resources/tpch/region.tbl
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/partsupp.tbl
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result
          • tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result
          • tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result
          • tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result
          • tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result
          • tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result
          • tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result
          • tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/orders.tbl
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result
          • tajo-core-tests/src/test/resources/python/test_udaf.py
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/part.tbl
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result
          • tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java
          • tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
          • tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result
          • tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql
          • tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/customer.tbl
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result
          • tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java
          • tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result
          • tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/nation.tbl
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result
          • tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java
          • CHANGES
          • tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java
          • tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result
          • tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result
          • tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
          • tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result
          • tajo-cluster-tests/src/test/resources/tpch/orders.tbl
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result
          • tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java
          • tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result
          • tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java
          • tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result
          • tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/lineitem.tbl
          • tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
          • tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java
          • tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result
          • tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result
          • tajo-cluster-tests/src/test/resources/tpch/part.tbl
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result
          • tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result
          • tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java
          • tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java
          • tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result
          • tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result
          • tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result
          • tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result
          • tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result
          • tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result
          • tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
          • tajo-cluster-tests/src/test/resources/tpch/supplier.tbl
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result
          • tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result
          • tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result
          • tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result
          • tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result
          • tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
          • tajo-core-tests/src/test/resources/python/test_funcs.py
          • tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/region.tbl
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result
          • tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result
          • tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result
          • tajo-cluster-tests/src/test/resources/tpch/nation.tbl
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result
          • tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result
          • tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
          • tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result
          • tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan
          • tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result
          • tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result
          • tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result
          • tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java
          • tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
          • tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result
          • tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result
          • tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result
          • tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result
          • tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result
          Show
          hudson Hudson added a comment - SUCCESS: Integrated in Tajo-master-build #1137 (See https://builds.apache.org/job/Tajo-master-build/1137/ ) TAJO-2135 : Invalid join result when join key columns contain nulls. (jihoonson: rev c156e5c936462857d26920b3c5863c9d38b3ac62) tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/.marker tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/supplier.tbl tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result tajo-cluster-tests/src/test/resources/tpch/customer.tbl tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result tajo-cluster-tests/src/test/resources/tpch/region.tbl tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/partsupp.tbl tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/orders.tbl tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result tajo-core-tests/src/test/resources/python/test_udaf.py tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/part.tbl tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/customer.tbl tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/nation.tbl tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java CHANGES tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result tajo-cluster-tests/src/test/resources/tpch/orders.tbl tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/lineitem.tbl tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result tajo-cluster-tests/src/test/resources/tpch/part.tbl tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result tajo-cluster-tests/src/test/resources/tpch/supplier.tbl tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java tajo-core-tests/src/test/resources/python/test_funcs.py tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/region.tbl tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result tajo-cluster-tests/src/test/resources/tpch/nation.tbl tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user asfgit closed the pull request at:

          https://github.com/apache/tajo/pull/1009

          Show
          githubbot ASF GitHub Bot added a comment - Github user asfgit closed the pull request at: https://github.com/apache/tajo/pull/1009
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on the pull request:

          https://github.com/apache/tajo/pull/1009#issuecomment-216800968

          Thanks for your review!

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on the pull request: https://github.com/apache/tajo/pull/1009#issuecomment-216800968 Thanks for your review!
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jinossy commented on the pull request:

          https://github.com/apache/tajo/pull/1009#issuecomment-216799346

          +1
          The change looks great to me. Thanks for you effort!

          Show
          githubbot ASF GitHub Bot added a comment - Github user jinossy commented on the pull request: https://github.com/apache/tajo/pull/1009#issuecomment-216799346 +1 The change looks great to me. Thanks for you effort!
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r62005536

          — Diff: tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java —
          @@ -92,6 +92,7 @@ private void setUp() throws Exception {
          util = new LocalTajoTestingUtility();
          KeyValueSet opt = new KeyValueSet();
          opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
          + opt.set(StorageConstants.TEXT_NULL, "\\\\N");
          — End diff –

          Fixed. Thanks.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r62005536 — Diff: tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java — @@ -92,6 +92,7 @@ private void setUp() throws Exception { util = new LocalTajoTestingUtility(); KeyValueSet opt = new KeyValueSet(); opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); + opt.set(StorageConstants.TEXT_NULL, "\\\\N"); — End diff – Fixed. Thanks.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jinossy commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61996618

          — Diff: tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java —
          @@ -92,6 +92,7 @@ private void setUp() throws Exception {
          util = new LocalTajoTestingUtility();
          KeyValueSet opt = new KeyValueSet();
          opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
          + opt.set(StorageConstants.TEXT_NULL, "\\\\N");
          — End diff –

          Looks like you are not apply default null character in meta.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jinossy commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61996618 — Diff: tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java — @@ -92,6 +92,7 @@ private void setUp() throws Exception { util = new LocalTajoTestingUtility(); KeyValueSet opt = new KeyValueSet(); opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); + opt.set(StorageConstants.TEXT_NULL, "\\\\N"); — End diff – Looks like you are not apply default null character in meta.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61852816

          — Diff: tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java —
          @@ -159,12 +160,15 @@ public final void testAlterTableRepairPartition() throws Exception {
          "36.0,N,1,1\n" +
          "38.0,N,2,2\n" +
          "45.0,R,3,2\n" +

          • "49.0,R,3,3\n";
            + "49.0,R,3,3\n" +
            + "null,,null,null\n" +
            + "null,,null,null\n" +
              • End diff –

          Thanks. Fixed.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61852816 — Diff: tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java — @@ -159,12 +160,15 @@ public final void testAlterTableRepairPartition() throws Exception { "36.0,N,1,1\n" + "38.0,N,2,2\n" + "45.0,R,3,2\n" + "49.0,R,3,3\n"; + "49.0,R,3,3\n" + + "null,,null,null\n" + + "null,,null,null\n" + End diff – Thanks. Fixed.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on the pull request:

          https://github.com/apache/tajo/pull/1009#issuecomment-216469698

          @jihoonson

          Thanks for your contribution, this PR looks good overall.
          After finishing testing on my laptop, I'll leave comments.

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on the pull request: https://github.com/apache/tajo/pull/1009#issuecomment-216469698 @jihoonson Thanks for your contribution, this PR looks good overall. After finishing testing on my laptop, I'll leave comments.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61850723

          — Diff: tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java —
          @@ -159,12 +160,15 @@ public final void testAlterTableRepairPartition() throws Exception {
          "36.0,N,1,1\n" +
          "38.0,N,2,2\n" +
          "45.0,R,3,2\n" +

          • "49.0,R,3,3\n";
            + "49.0,R,3,3\n" +
            + "null,,null,null\n" +
            + "null,,null,null\n" +
              • End diff –

          If you use the same indentation of previous codes, it will be more better. Other added codes in this class need to be updated.

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61850723 — Diff: tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java — @@ -159,12 +160,15 @@ public final void testAlterTableRepairPartition() throws Exception { "36.0,N,1,1\n" + "38.0,N,2,2\n" + "45.0,R,3,2\n" + "49.0,R,3,3\n"; + "49.0,R,3,3\n" + + "null,,null,null\n" + + "null,,null,null\n" + End diff – If you use the same indentation of previous codes, it will be more better. Other added codes in this class need to be updated.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61843228

          — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java —
          @@ -47,8 +47,7 @@
          */
          private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS =

          { ByteString.class }

          ;

          • public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat)
          • throws IOException {
            + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) {
              • End diff –

          You're right. We don't need to throw an IOException in this method.

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61843228 — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java — @@ -47,8 +47,7 @@ */ private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS = { ByteString.class } ; public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) throws IOException { + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) { End diff – You're right. We don't need to throw an IOException in this method.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61831330

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java —
          @@ -27,9 +28,12 @@

          public class HashJoinExec extends CommonHashJoinExec<TupleList> {

          + private final boolean isCrossJoin;
          — End diff –

          This value is used only in HashJoinExec. We don't have to move it.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61831330 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java — @@ -27,9 +28,12 @@ public class HashJoinExec extends CommonHashJoinExec<TupleList> { + private final boolean isCrossJoin; — End diff – This value is used only in HashJoinExec. We don't have to move it.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61831310

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbySecondAggregationExec.java —
          @@ -212,6 +212,7 @@ public Tuple next() throws IOException {

          prevKeyTuple = getKeyTuple(prevKeyTupleMap, keyTuple.getValues());
          prevTuple.put(tuple.getValues());
          + prevTuple.put(tuple.getValues());
          — End diff –

          My fault.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61831310 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbySecondAggregationExec.java — @@ -212,6 +212,7 @@ public Tuple next() throws IOException { prevKeyTuple = getKeyTuple(prevKeyTupleMap, keyTuple.getValues()); prevTuple.put(tuple.getValues()); + prevTuple.put(tuple.getValues()); — End diff – My fault.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61831279

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java —
          @@ -145,7 +145,7 @@ public JoinNode getPlan() {

          • @return True if an input tuple is matched to the left join filter
            */
            protected boolean leftFiltered(Tuple left) {
          • return leftJoinFilter != null && !leftJoinFilter.eval(left).asBool();
            + return leftJoinFilter != null && !leftJoinFilter.eval(left).isTrue();
              • End diff –

          No, asBool() incurs an invalid cast exception. Please refer to https://en.wikipedia.org/wiki/Three-valued_logic.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61831279 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java — @@ -145,7 +145,7 @@ public JoinNode getPlan() { @return True if an input tuple is matched to the left join filter */ protected boolean leftFiltered(Tuple left) { return leftJoinFilter != null && !leftJoinFilter.eval(left).asBool(); + return leftJoinFilter != null && !leftJoinFilter.eval(left).isTrue(); End diff – No, asBool() incurs an invalid cast exception. Please refer to https://en.wikipedia.org/wiki/Three-valued_logic .
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61831252

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java —
          @@ -48,7 +48,8 @@ public Rank() {

          public static boolean checkIfDistinctValue(RankContext context, Tuple params) {
          for (int i = 0; i < context.latest.length; i++) {

          • if (!context.latest[i].equalsTo(params.asDatum).isTrue()) {
            + if ((context.latest[i].isNotNull() || params.asDatum.isNotNull())
              • End diff –

          Because, in rank(), null values are regarded as the same unlike our other implementations. Please refer to https://en.wikipedia.org/wiki/Three-valued_logic.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61831252 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java — @@ -48,7 +48,8 @@ public Rank() { public static boolean checkIfDistinctValue(RankContext context, Tuple params) { for (int i = 0; i < context.latest.length; i++) { if (!context.latest [i] .equalsTo(params.asDatum ).isTrue()) { + if ((context.latest [i] .isNotNull() || params.asDatum .isNotNull()) End diff – Because, in rank(), null values are regarded as the same unlike our other implementations. Please refer to https://en.wikipedia.org/wiki/Three-valued_logic .
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61831120

          — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java —
          @@ -47,8 +47,7 @@
          */
          private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS =

          { ByteString.class }

          ;

          • public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat)
          • throws IOException {
            + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) {
              • End diff –

          This function just finds and returns a proper implementation of the fragment interface. Why do we need to throw IOException?

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61831120 — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java — @@ -47,8 +47,7 @@ */ private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS = { ByteString.class } ; public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) throws IOException { + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) { End diff – This function just finds and returns a proper implementation of the fragment interface. Why do we need to throw IOException?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61829470

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java —
          @@ -27,9 +28,12 @@

          public class HashJoinExec extends CommonHashJoinExec<TupleList> {

          + private final boolean isCrossJoin;
          — End diff –

          The variable for checking cross join of ``CommonHashJoinExec`` have been deleted in this PR. How about add it to ``CommonHashJoinExec`` again?

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61829470 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java — @@ -27,9 +28,12 @@ public class HashJoinExec extends CommonHashJoinExec<TupleList> { + private final boolean isCrossJoin; — End diff – The variable for checking cross join of ``CommonHashJoinExec`` have been deleted in this PR. How about add it to ``CommonHashJoinExec`` again?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61828973

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbySecondAggregationExec.java —
          @@ -212,6 +212,7 @@ public Tuple next() throws IOException {

          prevKeyTuple = getKeyTuple(prevKeyTupleMap, keyTuple.getValues());
          prevTuple.put(tuple.getValues());
          + prevTuple.put(tuple.getValues());
          — End diff –

          Why you use same codes again?

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61828973 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbySecondAggregationExec.java — @@ -212,6 +212,7 @@ public Tuple next() throws IOException { prevKeyTuple = getKeyTuple(prevKeyTupleMap, keyTuple.getValues()); prevTuple.put(tuple.getValues()); + prevTuple.put(tuple.getValues()); — End diff – Why you use same codes again?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61828860

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java —
          @@ -145,7 +145,7 @@ public JoinNode getPlan() {

          • @return True if an input tuple is matched to the left join filter
            */
            protected boolean leftFiltered(Tuple left) {
          • return leftJoinFilter != null && !leftJoinFilter.eval(left).asBool();
            + return leftJoinFilter != null && !leftJoinFilter.eval(left).isTrue();
              • End diff –

          Is the usage of ``isTrue`` method related to modification of ``EmptyTuple::getBool``?

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61828860 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java — @@ -145,7 +145,7 @@ public JoinNode getPlan() { @return True if an input tuple is matched to the left join filter */ protected boolean leftFiltered(Tuple left) { return leftJoinFilter != null && !leftJoinFilter.eval(left).asBool(); + return leftJoinFilter != null && !leftJoinFilter.eval(left).isTrue(); End diff – Is the usage of ``isTrue`` method related to modification of ``EmptyTuple::getBool``?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61828214

          — Diff: tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java —
          @@ -48,7 +48,8 @@ public Rank() {

          public static boolean checkIfDistinctValue(RankContext context, Tuple params) {
          for (int i = 0; i < context.latest.length; i++) {

          • if (!context.latest[i].equalsTo(params.asDatum).isTrue()) {
            + if ((context.latest[i].isNotNull() || params.asDatum.isNotNull())
              • End diff –

          Could you explain why you use ``or`` condition instead of ``and `` condition?

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61828214 — Diff: tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java — @@ -48,7 +48,8 @@ public Rank() { public static boolean checkIfDistinctValue(RankContext context, Tuple params) { for (int i = 0; i < context.latest.length; i++) { if (!context.latest [i] .equalsTo(params.asDatum ).isTrue()) { + if ((context.latest [i] .isNotNull() || params.asDatum .isNotNull()) End diff – Could you explain why you use ``or`` condition instead of ``and `` condition?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user blrunner commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/1009#discussion_r61828003

          — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java —
          @@ -47,8 +47,7 @@
          */
          private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS =

          { ByteString.class }

          ;

          • public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat)
          • throws IOException {
            + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) {
              • End diff –

          Could you explain why you remove throwing IOException and use TajoInternalError instead of IOException?

          Show
          githubbot ASF GitHub Bot added a comment - Github user blrunner commented on a diff in the pull request: https://github.com/apache/tajo/pull/1009#discussion_r61828003 — Diff: tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java — @@ -47,8 +47,7 @@ */ private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS = { ByteString.class } ; public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) throws IOException { + public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) { End diff – Could you explain why you remove throwing IOException and use TajoInternalError instead of IOException?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on the pull request:

          https://github.com/apache/tajo/pull/1009#issuecomment-216092654

          I also added some changes to fix window function test failures because the bug fix is really simple.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on the pull request: https://github.com/apache/tajo/pull/1009#issuecomment-216092654 I also added some changes to fix window function test failures because the bug fix is really simple.
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user jihoonson opened a pull request:

          https://github.com/apache/tajo/pull/1009

          TAJO-2135: Invalid join result when join key columns contain nulls

          First of all, apologize for a large patch.
          I added null values to every TPC-H tables in our test, and it makes a lot of changes in tests. However, fortunately, I could find several critical bugs with null values.
          Here are the changes of this patch.

          • Fixed invalid join result problem with null values.
          • When executing hash join, null values of the right table are filtered out while constructing a hash table.
          • Fixed invalid cast exception in outer joins with null values.
          • Fixed the problem of that sort-merge algorithm for full outer join is not executed in tests.
          • Fixed wrong result of full outer hash join with null values.
          • Fixed wrong result of RightOuterMergeJoinExec.
          • Fixed wrong query result on partitioned tables when partition keys contain nulls.
          • Changed the default null character of text file as '\N'.
          • Added null values to every TPC-H tables.

          I also found two additional bugs in anti join and window function executions with nulls. I think we need to fix these problems in other jiras.

          You can merge this pull request into a Git repository by running:

          $ git pull https://github.com/jihoonson/tajo-2 TAJO-2135

          Alternatively you can review and apply these changes as the patch at:

          https://github.com/apache/tajo/pull/1009.patch

          To close this pull request, make a commit to your master/trunk branch
          with (at least) the following in the commit message:

          This closes #1009


          commit 6702654fef63a4862ae3894c30cf392609391cc1
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-23T03:16:38Z

          Fix the bug and add an optimization rule

          commit 9fe133c7e1b75c3bb3165f56efc52051460c22bd
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-26T12:53:31Z

          Improve optimization rule to consider alias

          commit b90ed663b0e261e5796893bf7ac057305a2daff6
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-29T00:15:46Z

          Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-2135

          commit 01a9762aecd07fbd49120fd8d645ce9fc5bc2195
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-29T08:06:47Z

          • Added null values to all tpch tables.
          • Fixed join, sort tests.

          commit 200113196cb31ff7e26ce92d60c3ed1149af012d
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-29T11:07:21Z

          Fix group by test

          commit 5e699f271d53b0e8673c2768494444c84c43e324
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-30T05:39:53Z

          Fix all test failures

          commit 0f4335deee5961ce4794cbdf27225dbca0d3251b
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-04-30T05:55:48Z

          Code cleanup

          commit 45432f25616093e368f45342272386b3f20eeb38
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-05-01T05:33:48Z

          Fix invalid result in full outer join

          commit 450bee298dba9c67a024dafb520ab9d7bde109ce
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-05-01T10:48:30Z

          Fix full outer join bug

          commit 44039abb4dea8e45d9098916f6e40b3a75f76771
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2016-05-01T14:01:05Z

          Fixed all tests except window function


          Show
          githubbot ASF GitHub Bot added a comment - GitHub user jihoonson opened a pull request: https://github.com/apache/tajo/pull/1009 TAJO-2135 : Invalid join result when join key columns contain nulls First of all, apologize for a large patch. I added null values to every TPC-H tables in our test, and it makes a lot of changes in tests. However, fortunately, I could find several critical bugs with null values. Here are the changes of this patch. Fixed invalid join result problem with null values. When executing hash join, null values of the right table are filtered out while constructing a hash table. Fixed invalid cast exception in outer joins with null values. Fixed the problem of that sort-merge algorithm for full outer join is not executed in tests. Fixed wrong result of full outer hash join with null values. Fixed wrong result of RightOuterMergeJoinExec. Fixed wrong query result on partitioned tables when partition keys contain nulls. Changed the default null character of text file as '\N'. Added null values to every TPC-H tables. I also found two additional bugs in anti join and window function executions with nulls. I think we need to fix these problems in other jiras. You can merge this pull request into a Git repository by running: $ git pull https://github.com/jihoonson/tajo-2 TAJO-2135 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tajo/pull/1009.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1009 commit 6702654fef63a4862ae3894c30cf392609391cc1 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-23T03:16:38Z Fix the bug and add an optimization rule commit 9fe133c7e1b75c3bb3165f56efc52051460c22bd Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-26T12:53:31Z Improve optimization rule to consider alias commit b90ed663b0e261e5796893bf7ac057305a2daff6 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-29T00:15:46Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-2135 commit 01a9762aecd07fbd49120fd8d645ce9fc5bc2195 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-29T08:06:47Z Added null values to all tpch tables. Fixed join, sort tests. commit 200113196cb31ff7e26ce92d60c3ed1149af012d Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-29T11:07:21Z Fix group by test commit 5e699f271d53b0e8673c2768494444c84c43e324 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-30T05:39:53Z Fix all test failures commit 0f4335deee5961ce4794cbdf27225dbca0d3251b Author: Jihoon Son <jihoonson@apache.org> Date: 2016-04-30T05:55:48Z Code cleanup commit 45432f25616093e368f45342272386b3f20eeb38 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-05-01T05:33:48Z Fix invalid result in full outer join commit 450bee298dba9c67a024dafb520ab9d7bde109ce Author: Jihoon Son <jihoonson@apache.org> Date: 2016-05-01T10:48:30Z Fix full outer join bug commit 44039abb4dea8e45d9098916f6e40b3a75f76771 Author: Jihoon Son <jihoonson@apache.org> Date: 2016-05-01T14:01:05Z Fixed all tests except window function

            People

            • Assignee:
              jihoonson Jihoon Son
              Reporter:
              jihoonson Jihoon Son
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development