diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 1031655..7c80ec4 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -382,6 +382,7 @@ minitez.query.files=bucket_map_join_tez1.q,\ hybridgrace_hashjoin_1.q,\ hybridgrace_hashjoin_2.q,\ mapjoin_decimal.q,\ + mergejoin_3way.q,\ lvj_mapjoin.q,\ llapdecider.q,\ mrr.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index ede8dc8..1cbd13d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -462,7 +462,7 @@ private void joinFinalLeftData() throws HiveException { while (dataInCache) { for (byte pos = 0; pos < order.length; pos++) { if (this.foundNextKeyGroup[pos] && this.nextKeyWritables[pos] != null) { - promoteNextGroupToCandidate(pos); + fetchNextGroup(pos); } } joinOneGroup(); diff --git a/ql/src/test/queries/clientpositive/mergejoin_3way.q b/ql/src/test/queries/clientpositive/mergejoin_3way.q new file mode 100644 index 0000000..4c50f1d --- /dev/null +++ b/ql/src/test/queries/clientpositive/mergejoin_3way.q @@ -0,0 +1,15 @@ +set hive.auto.convert.join=false; +set hive.cbo.enable=false; + +select + a.key, b.value, c.value +from + src a, + src1 b, + src1 c +where + a.key = b.key and a.key = c.key + and b.key != '' and b.value != '' + and a.value > 'wal_6789' + and c.value > 'wal_6789' +; diff --git a/ql/src/test/results/clientpositive/tez/mergejoin_3way.q.out b/ql/src/test/results/clientpositive/tez/mergejoin_3way.q.out new file mode 100644 index 0000000..e644051 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/mergejoin_3way.q.out @@ -0,0 +1,30 @@ +PREHOOK: query: select + a.key, b.value, c.value +from + src a, + src1 b, + src1 c +where + a.key = b.key and a.key = c.key + and b.key != '' and b.value != '' + and a.value > 'wal_6789' + and c.value > 'wal_6789' +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Input: default@src1 +#### A masked pattern was here #### +POSTHOOK: query: select + a.key, b.value, c.value +from + src a, + src1 b, + src1 c +where + a.key = b.key and a.key = c.key + and b.key != '' and b.value != '' + and a.value > 'wal_6789' + and c.value > 'wal_6789' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Input: default@src1 +#### A masked pattern was here ####