You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "lotan (Jira)" <ji...@apache.org> on 2022/10/29 09:38:00 UTC
[jira] [Created] (HIVE-26678) In the filter criteria associated with multiple tables, the filter result of the subquery by not in or in is incorrect.
lotan created HIVE-26678:
----------------------------
Summary: In the filter criteria associated with multiple tables, the filter result of the subquery by not in or in is incorrect.
Key: HIVE-26678
URL: https://issues.apache.org/jira/browse/HIVE-26678
Project: Hive
Issue Type: Bug
Components: CBO
Affects Versions: 3.1.0
Reporter: lotan
Fix For: 4.0.0
create testtable as follow:
create table test101 (id string,id2 string);
create table test102 (id string,id2 string);
create table test103 (id string,id2 string);
create table test104 (id string,id2 string);
when cbo is false,run the following SQL statement:
explain select count(1) from test101 t1
left join test102 t2 on t1.id=t2.id
left join test103 t3 on t1.id=t3.id2
where t1.id in (select s.id from test104 s)
and t3.id2='123';
you will see:
The filter criteria in the right table are lost.
The execution plan is as follows:
+-----------------------------------------------------------------------------------------------------+
| Explain |
+-----------------------------------------------------------------------------------------------------+
| STAGE DEPENDENCIES: |
| Stage-9 is a root stage |
| Stage-3 depends on stages: Stage-9 |
| Stage-0 depends on stages: Stage-3 |
| |
| STAGE PLANS: |
| Stage: Stage-9 |
| Map Reduce Local Work |
| Alias -> Map Local Tables: |
| sq_1:s |
| Fetch Operator |
| limit: -1 |
| t2 |
| Fetch Operator |
| limit: -1 |
| t3 |
| Fetch Operator |
| limit: -1 |
| Alias -> Map Local Operator Tree: |
| sq_1:s |
| TableScan |
| alias: s |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Filter Operator |
| predicate: id is not null (type: boolean) |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Select Operator |
| expressions: id (type: string) |
| outputColumnNames: _col0 |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Group By Operator |
| keys: _col0 (type: string) |
| mode: hash |
| outputColumnNames: _col0 |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| HashTable Sink Operator |
| keys: |
| 0 _col0 (type: string) |
| 1 _col0 (type: string) |
| t2 |
| TableScan |
| alias: t2 |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Filter Operator |
| predicate: id is not null (type: boolean) |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| HashTable Sink Operator |
| keys: |
| 0 id (type: string) |
| 1 id (type: string) |
| 2 id2 (type: string) |
| t3 |
| TableScan |
| alias: t3 |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Filter Operator |
| predicate: id2 is not null (type: boolean) |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| HashTable Sink Operator |
| keys: |
| 0 id (type: string) |
| 1 id (type: string) |
| 2 id2 (type: string) |
| |
| Stage: Stage-3 |
| Map Reduce |
| Map Operator Tree: |
| TableScan |
| alias: t1 |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Filter Operator |
| predicate: id is not null (type: boolean) |
| Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Map Join Operator |
| condition map: |
| Left Outer Join 0 to 1 |
| Left Outer Join 0 to 2 |
| keys: |
| 0 id (type: string) |
| 1 id (type: string) |
| 2 id2 (type: string) |
| outputColumnNames: _col0 |
| Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Map Join Operator |
| condition map: |
| Left Semi Join 0 to 1 |
| keys: |
| 0 _col0 (type: string) |
| 1 _col0 (type: string) |
| Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE |
| Group By Operator |
| aggregations: count(1) |
| mode: hash |
| outputColumnNames: _col0 |
| Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE |
| Reduce Output Operator |
| sort order: |
| Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE |
| value expressions: _col0 (type: bigint) |
| Local Work: |
+-----------------------------------------------------------------------------------------------------+
| Explain |
+-----------------------------------------------------------------------------------------------------+
| Map Reduce Local Work |
| Reduce Operator Tree: |
| Group By Operator |
| aggregations: count(VALUE._col0) |
| mode: mergepartial |
| outputColumnNames: _col0 |
| Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE |
| File Output Operator |
| compressed: false |
| Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE |
| table: |
| input format: org.apache.hadoop.mapred.SequenceFileInputFormat |
| output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat |
| serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
| |
| Stage: Stage-0 |
| Fetch Operator |
| limit: -1 |
| Processor Tree: |
| ListSink |
| |
+-----------------------------------------------------------------------------------------------------+
--
This message was sent by Atlassian Jira
(v8.20.10#820010)