blob: 5ff642c51e73153cc574f12f3149de5652c16683 [file] [log] [blame]
select name, zip
from functional.testtbl
order by name
limit 1
---- PLAN
PLAN-ROOT SINK
|
01:TOP-N [LIMIT=1]
| order by: name ASC
| row-size=16B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
row-size=16B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:MERGING-EXCHANGE [UNPARTITIONED]
| order by: name ASC
| limit: 1
|
01:TOP-N [LIMIT=1]
| order by: name ASC
| row-size=16B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
row-size=16B cardinality=0
====
select zip, count(*)
from functional.testtbl
where name like 'm%'
group by 1
order by 2 desc
limit 10
---- PLAN
PLAN-ROOT SINK
|
02:TOP-N [LIMIT=10]
| order by: count(*) DESC
| row-size=12B cardinality=0
|
01:AGGREGATE [FINALIZE]
| output: count(*)
| group by: zip
| row-size=12B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
predicates: name LIKE 'm%'
row-size=16B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
05:MERGING-EXCHANGE [UNPARTITIONED]
| order by: count(*) DESC
| limit: 10
|
02:TOP-N [LIMIT=10]
| order by: count(*) DESC
| row-size=12B cardinality=0
|
04:AGGREGATE [FINALIZE]
| output: count:merge(*)
| group by: zip
| row-size=12B cardinality=0
|
03:EXCHANGE [HASH(zip)]
|
01:AGGREGATE [STREAMING]
| output: count(*)
| group by: zip
| row-size=12B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
predicates: name LIKE 'm%'
row-size=16B cardinality=0
====
select int_col, sum(float_col)
from functional_hbase.alltypessmall
where id < 5
group by 1
order by 2
limit 4
---- PLAN
PLAN-ROOT SINK
|
02:TOP-N [LIMIT=4]
| order by: sum(float_col) ASC
| row-size=12B cardinality=4
|
01:AGGREGATE [FINALIZE]
| output: sum(float_col)
| group by: int_col
| row-size=12B cardinality=5
|
00:SCAN HBASE [functional_hbase.alltypessmall]
predicates: id < 5
row-size=12B cardinality=5
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
05:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(float_col) ASC
| limit: 4
|
02:TOP-N [LIMIT=4]
| order by: sum(float_col) ASC
| row-size=12B cardinality=4
|
04:AGGREGATE [FINALIZE]
| output: sum:merge(float_col)
| group by: int_col
| row-size=12B cardinality=5
|
03:EXCHANGE [HASH(int_col)]
|
01:AGGREGATE [STREAMING]
| output: sum(float_col)
| group by: int_col
| row-size=12B cardinality=5
|
00:SCAN HBASE [functional_hbase.alltypessmall]
predicates: id < 5
row-size=12B cardinality=5
====
select int_col, sum(float_col), min(float_col)
from functional_hbase.alltypessmall
group by 1
order by 2,3 desc
limit 0
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# Test correct identification of the implicit aliasing of int_col in the select
# list to t1.int_col;
# t2.int_col is not null references enough cols of t2 to prevent a broadcast join
select t1.int_col
from functional.alltypessmall t1, functional.alltypessmall t2
where t1.id = t2.id and t2.int_col is not null
order by int_col
limit 2
---- PLAN
PLAN-ROOT SINK
|
03:TOP-N [LIMIT=2]
| order by: int_col ASC
| row-size=4B cardinality=2
|
02:HASH JOIN [INNER JOIN]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
| row-size=16B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall t2]
| partitions=4/4 files=4 size=6.32KB
| predicates: t2.int_col IS NOT NULL
| row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall t1]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> t1.id
row-size=8B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
05:MERGING-EXCHANGE [UNPARTITIONED]
| order by: int_col ASC
| limit: 2
|
03:TOP-N [LIMIT=2]
| order by: int_col ASC
| row-size=4B cardinality=2
|
02:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
| row-size=16B cardinality=10
|
|--04:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [functional.alltypessmall t2]
| partitions=4/4 files=4 size=6.32KB
| predicates: t2.int_col IS NOT NULL
| row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall t1]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> t1.id
row-size=8B cardinality=100
====
# Test that the top-n is on int_col and not on the id column
select int_col as id from functional.alltypessmall order by id limit 2
---- PLAN
PLAN-ROOT SINK
|
01:TOP-N [LIMIT=2]
| order by: int_col ASC
| row-size=4B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
row-size=4B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:MERGING-EXCHANGE [UNPARTITIONED]
| order by: int_col ASC
| limit: 2
|
01:TOP-N [LIMIT=2]
| order by: int_col ASC
| row-size=4B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
row-size=4B cardinality=100
====
# Test that the top-n is on id and not on int_col
select int_col as id from functional.alltypessmall order by functional.alltypessmall.id limit 2
---- PLAN
PLAN-ROOT SINK
|
01:TOP-N [LIMIT=2]
| order by: id ASC
| row-size=8B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
row-size=8B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:MERGING-EXCHANGE [UNPARTITIONED]
| order by: id ASC
| limit: 2
|
01:TOP-N [LIMIT=2]
| order by: id ASC
| row-size=8B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
row-size=8B cardinality=100
====
# Test that the limit/offset is propagated correctly to child nodes. The TOP-N node
# should have the limit/offset specified in the query. Child sort nodes should have a
# limit equal to the parent's (limit + offset) and offset equal to 0.
select t1.int_col from functional.alltypessmall t1, functional.alltypessmall t2
where t1.id = t2.id and t2.int_col is not null
order by int_col
limit 10 offset 5
---- PLAN
PLAN-ROOT SINK
|
03:TOP-N [LIMIT=10 OFFSET=5]
| order by: int_col ASC
| row-size=4B cardinality=10
|
02:HASH JOIN [INNER JOIN]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
| row-size=16B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall t2]
| partitions=4/4 files=4 size=6.32KB
| predicates: t2.int_col IS NOT NULL
| row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall t1]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> t1.id
row-size=8B cardinality=100
---- SCANRANGELOCATIONS
NODE 0:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=1/090101.txt 0:1610
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=2/090201.txt 0:1621
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=3/090301.txt 0:1620
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=4/090401.txt 0:1621
NODE 1:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=1/090101.txt 0:1610
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=2/090201.txt 0:1621
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=3/090301.txt 0:1620
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=4/090401.txt 0:1621
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
05:MERGING-EXCHANGE [UNPARTITIONED]
| offset: 5
| order by: int_col ASC
| limit: 10
|
03:TOP-N [LIMIT=15]
| order by: int_col ASC
| row-size=4B cardinality=10
|
02:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
| row-size=16B cardinality=10
|
|--04:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [functional.alltypessmall t2]
| partitions=4/4 files=4 size=6.32KB
| predicates: t2.int_col IS NOT NULL
| row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall t1]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> t1.id
row-size=8B cardinality=100
====
# test distributed top-n over a union (IMPALA-831)
select int_col, bigint_col from
(select * from functional.alltypes
union all
select * from functional.alltypessmall) t
order by int_col desc limit 10 offset 5
---- PLAN
PLAN-ROOT SINK
|
03:TOP-N [LIMIT=10 OFFSET=5]
| order by: int_col DESC
| row-size=12B cardinality=10
|
00:UNION
| pass-through-operands: all
| row-size=12B cardinality=7.40K
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=12B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=12B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
04:MERGING-EXCHANGE [UNPARTITIONED]
| offset: 5
| order by: int_col DESC
| limit: 10
|
03:TOP-N [LIMIT=15]
| order by: int_col DESC
| row-size=12B cardinality=15
|
00:UNION
| pass-through-operands: all
| row-size=12B cardinality=7.40K
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=12B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=12B cardinality=7.30K
====
# test distributed top-n over a union distinct (IMPALA-831)
select int_col, bigint_col from
(select * from functional.alltypes
union distinct
select * from functional.alltypessmall) t
order by int_col desc limit 10 offset 5
---- PLAN
PLAN-ROOT SINK
|
04:TOP-N [LIMIT=10 OFFSET=5]
| order by: int_col DESC
| row-size=12B cardinality=10
|
03:AGGREGATE [FINALIZE]
| group by: id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month
| row-size=89B cardinality=7.40K
|
00:UNION
| pass-through-operands: all
| row-size=89B cardinality=7.40K
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=89B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=89B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:MERGING-EXCHANGE [UNPARTITIONED]
| offset: 5
| order by: int_col DESC
| limit: 10
|
04:TOP-N [LIMIT=15]
| order by: int_col DESC
| row-size=12B cardinality=15
|
06:AGGREGATE [FINALIZE]
| group by: id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month
| row-size=89B cardinality=7.40K
|
05:EXCHANGE [HASH(id,bool_col,tinyint_col,smallint_col,int_col,bigint_col,float_col,double_col,date_string_col,string_col,timestamp_col,year,month)]
|
03:AGGREGATE [STREAMING]
| group by: id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month
| row-size=89B cardinality=7.40K
|
00:UNION
| pass-through-operands: all
| row-size=89B cardinality=7.40K
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=89B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=89B cardinality=7.30K
====
# test that top-n is not placed below an unpartitioned exchange with a limit
select * from (select * from functional.alltypes limit 10) t
order by int_col limit 10
---- PLAN
PLAN-ROOT SINK
|
01:TOP-N [LIMIT=10]
| order by: int_col ASC
| row-size=89B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
limit: 10
row-size=89B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:TOP-N [LIMIT=10]
| order by: int_col ASC
| row-size=89B cardinality=10
|
02:EXCHANGE [UNPARTITIONED]
| limit: 10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
limit: 10
row-size=89B cardinality=10
====
# test that top-n is not placed below an unpartitioned exchange with a limit
select * from
(select * from functional.alltypes
union all
(select * from functional.alltypessmall) limit 10) t
order by int_col limit 10
---- PLAN
PLAN-ROOT SINK
|
03:TOP-N [LIMIT=10]
| order by: int_col ASC
| row-size=89B cardinality=10
|
00:UNION
| pass-through-operands: all
| limit: 10
| row-size=89B cardinality=10
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=89B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=89B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:TOP-N [LIMIT=10]
| order by: int_col ASC
| row-size=89B cardinality=10
|
04:EXCHANGE [UNPARTITIONED]
| limit: 10
|
00:UNION
| pass-through-operands: all
| limit: 10
| row-size=89B cardinality=10
|
|--02:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| row-size=89B cardinality=100
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
row-size=89B cardinality=7.30K
====