blob: 2d717556ef9fcfb8b4a1cab6fcd6a1e132b1af64 [file] [log] [blame]
# Right outer joins with non-equi join predicates
select straight_join *
from functional.alltypestiny a right outer join functional.alltypes b
on a.id != b.id or a.int_col < b.int_col
right outer join functional.alltypesagg c
on a.smallint_col >= c.smallint_col
where a.id < 10 and c.bigint_col = 10
---- PLAN
PLAN-ROOT SINK
|
04:NESTED LOOP JOIN [RIGHT OUTER JOIN]
| join predicates: a.smallint_col >= c.smallint_col
| predicates: a.id < 10
| row-size=273B cardinality=7.30K
|
|--02:SCAN HDFS [functional.alltypesagg c]
| partitions=11/11 files=11 size=814.73KB
| predicates: c.bigint_col = 10
| row-size=95B cardinality=11
|
03:NESTED LOOP JOIN [RIGHT OUTER JOIN]
| join predicates: a.id != b.id OR a.int_col < b.int_col
| row-size=178B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
| partitions=24/24 files=24 size=478.45KB
| row-size=89B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypestiny a]
partitions=4/4 files=4 size=460B
predicates: a.id < 10
row-size=89B cardinality=1
---- DISTRIBUTEDPLAN
NotImplementedException: Error generating a valid execution plan for this query. A RIGHT OUTER JOIN type with no equi-join predicates can only be executed with a single node plan.
====
# Right semi joins with non-equi join predicates
select straight_join *
from functional.alltypestiny a right semi join functional.alltypessmall c
on a.tinyint_col > c.tinyint_col
right semi join functional.alltypesagg d
on c.tinyint_col < d.bigint_col
where d.bigint_col < 10
---- PLAN
PLAN-ROOT SINK
|
04:NESTED LOOP JOIN [RIGHT SEMI JOIN]
| join predicates: c.tinyint_col < d.bigint_col
| row-size=95B cardinality=1.10K
|
|--02:SCAN HDFS [functional.alltypesagg d]
| partitions=11/11 files=11 size=814.73KB
| predicates: d.bigint_col < 10
| row-size=95B cardinality=1.10K
|
03:NESTED LOOP JOIN [RIGHT SEMI JOIN]
| join predicates: a.tinyint_col > c.tinyint_col
| row-size=1B cardinality=100
|
|--01:SCAN HDFS [functional.alltypessmall c]
| partitions=4/4 files=4 size=6.32KB
| row-size=1B cardinality=100
|
00:SCAN HDFS [functional.alltypestiny a]
partitions=4/4 files=4 size=460B
row-size=1B cardinality=8
---- DISTRIBUTEDPLAN
NotImplementedException: Error generating a valid execution plan for this query. A RIGHT SEMI JOIN type with no equi-join predicates can only be executed with a single node plan.
====
# Full outer joins with non-equi join predicates
select straight_join *
from functional.alltypestiny a full outer join functional.alltypessmall b
on a.id != b.id or a.int_col != b.int_col
full outer join functional.alltypesagg c
on a.tinyint_col > c.tinyint_col
full outer join functional.alltypes d
on c.int_col > d.int_col
where a.bigint_col != c.bigint_col and a.id < 10
---- PLAN
PLAN-ROOT SINK
|
06:NESTED LOOP JOIN [FULL OUTER JOIN]
| join predicates: c.int_col > d.int_col
| predicates: a.bigint_col != c.bigint_col, a.id < 10
| row-size=362B cardinality=18.40K
|
|--03:SCAN HDFS [functional.alltypes d]
| partitions=24/24 files=24 size=478.45KB
| row-size=89B cardinality=7.30K
|
05:NESTED LOOP JOIN [FULL OUTER JOIN]
| join predicates: a.tinyint_col > c.tinyint_col
| row-size=273B cardinality=11.10K
|
|--02:SCAN HDFS [functional.alltypesagg c]
| partitions=11/11 files=11 size=814.73KB
| row-size=95B cardinality=11.00K
|
04:NESTED LOOP JOIN [FULL OUTER JOIN]
| join predicates: a.id != b.id OR a.int_col != b.int_col
| row-size=178B cardinality=101
|
|--01:SCAN HDFS [functional.alltypessmall b]
| partitions=4/4 files=4 size=6.32KB
| row-size=89B cardinality=100
|
00:SCAN HDFS [functional.alltypestiny a]
partitions=4/4 files=4 size=460B
predicates: a.id < 10
row-size=89B cardinality=1
---- DISTRIBUTEDPLAN
NotImplementedException: Error generating a valid execution plan for this query. A FULL OUTER JOIN type with no equi-join predicates can only be executed with a single node plan.
====
# Right anti join with non-equi join predicates
select straight_join count(*)
from functional.alltypestiny a right anti join functional.alltypessmall b
on a.id < b.id
where b.int_col = 5
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
| output: count(*)
| row-size=8B cardinality=1
|
02:NESTED LOOP JOIN [RIGHT ANTI JOIN]
| join predicates: a.id < b.id
| row-size=8B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall b]
| partitions=4/4 files=4 size=6.32KB
| predicates: b.int_col = 5
| row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypestiny a]
partitions=4/4 files=4 size=460B
row-size=4B cardinality=8
---- DISTRIBUTEDPLAN
NotImplementedException: Error generating a valid execution plan for this query. A RIGHT ANTI JOIN type with no equi-join predicates can only be executed with a single node plan.
====
# Inner and right joins with non-equi join predicates
select straight_join count(*)
from functional.alltypestiny a inner join functional.alltypessmall b on a.id < b.id
right outer join functional.alltypesagg c on a.int_col != c.int_col
right semi join functional.alltypes d on c.tinyint_col < d.tinyint_col
right anti join functional.alltypesnopart e on d.tinyint_col > e.tinyint_col
where e.id < 10
---- PLAN
PLAN-ROOT SINK
|
09:AGGREGATE [FINALIZE]
| output: count(*)
| row-size=8B cardinality=0
|
08:NESTED LOOP JOIN [RIGHT ANTI JOIN]
| join predicates: d.tinyint_col > e.tinyint_col
| row-size=5B cardinality=0
|
|--04:SCAN HDFS [functional.alltypesnopart e]
| partitions=1/1 files=0 size=0B
| predicates: e.id < 10
| row-size=5B cardinality=0
|
07:NESTED LOOP JOIN [RIGHT SEMI JOIN]
| join predicates: c.tinyint_col < d.tinyint_col
| row-size=1B cardinality=7.30K
|
|--03:SCAN HDFS [functional.alltypes d]
| partitions=24/24 files=24 size=478.45KB
| row-size=1B cardinality=7.30K
|
06:NESTED LOOP JOIN [RIGHT OUTER JOIN]
| join predicates: a.int_col != c.int_col
| row-size=17B cardinality=11.00K
|
|--02:SCAN HDFS [functional.alltypesagg c]
| partitions=11/11 files=11 size=814.73KB
| row-size=5B cardinality=11.00K
|
05:NESTED LOOP JOIN [INNER JOIN]
| predicates: a.id < b.id
| row-size=12B cardinality=8
|
|--01:SCAN HDFS [functional.alltypessmall b]
| partitions=4/4 files=4 size=6.32KB
| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypestiny a]
partitions=4/4 files=4 size=460B
row-size=8B cardinality=8
---- DISTRIBUTEDPLAN
NotImplementedException: Error generating a valid execution plan for this query. A RIGHT ANTI JOIN type with no equi-join predicates can only be executed with a single node plan.
====
# Right semi and outer joins are inverted to make them executable.
# Same query as above but without the straight join hint.
select count(*)
from functional.alltypestiny a inner join functional.alltypessmall b on a.id < b.id
right outer join functional.alltypesagg c on a.int_col != c.int_col
right semi join functional.alltypes d on c.tinyint_col < d.tinyint_col
right anti join functional.alltypesnopart e on d.tinyint_col > e.tinyint_col
where e.id < 10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
15:AGGREGATE [FINALIZE]
| output: count:merge(*)
| row-size=8B cardinality=0
|
14:EXCHANGE [UNPARTITIONED]
|
09:AGGREGATE
| output: count(*)
| row-size=8B cardinality=0
|
08:NESTED LOOP JOIN [LEFT ANTI JOIN, BROADCAST]
| join predicates: d.tinyint_col > e.tinyint_col
| row-size=5B cardinality=0
|
|--13:EXCHANGE [BROADCAST]
| |
| 07:NESTED LOOP JOIN [LEFT SEMI JOIN, BROADCAST]
| | join predicates: c.tinyint_col < d.tinyint_col
| | row-size=1B cardinality=7.30K
| |
| |--12:EXCHANGE [BROADCAST]
| | |
| | 06:NESTED LOOP JOIN [LEFT OUTER JOIN, BROADCAST]
| | | join predicates: a.int_col != c.int_col
| | | row-size=17B cardinality=11.00K
| | |
| | |--11:EXCHANGE [BROADCAST]
| | | |
| | | 05:NESTED LOOP JOIN [INNER JOIN, BROADCAST]
| | | | predicates: a.id < b.id
| | | | row-size=12B cardinality=100
| | | |
| | | |--10:EXCHANGE [BROADCAST]
| | | | |
| | | | 00:SCAN HDFS [functional.alltypestiny a]
| | | | partitions=4/4 files=4 size=460B
| | | | row-size=8B cardinality=8
| | | |
| | | 01:SCAN HDFS [functional.alltypessmall b]
| | | partitions=4/4 files=4 size=6.32KB
| | | row-size=4B cardinality=100
| | |
| | 02:SCAN HDFS [functional.alltypesagg c]
| | partitions=11/11 files=11 size=814.73KB
| | row-size=5B cardinality=11.00K
| |
| 03:SCAN HDFS [functional.alltypes d]
| partitions=24/24 files=24 size=478.45KB
| row-size=1B cardinality=7.30K
|
04:SCAN HDFS [functional.alltypesnopart e]
partitions=1/1 files=0 size=0B
predicates: e.id < 10
row-size=5B cardinality=0
====
# IMPALA-5689: Do not invert a left outer join with no equi-join predicates.
select * from (
select distinct int_col
from functional.alltypes) t1
left outer join functional.alltypes t2 on (t2.bigint_col=5)
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:EXCHANGE [UNPARTITIONED]
|
03:NESTED LOOP JOIN [LEFT OUTER JOIN, BROADCAST]
| row-size=93B cardinality=10
|
|--06:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [functional.alltypes t2]
| partitions=24/24 files=24 size=478.45KB
| predicates: (t2.bigint_col = 5)
| row-size=89B cardinality=730
|
05:AGGREGATE [FINALIZE]
| group by: int_col
| row-size=4B cardinality=10
|
04:EXCHANGE [HASH(int_col)]
|
01:AGGREGATE [STREAMING]
| group by: int_col
| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=4B cardinality=7.30K
====
# IMPALA-5689: Do not invert a left semi join with no equi-join predicates.
select * from (
select distinct int_col
from functional.alltypes) t1
left semi join functional.alltypes t2 on (t2.bigint_col=5)
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:EXCHANGE [UNPARTITIONED]
|
03:NESTED LOOP JOIN [LEFT SEMI JOIN, BROADCAST]
| row-size=4B cardinality=10
|
|--06:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [functional.alltypes t2]
| partitions=24/24 files=24 size=478.45KB
| predicates: (t2.bigint_col = 5)
| row-size=8B cardinality=730
|
05:AGGREGATE [FINALIZE]
| group by: int_col
| row-size=4B cardinality=10
|
04:EXCHANGE [HASH(int_col)]
|
01:AGGREGATE [STREAMING]
| group by: int_col
| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=4B cardinality=7.30K
====