This is an automated email from the ASF dual-hosted git repository.
zabetak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 86d8f6d3cce HIVE-29646: Enable semijoin reduction and map-join
conversion on external tables by default (#6525)
86d8f6d3cce is described below
commit 86d8f6d3ccee4b8084b50a4bc4edfd4a798b9817
Author: Denys Kuzmenko <[email protected]>
AuthorDate: Mon Aug 31 10:43:07 2026 +0200
HIVE-29646: Enable semijoin reduction and map-join conversion on external
tables by default (#6525)
---
.../java/org/apache/hadoop/hive/conf/HiveConf.java | 2 +-
.../delete_iceberg_copy_on_write_partitioned.q.out | 2 +-
...elete_iceberg_copy_on_write_unpartitioned.q.out | 96 +++---
.../update_iceberg_copy_on_write_partitioned.q.out | 4 +-
...pdate_iceberg_copy_on_write_unpartitioned.q.out | 346 ++++++++++-----------
.../clientpositive/llap/q93_with_constraints.q.out | 42 ++-
.../llap/vector_outer_join_constants.q.out | 5 +-
7 files changed, 258 insertions(+), 239 deletions(-)
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index f2988a42ec1..b8aea76155a 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -3544,7 +3544,7 @@ public static enum ConfVars {
"session in background when running CLI with Tez, allowing CLI to be
available earlier. " +
"If hive.cli.tez.initialize.session is set to false, this value is
ignored."),
-
HIVE_DISABLE_UNSAFE_EXTERNALTABLE_OPERATIONS("hive.disable.unsafe.external.table.operations",
true,
+
HIVE_DISABLE_UNSAFE_EXTERNALTABLE_OPERATIONS("hive.disable.unsafe.external.table.operations",
false,
"Whether to disable certain optimizations and operations on external
tables," +
" on the assumption that data changes by external applications may
have negative effects" +
" on these operations."),
diff --git
a/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_partitioned.q.out
b/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_partitioned.q.out
index 97f2fb1f030..686f2e6a3f1 100644
---
a/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_partitioned.q.out
+++
b/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_partitioned.q.out
@@ -1687,7 +1687,7 @@ STAGE PLANS:
Stats Work
Basic Stats Work:
-Warning: Shuffle Join MERGEJOIN[155][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[177][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
PREHOOK: query: delete from tbl_ice where a in (select t1.a from tbl_ice t1
join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
diff --git
a/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_unpartitioned.q.out
b/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_unpartitioned.q.out
index 0c539335f43..b924e2d5590 100644
---
a/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_unpartitioned.q.out
+++
b/iceberg/iceberg-handler/src/test/results/positive/delete_iceberg_copy_on_write_unpartitioned.q.out
@@ -1388,7 +1388,7 @@ POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: default@tbl_standard_other
POSTHOOK: Lineage: tbl_standard_other.a SCRIPT []
POSTHOOK: Lineage: tbl_standard_other.b SCRIPT []
-Warning: Shuffle Join MERGEJOIN[178][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[215][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
PREHOOK: query: explain delete from tbl_ice where a in (select t1.a from
tbl_ice t1 join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
@@ -1410,16 +1410,16 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 10 <- Map 1 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE)
- Reducer 11 <- Reducer 10 (SIMPLE_EDGE)
- Reducer 12 <- Reducer 8 (CUSTOM_SIMPLE_EDGE)
- Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 9 (SIMPLE_EDGE)
- Reducer 3 <- Reducer 12 (XPROD_EDGE), Reducer 2 (XPROD_EDGE)
- Reducer 4 <- Reducer 11 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union
5 (CONTAINS)
+ Reducer 10 <- Reducer 8 (SIMPLE_EDGE)
+ Reducer 11 <- Map 1 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE)
+ Reducer 12 <- Reducer 11 (SIMPLE_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 10 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (XPROD_EDGE), Reducer 9 (XPROD_EDGE)
+ Reducer 4 <- Reducer 12 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union
5 (CONTAINS)
Reducer 6 <- Map 1 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE)
Reducer 7 <- Reducer 6 (SIMPLE_EDGE), Union 5 (CONTAINS)
Reducer 8 <- Map 1 (SIMPLE_EDGE), Map 13 (SIMPLE_EDGE)
- Reducer 9 <- Reducer 8 (SIMPLE_EDGE)
+ Reducer 9 <- Reducer 8 (CUSTOM_SIMPLE_EDGE)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -1501,6 +1501,25 @@ STAGE PLANS:
Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: COMPLETE
Execution mode: vectorized
Reducer 10
+ Execution mode: vectorized
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: int)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
+ value expressions: _col1 (type: boolean)
+ Reducer 11
Reduce Operator Tree:
Merge Join Operator
condition map:
@@ -1516,7 +1535,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col1 (type: string)
Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: NONE
- Reducer 11
+ Reducer 12
Execution mode: vectorized
Reduce Operator Tree:
Select Operator
@@ -1562,19 +1581,6 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 4 Basic stats:
COMPLETE Column stats: NONE
- Reducer 12
- Execution mode: vectorized
- Reduce Operator Tree:
- Group By Operator
- aggregations: count(VALUE._col0), count(VALUE._col1)
- mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- null sort order:
- sort order:
- Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- value expressions: _col0 (type: bigint), _col1 (type: bigint)
Reducer 2
Reduce Operator Tree:
Merge Join Operator
@@ -1708,6 +1714,17 @@ STAGE PLANS:
1 _col0 (type: int)
outputColumnNames: _col1
Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: NONE
+ Group By Operator
+ aggregations: count(), count(_col1)
+ minReductionHashAggr: 0.99
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 16 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint), _col1 (type:
bigint)
Group By Operator
keys: _col1 (type: int)
minReductionHashAggr: 0.99
@@ -1736,17 +1753,6 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: NONE
- Group By Operator
- aggregations: count(), count(_col1)
- minReductionHashAggr: 0.99
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- null sort order:
- sort order:
- Statistics: Num rows: 1 Data size: 16 Basic stats:
COMPLETE Column stats: NONE
- value expressions: _col0 (type: bigint), _col1 (type:
bigint)
Select Operator
expressions: _col1 (type: int)
outputColumnNames: _col0
@@ -1767,21 +1773,15 @@ STAGE PLANS:
Execution mode: vectorized
Reduce Operator Tree:
Group By Operator
- keys: KEY._col0 (type: int)
+ aggregations: count(VALUE._col0), count(VALUE._col1)
mode: mergepartial
- outputColumnNames: _col0
- Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
- Select Operator
- expressions: _col0 (type: int), true (type: boolean)
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE
Column stats: NONE
- value expressions: _col1 (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
+ value expressions: _col0 (type: bigint), _col1 (type: bigint)
Union 5
Vertex: Union 5
@@ -1802,7 +1802,7 @@ STAGE PLANS:
Stats Work
Basic Stats Work:
-Warning: Shuffle Join MERGEJOIN[178][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
+Warning: Shuffle Join MERGEJOIN[215][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
PREHOOK: query: delete from tbl_ice where a in (select t1.a from tbl_ice t1
join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
diff --git
a/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_partitioned.q.out
b/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_partitioned.q.out
index 6f3cfd8cadb..39af2e00412 100644
---
a/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_partitioned.q.out
+++
b/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_partitioned.q.out
@@ -1623,7 +1623,7 @@ POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: default@tbl_standard_other
POSTHOOK: Lineage: tbl_standard_other.a SCRIPT []
POSTHOOK: Lineage: tbl_standard_other.b SCRIPT []
-Warning: Shuffle Join MERGEJOIN[189][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 8' is a cross product
+Warning: Shuffle Join MERGEJOIN[217][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 8' is a cross product
PREHOOK: query: explain update tbl_ice set b='The last one' where a in (select
t1.a from tbl_ice t1 join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
@@ -2082,7 +2082,7 @@ STAGE PLANS:
Stats Work
Basic Stats Work:
-Warning: Shuffle Join MERGEJOIN[189][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 8' is a cross product
+Warning: Shuffle Join MERGEJOIN[217][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 8' is a cross product
PREHOOK: query: update tbl_ice set b='The last one' where a in (select t1.a
from tbl_ice t1 join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
diff --git
a/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_unpartitioned.q.out
b/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_unpartitioned.q.out
index 01c7c92df47..35fe220f489 100644
---
a/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_unpartitioned.q.out
+++
b/iceberg/iceberg-handler/src/test/results/positive/update_iceberg_copy_on_write_unpartitioned.q.out
@@ -1602,7 +1602,7 @@ POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: default@tbl_standard_other
POSTHOOK: Lineage: tbl_standard_other.a SCRIPT []
POSTHOOK: Lineage: tbl_standard_other.b SCRIPT []
-Warning: Shuffle Join MERGEJOIN[222][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 7' is a cross product
+Warning: Shuffle Join MERGEJOIN[267][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
PREHOOK: query: explain update tbl_ice set b='The last one' where a in (select
t1.a from tbl_ice t1 join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
@@ -1624,40 +1624,20 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 10 <- Map 14 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
- Reducer 11 <- Reducer 10 (SIMPLE_EDGE)
- Reducer 12 <- Map 14 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
- Reducer 13 <- Reducer 12 (SIMPLE_EDGE), Union 4 (CONTAINS)
- Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 14 (SIMPLE_EDGE)
- Reducer 3 <- Map 14 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE), Union 4
(CONTAINS)
- Reducer 5 <- Reducer 2 (SIMPLE_EDGE)
- Reducer 6 <- Map 14 (SIMPLE_EDGE), Reducer 5 (SIMPLE_EDGE)
- Reducer 7 <- Reducer 6 (XPROD_EDGE), Reducer 9 (XPROD_EDGE)
- Reducer 8 <- Reducer 11 (SIMPLE_EDGE), Reducer 7 (SIMPLE_EDGE), Union
4 (CONTAINS)
- Reducer 9 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+ Reducer 10 <- Reducer 9 (SIMPLE_EDGE)
+ Reducer 11 <- Map 1 (SIMPLE_EDGE), Reducer 9 (SIMPLE_EDGE)
+ Reducer 12 <- Reducer 11 (SIMPLE_EDGE)
+ Reducer 13 <- Reducer 9 (CUSTOM_SIMPLE_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 10 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 13 (XPROD_EDGE), Reducer 2 (XPROD_EDGE)
+ Reducer 4 <- Reducer 12 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union
5 (CONTAINS)
+ Reducer 6 <- Map 1 (SIMPLE_EDGE), Reducer 9 (SIMPLE_EDGE), Union 5
(CONTAINS)
+ Reducer 7 <- Map 1 (SIMPLE_EDGE), Reducer 9 (SIMPLE_EDGE)
+ Reducer 8 <- Reducer 7 (SIMPLE_EDGE), Union 5 (CONTAINS)
+ Reducer 9 <- Map 1 (SIMPLE_EDGE), Map 14 (SIMPLE_EDGE)
#### A masked pattern was here ####
Vertices:
Map 1
- Map Operator Tree:
- TableScan
- alias: t2
- filterExpr: a is not null (type: boolean)
- Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: COMPLETE
- Filter Operator
- predicate: a is not null (type: boolean)
- Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: COMPLETE
- Select Operator
- expressions: a (type: int)
- outputColumnNames: _col0
- Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: COMPLETE
- Execution mode: vectorized
- Map 14
Map Operator Tree:
TableScan
alias: tbl_ice
@@ -1726,7 +1706,46 @@ STAGE PLANS:
Statistics: Num rows: 9 Data size: 36 Basic stats:
COMPLETE Column stats: NONE
value expressions: _col1 (type: string)
Execution mode: vectorized
+ Map 14
+ Map Operator Tree:
+ TableScan
+ alias: t2
+ filterExpr: a is not null (type: boolean)
+ Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: COMPLETE
+ Filter Operator
+ predicate: a is not null (type: boolean)
+ Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE
Column stats: COMPLETE
+ Select Operator
+ expressions: a (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 2 Data size: 8 Basic stats:
COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized
Reducer 10
+ Execution mode: vectorized
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: int)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 4 Data size: 17 Basic stats: COMPLETE
Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), true (type: boolean)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 4 Data size: 17 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 4 Data size: 17 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col1 (type: boolean)
+ Reducer 11
Reduce Operator Tree:
Merge Join Operator
condition map:
@@ -1742,7 +1761,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col1 (type: string)
Statistics: Num rows: 9 Data size: 39 Basic stats: COMPLETE
Column stats: NONE
- Reducer 11
+ Reducer 12
Execution mode: vectorized
Reduce Operator Tree:
Select Operator
@@ -1788,7 +1807,107 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 4 Data size: 17 Basic stats:
COMPLETE Column stats: NONE
- Reducer 12
+ Reducer 13
+ Execution mode: vectorized
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0), count(VALUE._col1)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
+ value expressions: _col0 (type: bigint), _col1 (type: bigint)
+ Reducer 2
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Outer Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col8
+ Statistics: Num rows: 9 Data size: 1900 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 9 Data size: 1900 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: string),
_col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type:
string), _col6 (type: bigint), _col8 (type: boolean)
+ Reducer 3
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0
+ 1
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col8, _col9, _col10
+ Statistics: Num rows: 9 Data size: 2053 Basic stats: COMPLETE
Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), _col1 (type: string), _col2
(type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type: string),
_col6 (type: bigint), _col9 (type: bigint), _col10 (type: bigint), _col8 (type:
boolean)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col7, _col8, _col10
+ Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: ((_col7 = 0L) or ((_col10 is not null and
(_col7 <> 0L)) or ((_col0 is null or (_col8 < _col7)) and null and (_col7 <>
0L) and _col10 is null)) is null or (_col10 is null and (_col8 >= _col7) and
_col0 is not null)) (type: boolean)
+ Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), _col1 (type: string),
_col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type:
string), _col6 (type: bigint)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4,
_col5, _col6
+ Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col5 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col5 (type: string)
+ Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type:
string), _col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col6
(type: bigint)
+ Reducer 4
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 _col5 (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
+ Statistics: Num rows: 9 Data size: 2258 Basic stats: COMPLETE
Column stats: NONE
+ Select Operator
+ expressions: _col3 (type: int), _col4 (type: bigint), _col5
(type: string), _col6 (type: bigint), _col0 (type: int), _col1 (type: string),
_col2 (type: int)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
+ Statistics: Num rows: 9 Data size: 2258 Basic stats:
COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 22 Data size: 3181 Basic stats:
COMPLETE Column stats: NONE
+ table:
+ input format:
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
+ output format:
org.apache.iceberg.mr.hive.HiveIcebergOutputFormat
+ serde: org.apache.iceberg.mr.hive.HiveIcebergSerDe
+ name: default.tbl_ice
+ Reducer 6
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+ Statistics: Num rows: 9 Data size: 79 Basic stats: COMPLETE
Column stats: NONE
+ Select Operator
+ expressions: _col2 (type: int), _col3 (type: bigint), _col4
(type: string), _col5 (type: bigint), _col0 (type: int), 'The last one' (type:
string), _col1 (type: int)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
+ Statistics: Num rows: 9 Data size: 79 Basic stats: COMPLETE
Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 22 Data size: 3181 Basic stats:
COMPLETE Column stats: NONE
+ table:
+ input format:
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
+ output format:
org.apache.iceberg.mr.hive.HiveIcebergOutputFormat
+ serde: org.apache.iceberg.mr.hive.HiveIcebergSerDe
+ name: default.tbl_ice
+ Reducer 7
Reduce Operator Tree:
Merge Join Operator
condition map:
@@ -1805,7 +1924,7 @@ STAGE PLANS:
Map-reduce partition columns: _col5 (type: string)
Statistics: Num rows: 9 Data size: 1900 Basic stats:
COMPLETE Column stats: NONE
value expressions: _col0 (type: int), _col1 (type: string),
_col2 (type: int), _col3 (type: int), _col4 (type: bigint)
- Reducer 13
+ Reducer 8
Execution mode: vectorized
Reduce Operator Tree:
Select Operator
@@ -1846,7 +1965,7 @@ STAGE PLANS:
output format:
org.apache.iceberg.mr.hive.HiveIcebergOutputFormat
serde: org.apache.iceberg.mr.hive.HiveIcebergSerDe
name: default.tbl_ice
- Reducer 2
+ Reducer 9
Reduce Operator Tree:
Merge Join Operator
condition map:
@@ -1874,162 +1993,31 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 9 Data size: 39 Basic stats:
COMPLETE Column stats: NONE
- Group By Operator
- aggregations: count(), count(_col0)
- minReductionHashAggr: 0.99
- mode: hash
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- null sort order:
- sort order:
- Statistics: Num rows: 1 Data size: 16 Basic stats:
COMPLETE Column stats: NONE
- value expressions: _col0 (type: bigint), _col1 (type:
bigint)
- Group By Operator
- keys: _col0 (type: int)
- minReductionHashAggr: 0.99
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 9 Data size: 39 Basic stats: COMPLETE
Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: int)
null sort order: z
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 9 Data size: 39 Basic stats:
COMPLETE Column stats: NONE
- Group By Operator
- keys: _col0 (type: int)
- minReductionHashAggr: 0.99
- mode: hash
- outputColumnNames: _col0
- Statistics: Num rows: 9 Data size: 39 Basic stats: COMPLETE
Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: int)
null sort order: z
sort order: +
Map-reduce partition columns: _col0 (type: int)
Statistics: Num rows: 9 Data size: 39 Basic stats:
COMPLETE Column stats: NONE
- Reducer 3
- Reduce Operator Tree:
- Merge Join Operator
- condition map:
- Left Semi Join 0 to 1
- keys:
- 0 _col0 (type: int)
- 1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
- Statistics: Num rows: 9 Data size: 79 Basic stats: COMPLETE
Column stats: NONE
- Select Operator
- expressions: _col2 (type: int), _col3 (type: bigint), _col4
(type: string), _col5 (type: bigint), _col0 (type: int), 'The last one' (type:
string), _col1 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
- Statistics: Num rows: 9 Data size: 79 Basic stats: COMPLETE
Column stats: NONE
- File Output Operator
- compressed: false
- Statistics: Num rows: 22 Data size: 3181 Basic stats:
COMPLETE Column stats: NONE
- table:
- input format:
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
- output format:
org.apache.iceberg.mr.hive.HiveIcebergOutputFormat
- serde: org.apache.iceberg.mr.hive.HiveIcebergSerDe
- name: default.tbl_ice
- Reducer 5
- Execution mode: vectorized
- Reduce Operator Tree:
- Group By Operator
- keys: KEY._col0 (type: int)
- mode: mergepartial
- outputColumnNames: _col0
- Statistics: Num rows: 4 Data size: 17 Basic stats: COMPLETE
Column stats: NONE
- Select Operator
- expressions: _col0 (type: int), true (type: boolean)
+ Group By Operator
+ aggregations: count(), count(_col0)
+ minReductionHashAggr: 0.99
+ mode: hash
outputColumnNames: _col0, _col1
- Statistics: Num rows: 4 Data size: 17 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- key expressions: _col0 (type: int)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col0 (type: int)
- Statistics: Num rows: 4 Data size: 17 Basic stats:
COMPLETE Column stats: NONE
- value expressions: _col1 (type: boolean)
- Reducer 6
- Reduce Operator Tree:
- Merge Join Operator
- condition map:
- Left Outer Join 0 to 1
- keys:
- 0 _col0 (type: int)
- 1 _col0 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col8
- Statistics: Num rows: 9 Data size: 1900 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- null sort order:
- sort order:
- Statistics: Num rows: 9 Data size: 1900 Basic stats:
COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type: string),
_col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type:
string), _col6 (type: bigint), _col8 (type: boolean)
- Reducer 7
- Reduce Operator Tree:
- Merge Join Operator
- condition map:
- Inner Join 0 to 1
- keys:
- 0
- 1
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col8, _col9, _col10
- Statistics: Num rows: 9 Data size: 2053 Basic stats: COMPLETE
Column stats: NONE
- Select Operator
- expressions: _col0 (type: int), _col1 (type: string), _col2
(type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type: string),
_col6 (type: bigint), _col9 (type: bigint), _col10 (type: bigint), _col8 (type:
boolean)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6, _col7, _col8, _col10
- Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
- Filter Operator
- predicate: ((_col7 = 0L) or ((_col10 is not null and
(_col7 <> 0L)) or ((_col0 is null or (_col8 < _col7)) and null and (_col7 <>
0L) and _col10 is null)) is null or (_col10 is null and (_col8 >= _col7) and
_col0 is not null)) (type: boolean)
- Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
- Select Operator
- expressions: _col0 (type: int), _col1 (type: string),
_col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col5 (type:
string), _col6 (type: bigint)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4,
_col5, _col6
- Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
- Reduce Output Operator
- key expressions: _col5 (type: string)
- null sort order: z
- sort order: +
- Map-reduce partition columns: _col5 (type: string)
- Statistics: Num rows: 9 Data size: 2053 Basic stats:
COMPLETE Column stats: NONE
- value expressions: _col0 (type: int), _col1 (type:
string), _col2 (type: int), _col3 (type: int), _col4 (type: bigint), _col6
(type: bigint)
- Reducer 8
- Reduce Operator Tree:
- Merge Join Operator
- condition map:
- Left Semi Join 0 to 1
- keys:
- 0 _col5 (type: string)
- 1 _col0 (type: string)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
- Statistics: Num rows: 9 Data size: 2258 Basic stats: COMPLETE
Column stats: NONE
- Select Operator
- expressions: _col3 (type: int), _col4 (type: bigint), _col5
(type: string), _col6 (type: bigint), _col0 (type: int), _col1 (type: string),
_col2 (type: int)
- outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5,
_col6
- Statistics: Num rows: 9 Data size: 2258 Basic stats:
COMPLETE Column stats: NONE
- File Output Operator
- compressed: false
- Statistics: Num rows: 22 Data size: 3181 Basic stats:
COMPLETE Column stats: NONE
- table:
- input format:
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
- output format:
org.apache.iceberg.mr.hive.HiveIcebergOutputFormat
- serde: org.apache.iceberg.mr.hive.HiveIcebergSerDe
- name: default.tbl_ice
- Reducer 9
- Execution mode: vectorized
- Reduce Operator Tree:
- Group By Operator
- aggregations: count(VALUE._col0), count(VALUE._col1)
- mode: mergepartial
- outputColumnNames: _col0, _col1
- Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- Reduce Output Operator
- null sort order:
- sort order:
Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE
Column stats: NONE
- value expressions: _col0 (type: bigint), _col1 (type: bigint)
- Union 4
- Vertex: Union 4
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 16 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col0 (type: bigint), _col1 (type:
bigint)
+ Union 5
+ Vertex: Union 5
Stage: Stage-2
Dependency Collection
@@ -2048,7 +2036,7 @@ STAGE PLANS:
Stats Work
Basic Stats Work:
-Warning: Shuffle Join MERGEJOIN[222][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 7' is a cross product
+Warning: Shuffle Join MERGEJOIN[267][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in
Stage 'Reducer 3' is a cross product
PREHOOK: query: update tbl_ice set b='The last one' where a in (select t1.a
from tbl_ice t1 join tbl_standard_other t2 on t1.a = t2.a)
PREHOOK: type: QUERY
PREHOOK: Input: default@tbl_ice
diff --git a/ql/src/test/results/clientpositive/llap/q93_with_constraints.q.out
b/ql/src/test/results/clientpositive/llap/q93_with_constraints.q.out
index ce8b65f307e..7cc4050f15b 100644
--- a/ql/src/test/results/clientpositive/llap/q93_with_constraints.q.out
+++ b/ql/src/test/results/clientpositive/llap/q93_with_constraints.q.out
@@ -239,10 +239,12 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 6 (SIMPLE_EDGE)
- Reducer 3 <- Map 7 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+ Map 8 <- Reducer 6 (BROADCAST_EDGE)
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
+ Reducer 3 <- Map 8 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
Reducer 4 <- Reducer 3 (SIMPLE_EDGE)
Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
+ Reducer 6 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -267,7 +269,7 @@ STAGE PLANS:
value expressions: _col0 (type: int), _col2 (type:
int), _col3 (type: int)
Execution mode: vectorized, llap
LLAP IO: all inputs
- Map 6
+ Map 7
Map Operator Tree:
TableScan
alias: reason
@@ -288,14 +290,14 @@ STAGE PLANS:
Statistics: Num rows: 5 Data size: 913 Basic stats:
COMPLETE Column stats: NONE
Execution mode: vectorized, llap
LLAP IO: all inputs
- Map 7
+ Map 8
Map Operator Tree:
TableScan
alias: store_sales
- filterExpr: (ss_item_sk is not null and ss_ticket_number is
not null) (type: boolean)
+ filterExpr: (ss_item_sk is not null and ss_ticket_number is
not null and ss_item_sk BETWEEN DynamicValue(RS[73]_col0) AND
DynamicValue(RS[73]_col1) and ss_ticket_number BETWEEN
DynamicValue(RS[73]_col2) AND DynamicValue(RS[73]_col3) and
in_bloom_filter(hash(ss_item_sk,ss_ticket_number), DynamicValue(RS[73]_col4)))
(type: boolean)
Statistics: Num rows: 575995635 Data size: 70041069312 Basic
stats: COMPLETE Column stats: NONE
Filter Operator
- predicate: (ss_item_sk is not null and ss_ticket_number is
not null) (type: boolean)
+ predicate: (ss_item_sk is not null and ss_ticket_number is
not null and ss_item_sk BETWEEN DynamicValue(RS[73]_col0) AND
DynamicValue(RS[73]_col1) and ss_ticket_number BETWEEN
DynamicValue(RS[73]_col2) AND DynamicValue(RS[73]_col3) and
in_bloom_filter(hash(ss_item_sk,ss_ticket_number), DynamicValue(RS[73]_col4)))
(type: boolean)
Statistics: Num rows: 518396071 Data size: 63036962320
Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: ss_item_sk (type: int), ss_customer_sk
(type: int), ss_ticket_number (type: int), ss_quantity (type: int),
ss_sales_price (type: decimal(7,2))
@@ -328,6 +330,21 @@ STAGE PLANS:
Map-reduce partition columns: _col0 (type: int), _col2
(type: int)
Statistics: Num rows: 60182753 Data size: 914777879 Basic
stats: COMPLETE Column stats: NONE
value expressions: _col3 (type: int)
+ Select Operator
+ expressions: _col0 (type: int), _col2 (type: int),
hash(_col0,_col2) (type: int)
+ outputColumnNames: _col0, _col1, _col3
+ Statistics: Num rows: 60182753 Data size: 914777879 Basic
stats: COMPLETE Column stats: NONE
+ Group By Operator
+ aggregations: min(_col0), max(_col0), min(_col1),
max(_col1), bloom_filter(_col3, expectedEntries=60182752)
+ minReductionHashAggr: 0.99
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4
+ Statistics: Num rows: 1 Data size: 160 Basic stats:
COMPLETE Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 160 Basic stats:
COMPLETE Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int),
_col2 (type: int), _col3 (type: int), _col4 (type: binary)
Reducer 3
Execution mode: llap
Reduce Operator Tree:
@@ -394,6 +411,19 @@ STAGE PLANS:
input format:
org.apache.hadoop.mapred.SequenceFileInputFormat
output format:
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde:
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 6
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: min(VALUE._col0), max(VALUE._col1),
min(VALUE._col2), max(VALUE._col3), bloom_filter(VALUE._col4, 1,
expectedEntries=60182752)
+ mode: final
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4
+ Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE
Column stats: NONE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 160 Basic stats: COMPLETE
Column stats: NONE
+ value expressions: _col0 (type: int), _col1 (type: int),
_col2 (type: int), _col3 (type: int), _col4 (type: binary)
Stage: Stage-0
Fetch Operator
diff --git
a/ql/src/test/results/clientpositive/llap/vector_outer_join_constants.q.out
b/ql/src/test/results/clientpositive/llap/vector_outer_join_constants.q.out
index 9ea03dbdcca..6fb59f4dd2a 100644
--- a/ql/src/test/results/clientpositive/llap/vector_outer_join_constants.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_outer_join_constants.q.out
@@ -184,7 +184,7 @@ POSTHOOK: type: ANALYZE_TABLE
POSTHOOK: Input: default@lday
POSTHOOK: Output: default@lday
#### A masked pattern was here ####
-Warning: Shuffle Join MERGEJOIN[79][tables = [$hdt$_0, $hdt$_1]] in Stage
'Reducer 5' is a cross product
+Warning: Shuffle Join MERGEJOIN[129][tables = [$hdt$_0, $hdt$_1]] in Stage
'Reducer 5' is a cross product
PREHOOK: query: EXPLAIN VECTORIZATION DETAIL
select * from
(select item1.S_ID S_ID,
@@ -348,6 +348,7 @@ STAGE PLANS:
TableScan
alias: lday2
filterExpr: (ly_date is not null and d_date is not null)
(type: boolean)
+ probeDecodeDetails: cacheKey:HASH_MAP_MAPJOIN_126_container,
bigKeyColName:d_date, smallTablePos:1, keyRatio:1.0
Statistics: Num rows: 2 Data size: 160 Basic stats: COMPLETE
Column stats: COMPLETE
TableScan Vectorization:
native: true
@@ -800,7 +801,7 @@ STAGE PLANS:
Processor Tree:
ListSink
-Warning: Shuffle Join MERGEJOIN[79][tables = [$hdt$_0, $hdt$_1]] in Stage
'Reducer 5' is a cross product
+Warning: Shuffle Join MERGEJOIN[129][tables = [$hdt$_0, $hdt$_1]] in Stage
'Reducer 5' is a cross product
PREHOOK: query: select * from
(select item1.S_ID S_ID,
ytday1.D_DATE D_DATE