You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2019/01/12 18:19:20 UTC
[21/26] impala git commit: IMPALA-8021: Add estimated cardinality to
EXPLAIN output
http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/inline-view-limit.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/inline-view-limit.test b/testdata/workloads/functional-planner/queries/PlannerTest/inline-view-limit.test
index c75c02d..266d528 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/inline-view-limit.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/inline-view-limit.test
@@ -6,6 +6,7 @@ PLAN-ROOT SINK
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
predicates: functional.alltypessmall.id < 5
+ row-size=89B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -14,6 +15,7 @@ PLAN-ROOT SINK
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
predicates: functional.alltypessmall.id < 5
+ row-size=89B cardinality=10
====
# predicate pushdown is prevented in presence of limit clause
select * from (select * from functional.alltypessmall limit 10) a where id < 5 limit 5
@@ -23,16 +25,19 @@ PLAN-ROOT SINK
01:SELECT
| predicates: functional.alltypessmall.id < 5
| limit: 5
+| row-size=89B cardinality=1
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
limit: 10
+ row-size=89B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:SELECT
| predicates: functional.alltypessmall.id < 5
| limit: 5
+| row-size=89B cardinality=1
|
02:EXCHANGE [UNPARTITIONED]
| limit: 10
@@ -40,6 +45,7 @@ PLAN-ROOT SINK
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
limit: 10
+ row-size=89B cardinality=10
====
# predicate pushdown is prevented in presence of order by/limit clause;
# top-n is distributed
@@ -52,18 +58,22 @@ PLAN-ROOT SINK
02:SELECT
| predicates: id < 5
| limit: 5
+| row-size=89B cardinality=1
|
01:TOP-N [LIMIT=10]
| order by: id ASC
+| row-size=89B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
+ row-size=89B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:SELECT
| predicates: id < 5
| limit: 5
+| row-size=89B cardinality=1
|
03:MERGING-EXCHANGE [UNPARTITIONED]
| order by: id ASC
@@ -71,9 +81,11 @@ PLAN-ROOT SINK
|
01:TOP-N [LIMIT=10]
| order by: id ASC
+| row-size=89B cardinality=10
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
+ row-size=89B cardinality=100
====
# top-n is not distributed because it depends on the output of the aggregation
select *
@@ -90,21 +102,26 @@ PLAN-ROOT SINK
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
| limit: 5
+| row-size=101B cardinality=1
|
|--03:TOP-N [LIMIT=5]
| | order by: count(*) ASC
+| | row-size=12B cardinality=5
| |
| 02:AGGREGATE [FINALIZE]
| | output: count(*)
| | group by: id
+| | row-size=12B cardinality=7.30K
| |
| 01:SCAN HDFS [functional.alltypes]
| partitions=24/24 files=24 size=478.45KB
+| row-size=4B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -115,6 +132,7 @@ PLAN-ROOT SINK
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
| limit: 5
+| row-size=101B cardinality=1
|
|--08:EXCHANGE [BROADCAST]
| |
@@ -124,24 +142,29 @@ PLAN-ROOT SINK
| |
| 03:TOP-N [LIMIT=5]
| | order by: count(*) ASC
+| | row-size=12B cardinality=5
| |
| 06:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: id
+| | row-size=12B cardinality=7.30K
| |
| 05:EXCHANGE [HASH(id)]
| |
| 02:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: id
+| | row-size=12B cardinality=7.30K
| |
| 01:SCAN HDFS [functional.alltypes]
| partitions=24/24 files=24 size=478.45KB
+| row-size=4B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
====
# predicate pushdown is prevented in presence of limit clause; variant w/ join
select *
@@ -156,24 +179,29 @@ PLAN-ROOT SINK
03:SELECT
| predicates: a.id < 5
| limit: 5
+| row-size=93B cardinality=1
|
02:HASH JOIN [INNER JOIN]
| hash predicates: a.id = functional.alltypessmall.id
| runtime filters: RF000 <- functional.alltypessmall.id
| limit: 10
+| row-size=93B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypessmall a]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> a.id
+ row-size=89B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:SELECT
| predicates: a.id < 5
| limit: 5
+| row-size=93B cardinality=1
|
05:EXCHANGE [UNPARTITIONED]
| limit: 10
@@ -182,15 +210,18 @@ PLAN-ROOT SINK
| hash predicates: a.id = functional.alltypessmall.id
| runtime filters: RF000 <- functional.alltypessmall.id
| limit: 10
+| row-size=93B cardinality=10
|
|--04:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypessmall a]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> a.id
+ row-size=89B cardinality=100
====
# predicate pushdown is prevented in presence of order by/limit clause
select *
@@ -203,21 +234,26 @@ PLAN-ROOT SINK
|
02:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=89B cardinality=1
|
01:SELECT
| predicates: functional.alltypessmall.id < 5
+| row-size=89B cardinality=1
|
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
limit: 10
+ row-size=89B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=89B cardinality=1
|
01:SELECT
| predicates: functional.alltypessmall.id < 5
+| row-size=89B cardinality=1
|
03:EXCHANGE [UNPARTITIONED]
| limit: 10
@@ -225,6 +261,7 @@ PLAN-ROOT SINK
00:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
limit: 10
+ row-size=89B cardinality=10
====
# predicate pushdown is prevented in presence of order by/limit clause; variant w/ join
select *
@@ -241,29 +278,36 @@ PLAN-ROOT SINK
|
04:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=89B cardinality=1
|
03:SELECT
| predicates: a.id < 5
+| row-size=93B cardinality=1
|
02:HASH JOIN [INNER JOIN]
| hash predicates: a.id = functional.alltypessmall.id
| runtime filters: RF000 <- functional.alltypessmall.id
| limit: 10
+| row-size=93B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypessmall a]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> a.id
+ row-size=89B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
04:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=89B cardinality=1
|
03:SELECT
| predicates: a.id < 5
+| row-size=93B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
| limit: 10
@@ -272,15 +316,18 @@ PLAN-ROOT SINK
| hash predicates: a.id = functional.alltypessmall.id
| runtime filters: RF000 <- functional.alltypessmall.id
| limit: 10
+| row-size=93B cardinality=10
|
|--05:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypessmall a]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> a.id
+ row-size=89B cardinality=100
====
# join against subquery with limit creates a merge fragment that applies the limit
select *
@@ -292,14 +339,17 @@ PLAN-ROOT SINK
02:HASH JOIN [INNER JOIN]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=93B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| limit: 10
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -308,6 +358,7 @@ PLAN-ROOT SINK
02:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=93B cardinality=10
|
|--04:EXCHANGE [BROADCAST]
| |
@@ -317,10 +368,12 @@ PLAN-ROOT SINK
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| limit: 10
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=7.30K
====
# join against subquery with limit creates a merge fragment that applies the limit;
# topn is distributed
@@ -333,16 +386,20 @@ PLAN-ROOT SINK
03:HASH JOIN [INNER JOIN]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=93B cardinality=10
|
|--02:TOP-N [LIMIT=10]
| | order by: id ASC
+| | row-size=4B cardinality=10
| |
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -351,6 +408,7 @@ PLAN-ROOT SINK
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=93B cardinality=10
|
|--05:EXCHANGE [BROADCAST]
| |
@@ -360,13 +418,16 @@ PLAN-ROOT SINK
| |
| 02:TOP-N [LIMIT=10]
| | order by: id ASC
+| | row-size=4B cardinality=10
| |
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=7.30K
====
# join against subquery with limit;
# predicate pushdown is prevented in presence of order by/limit clause; variant w/ join
@@ -384,27 +445,33 @@ PLAN-ROOT SINK
|
05:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=93B cardinality=1
|
04:HASH JOIN [INNER JOIN]
| hash predicates: functional.alltypes.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=97B cardinality=1
|
|--03:HASH JOIN [INNER JOIN]
| | hash predicates: a.id = functional.alltypestiny.id
| | runtime filters: RF002 <- functional.alltypestiny.id
| | limit: 10
+| | row-size=8B cardinality=9
| |
| |--02:SCAN HDFS [functional.alltypestiny]
| | partitions=4/4 files=4 size=460B
+| | row-size=4B cardinality=8
| |
| 01:SCAN HDFS [functional.alltypessmall a]
| partitions=4/4 files=4 size=6.32KB
| runtime filters: RF002 -> a.id
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -414,10 +481,12 @@ PLAN-ROOT SINK
|
05:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=93B cardinality=1
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: functional.alltypes.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=97B cardinality=1
|
|--08:EXCHANGE [BROADCAST]
| |
@@ -428,20 +497,24 @@ PLAN-ROOT SINK
| | hash predicates: a.id = functional.alltypestiny.id
| | runtime filters: RF002 <- functional.alltypestiny.id
| | limit: 10
+| | row-size=8B cardinality=9
| |
| |--06:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [functional.alltypestiny]
| | partitions=4/4 files=4 size=460B
+| | row-size=4B cardinality=8
| |
| 01:SCAN HDFS [functional.alltypessmall a]
| partitions=4/4 files=4 size=6.32KB
| runtime filters: RF002 -> a.id
+| row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
====
# join against subquery with order by/limit;
# predicate pushdown is prevented in presence of order by/limit clause; variant w/ join
@@ -460,29 +533,36 @@ PLAN-ROOT SINK
|
06:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=93B cardinality=1
|
05:HASH JOIN [INNER JOIN]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=97B cardinality=1
|
|--04:TOP-N [LIMIT=10]
| | order by: int_col ASC
+| | row-size=8B cardinality=9
| |
| 03:HASH JOIN [INNER JOIN]
| | hash predicates: a.id = functional.alltypestiny.id
| | runtime filters: RF002 <- functional.alltypestiny.id
+| | row-size=12B cardinality=9
| |
| |--02:SCAN HDFS [functional.alltypestiny]
| | partitions=4/4 files=4 size=460B
+| | row-size=4B cardinality=8
| |
| 01:SCAN HDFS [functional.alltypessmall a]
| partitions=4/4 files=4 size=6.32KB
| runtime filters: RF002 -> a.id
+| row-size=8B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -492,10 +572,12 @@ PLAN-ROOT SINK
|
06:TOP-N [LIMIT=5]
| order by: id ASC
+| row-size=93B cardinality=1
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: functional.alltypes.id = id
| runtime filters: RF000 <- id
+| row-size=97B cardinality=1
|
|--09:EXCHANGE [BROADCAST]
| |
@@ -505,24 +587,29 @@ PLAN-ROOT SINK
| |
| 04:TOP-N [LIMIT=10]
| | order by: int_col ASC
+| | row-size=8B cardinality=9
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: a.id = functional.alltypestiny.id
| | runtime filters: RF002 <- functional.alltypestiny.id
+| | row-size=12B cardinality=9
| |
| |--07:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [functional.alltypestiny]
| | partitions=4/4 files=4 size=460B
+| | row-size=4B cardinality=8
| |
| 01:SCAN HDFS [functional.alltypessmall a]
| partitions=4/4 files=4 size=6.32KB
| runtime filters: RF002 -> a.id
+| row-size=8B cardinality=100
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id < 5
runtime filters: RF000 -> functional.alltypes.id
+ row-size=89B cardinality=730
====
# Subquery containing limit and offset
select x.id from (
@@ -534,17 +621,21 @@ PLAN-ROOT SINK
|
02:TOP-N [LIMIT=100 OFFSET=4]
| order by: id ASC
+| row-size=4B cardinality=5
|
01:TOP-N [LIMIT=5 OFFSET=5]
| order by: id ASC
+| row-size=4B cardinality=5
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=4B cardinality=11.00K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
02:TOP-N [LIMIT=100 OFFSET=4]
| order by: id ASC
+| row-size=4B cardinality=5
|
03:MERGING-EXCHANGE [UNPARTITIONED]
| offset: 5
@@ -553,9 +644,11 @@ PLAN-ROOT SINK
|
01:TOP-N [LIMIT=10]
| order by: id ASC
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=4B cardinality=11.00K
====
# Test value transfers for outer-joined inline views with a limit.
# Value transfer a.id->b.id is illegal due to the limit in b.
@@ -572,15 +665,18 @@ PLAN-ROOT SINK
02:HASH JOIN [LEFT OUTER JOIN]
| hash predicates: id = id
| other predicates: id > 20
+| row-size=8B cardinality=730
|
|--01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| predicates: id != 2
| limit: 10
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id > 10, id != 1
+ row-size=4B cardinality=730
====
# Test value transfers for outer-joined inline views with a limit.
# Value transfer a.id->b.id is legal.
@@ -598,19 +694,23 @@ PLAN-ROOT SINK
| hash predicates: id = id
| other predicates: id > 20
| runtime filters: RF000 <- id
+| row-size=8B cardinality=1
|
|--01:SELECT
| | predicates: id > 10
+| | row-size=4B cardinality=1
| |
| 00:SCAN HDFS [functional.alltypes]
| partitions=24/24 files=24 size=478.45KB
| predicates: id != 1
| limit: 10
+| row-size=4B cardinality=10
|
02:SCAN HDFS [functional.alltypessmall]
partitions=4/4 files=4 size=6.32KB
predicates: functional.alltypessmall.id != 1, functional.alltypessmall.id > 10, functional.alltypessmall.id > 20, id != 2
runtime filters: RF000 -> id
+ row-size=4B cardinality=10
====
# Test value transfers for outer-joined inline views with a limit.
# Value transfer b.id->a.id is illegal due to the limit in a.
@@ -628,16 +728,19 @@ PLAN-ROOT SINK
| hash predicates: id = id
| other predicates: id > 10
| runtime filters: RF000 <- id
+| row-size=8B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| predicates: functional.alltypessmall.id > 20, id != 2
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: id != 1
runtime filters: RF000 -> id
limit: 10
+ row-size=4B cardinality=10
====
# Test value transfers for outer-joined inline views with a limit.
# Value transfer b.id->a.id is legal.
@@ -655,19 +758,23 @@ PLAN-ROOT SINK
| hash predicates: id = id
| other predicates: id > 10
| runtime filters: RF000 <- id
+| row-size=8B cardinality=1
|
|--02:SELECT
| | predicates: id > 20
+| | row-size=4B cardinality=1
| |
| 01:SCAN HDFS [functional.alltypessmall]
| partitions=4/4 files=4 size=6.32KB
| predicates: id != 2
| limit: 10
+| row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.id != 2, functional.alltypes.id > 10, functional.alltypes.id > 20, id != 1
runtime filters: RF000 -> id
+ row-size=4B cardinality=730
====
# IMPALA-3450: limits on select nodes are reflected in cardinality estimates. The test for
# this is embedded in PlannerTestBase.java and is not visible in these plans, as they only
@@ -679,8 +786,10 @@ PLAN-ROOT SINK
01:SELECT
| predicates: functional.alltypes.id < 10
| limit: 1
+| row-size=89B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
limit: 100
+ row-size=89B cardinality=100
====
http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test b/testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test
index 55660cb..aa47074 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test
@@ -17,21 +17,28 @@ PLAN-ROOT SINK
04:HASH JOIN [INNER JOIN]
| hash predicates: t2.int_col = int_col
| runtime filters: RF000 <- int_col
+| row-size=101B cardinality=620
|
|--02:TOP-N [LIMIT=5]
| | order by: count(*) DESC
+| | row-size=12B cardinality=1
| |
| 01:AGGREGATE [FINALIZE]
| | output: count(*)
| | group by: int_col
| | having: count(*) > 1
+| | row-size=12B cardinality=1
| |
| 00:SCAN HDFS [functional.alltypessmall]
+| partition predicates: month = 1
| partitions=1/4 files=1 size=1.57KB
+| row-size=4B cardinality=25
|
03:SCAN HDFS [functional.alltypes t2]
+ partition predicates: month = 1
partitions=2/24 files=2 size=40.32KB
runtime filters: RF000 -> t2.int_col
+ row-size=89B cardinality=620
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -40,6 +47,7 @@ PLAN-ROOT SINK
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: t2.int_col = int_col
| runtime filters: RF000 <- int_col
+| row-size=101B cardinality=620
|
|--08:EXCHANGE [BROADCAST]
| |
@@ -49,24 +57,31 @@ PLAN-ROOT SINK
| |
| 02:TOP-N [LIMIT=5]
| | order by: count(*) DESC
+| | row-size=12B cardinality=1
| |
| 06:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: int_col
| | having: count(*) > 1
+| | row-size=12B cardinality=1
| |
| 05:EXCHANGE [HASH(int_col)]
| |
| 01:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: int_col
+| | row-size=12B cardinality=10
| |
| 00:SCAN HDFS [functional.alltypessmall]
+| partition predicates: month = 1
| partitions=1/4 files=1 size=1.57KB
+| row-size=4B cardinality=25
|
03:SCAN HDFS [functional.alltypes t2]
+ partition predicates: month = 1
partitions=2/24 files=2 size=40.32KB
runtime filters: RF000 -> t2.int_col
+ row-size=89B cardinality=620
====
# simple full scan subquery
select * from (select y x from (select id y from functional_hbase.alltypessmall) a) b
@@ -74,12 +89,14 @@ select * from (select y x from (select id y from functional_hbase.alltypessmall)
PLAN-ROOT SINK
|
00:SCAN HBASE [functional_hbase.alltypessmall]
+ row-size=4B cardinality=50
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HBASE [functional_hbase.alltypessmall]
+ row-size=4B cardinality=50
====
# subquery doing join
select * from (select t2.*
@@ -91,14 +108,17 @@ PLAN-ROOT SINK
02:HASH JOIN [INNER JOIN]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
+| row-size=36B cardinality=0
|
|--01:SCAN HDFS [functional.testtbl t2]
| partitions=1/1 files=0 size=0B
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl t1]
partitions=1/1 files=0 size=0B
predicates: t1.zip = 94611
runtime filters: RF000 -> t1.id
+ row-size=12B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -107,16 +127,19 @@ PLAN-ROOT SINK
02:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: t1.id = t2.id
| runtime filters: RF000 <- t2.id
+| row-size=36B cardinality=0
|
|--03:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [functional.testtbl t2]
| partitions=1/1 files=0 size=0B
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl t1]
partitions=1/1 files=0 size=0B
predicates: t1.zip = 94611
runtime filters: RF000 -> t1.id
+ row-size=12B cardinality=0
====
# subquery doing join
# multiple join predicates;
@@ -139,15 +162,20 @@ PLAN-ROOT SINK
| hash predicates: a.id = b.id, a.int_col = b.int_col
| other predicates: a.tinyint_col = 15, a.day >= 6, a.tinyint_col + b.tinyint_col < 15
| runtime filters: RF000 <- b.id, RF001 <- b.int_col
+| row-size=117B cardinality=5
|
|--01:SCAN HDFS [functional.alltypessmall b]
+| partition predicates: b.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: b.string_col = '15'
+| row-size=22B cardinality=5
|
00:SCAN HDFS [functional.alltypesagg a]
+ partition predicates: a.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: a.tinyint_col = 15
runtime filters: RF000 -> a.id, RF001 -> a.int_col
+ row-size=95B cardinality=556
---- SCANRANGELOCATIONS
NODE 0:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypesagg/year=2010/month=1/day=10/100110.txt 0:76263
@@ -167,19 +195,24 @@ PLAN-ROOT SINK
| hash predicates: a.id = b.id, a.int_col = b.int_col
| other predicates: a.tinyint_col = 15, a.day >= 6, a.tinyint_col + b.tinyint_col < 15
| runtime filters: RF000 <- b.id, RF001 <- b.int_col
+| row-size=117B cardinality=5
|
|--04:EXCHANGE [HASH(b.id,b.int_col)]
| |
| 01:SCAN HDFS [functional.alltypessmall b]
+| partition predicates: b.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: b.string_col = '15'
+| row-size=22B cardinality=5
|
03:EXCHANGE [HASH(a.id,a.int_col)]
|
00:SCAN HDFS [functional.alltypesagg a]
+ partition predicates: a.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: a.tinyint_col = 15
runtime filters: RF000 -> a.id, RF001 -> a.int_col
+ row-size=95B cardinality=556
====
# predicate pushdown
select * from (select * from functional_hbase.alltypessmall) a where id < 5
@@ -188,6 +221,7 @@ PLAN-ROOT SINK
|
00:SCAN HBASE [functional_hbase.alltypessmall]
predicates: functional_hbase.alltypessmall.id < 5
+ row-size=89B cardinality=5
====
# subquery join
# multiple join predicates;
@@ -212,15 +246,20 @@ PLAN-ROOT SINK
| hash predicates: id = id, int_col = int_col
| other predicates: tinyint_col = 15, day >= 6, tinyint_col + tinyint_col < 15
| runtime filters: RF000 <- id, RF001 <- int_col
+| row-size=39B cardinality=2
|
|--01:SCAN HDFS [functional.alltypessmall]
+| partition predicates: functional.alltypessmall.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: functional.alltypessmall.string_col = '15', functional.alltypessmall.id + 15 = 27
+| row-size=26B cardinality=2
|
00:SCAN HDFS [functional.alltypesagg]
+ partition predicates: functional.alltypesagg.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: functional.alltypesagg.tinyint_col = 15, functional.alltypesagg.id + 15 = 27
runtime filters: RF000 -> id, RF001 -> int_col
+ row-size=13B cardinality=167
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -230,19 +269,24 @@ PLAN-ROOT SINK
| hash predicates: id = id, int_col = int_col
| other predicates: tinyint_col = 15, day >= 6, tinyint_col + tinyint_col < 15
| runtime filters: RF000 <- id, RF001 <- int_col
+| row-size=39B cardinality=2
|
|--04:EXCHANGE [HASH(id,int_col)]
| |
| 01:SCAN HDFS [functional.alltypessmall]
+| partition predicates: functional.alltypessmall.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: functional.alltypessmall.string_col = '15', functional.alltypessmall.id + 15 = 27
+| row-size=26B cardinality=2
|
03:EXCHANGE [HASH(id,int_col)]
|
00:SCAN HDFS [functional.alltypesagg]
+ partition predicates: functional.alltypesagg.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: functional.alltypesagg.tinyint_col = 15, functional.alltypesagg.id + 15 = 27
runtime filters: RF000 -> id, RF001 -> int_col
+ row-size=13B cardinality=167
====
# subquery join
# multiple join predicates;
@@ -268,15 +312,20 @@ PLAN-ROOT SINK
| hash predicates: id = id, int_col = int_col
| other predicates: tinyint_col = 15, tinyint_col + tinyint_col < 15
| runtime filters: RF000 <- id, RF001 <- int_col
+| row-size=39B cardinality=5
|
|--01:SCAN HDFS [functional.alltypessmall]
+| partition predicates: functional.alltypessmall.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: functional.alltypessmall.string_col = '15'
+| row-size=26B cardinality=5
|
00:SCAN HDFS [functional.alltypesagg]
+ partition predicates: functional.alltypesagg.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: functional.alltypesagg.tinyint_col = 15
runtime filters: RF000 -> id, RF001 -> int_col
+ row-size=13B cardinality=556
---- SCANRANGELOCATIONS
NODE 0:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypesagg/year=2010/month=1/day=10/100110.txt 0:76263
@@ -296,19 +345,24 @@ PLAN-ROOT SINK
| hash predicates: id = id, int_col = int_col
| other predicates: tinyint_col = 15, tinyint_col + tinyint_col < 15
| runtime filters: RF000 <- id, RF001 <- int_col
+| row-size=39B cardinality=5
|
|--04:EXCHANGE [HASH(id,int_col)]
| |
| 01:SCAN HDFS [functional.alltypessmall]
+| partition predicates: functional.alltypessmall.month > 2
| partitions=2/4 files=2 size=3.17KB
| predicates: functional.alltypessmall.string_col = '15'
+| row-size=26B cardinality=5
|
03:EXCHANGE [HASH(id,int_col)]
|
00:SCAN HDFS [functional.alltypesagg]
+ partition predicates: functional.alltypesagg.day >= 6
partitions=5/11 files=5 size=372.38KB
predicates: functional.alltypesagg.tinyint_col = 15
runtime filters: RF000 -> id, RF001 -> int_col
+ row-size=13B cardinality=556
====
# complex join, having joined subquery on the rhs, and predicate
# at multiple subquery level. This tests that both sides of a join
@@ -333,24 +387,30 @@ PLAN-ROOT SINK
| hash predicates: c.id = a.tinyint_col
| other predicates: a.int_col + b.float_col + CAST(c.string_col AS FLOAT) < 1000
| runtime filters: RF000 <- a.tinyint_col
+| row-size=32B cardinality=11
|
|--03:HASH JOIN [INNER JOIN]
| | hash predicates: a.smallint_col = b.id
| | runtime filters: RF002 <- b.id
+| | row-size=15B cardinality=11
| |
| |--02:SCAN HDFS [functional.alltypessmall b]
| | partitions=4/4 files=4 size=6.32KB
| | predicates: b.float_col > 4.5
+| | row-size=8B cardinality=10
| |
| 01:SCAN HDFS [functional.alltypesagg a]
+| partition predicates: month = 1, a.day = 1
| partitions=1/11 files=1 size=73.39KB
| predicates: a.int_col > 899
| runtime filters: RF002 -> a.smallint_col
+| row-size=7B cardinality=100
|
00:SCAN HDFS [functional.alltypessmall c]
partitions=4/4 files=4 size=6.32KB
predicates: c.string_col < '7'
runtime filters: RF000 -> c.id
+ row-size=17B cardinality=10
---- SCANRANGELOCATIONS
NODE 0:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypessmall/year=2009/month=1/090101.txt 0:1610
@@ -373,18 +433,22 @@ PLAN-ROOT SINK
| hash predicates: c.id = a.tinyint_col
| other predicates: a.int_col + b.float_col + CAST(c.string_col AS FLOAT) < 1000
| runtime filters: RF000 <- a.tinyint_col
+| row-size=32B cardinality=11
|
|--08:EXCHANGE [HASH(a.tinyint_col)]
| |
| 03:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: b.id = a.smallint_col
| | runtime filters: RF002 <- a.smallint_col
+| | row-size=15B cardinality=11
| |
| |--06:EXCHANGE [HASH(a.smallint_col)]
| | |
| | 01:SCAN HDFS [functional.alltypesagg a]
+| | partition predicates: month = 1, a.day = 1
| | partitions=1/11 files=1 size=73.39KB
| | predicates: a.int_col > 899
+| | row-size=7B cardinality=100
| |
| 05:EXCHANGE [HASH(b.id)]
| |
@@ -392,6 +456,7 @@ PLAN-ROOT SINK
| partitions=4/4 files=4 size=6.32KB
| predicates: b.float_col > 4.5
| runtime filters: RF002 -> b.id
+| row-size=8B cardinality=10
|
07:EXCHANGE [HASH(c.id)]
|
@@ -399,6 +464,7 @@ PLAN-ROOT SINK
partitions=4/4 files=4 size=6.32KB
predicates: c.string_col < '7'
runtime filters: RF000 -> c.id
+ row-size=17B cardinality=10
====
# with grouping
select tinyint_col, count(*), min(tinyint_col), max(tinyint_col), sum(tinyint_col),
@@ -411,9 +477,11 @@ PLAN-ROOT SINK
01:AGGREGATE [FINALIZE]
| output: count(*), min(functional.alltypesagg.tinyint_col), max(functional.alltypesagg.tinyint_col), sum(functional.alltypesagg.tinyint_col), avg(functional.alltypesagg.tinyint_col)
| group by: functional.alltypesagg.tinyint_col
+| row-size=27B cardinality=9
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=1B cardinality=11.00K
---- SCANRANGELOCATIONS
NODE 0:
HDFS SPLIT hdfs://localhost:20500/test-warehouse/alltypesagg/year=2010/month=1/day=1/100101.txt 0:75153
@@ -435,15 +503,18 @@ PLAN-ROOT SINK
03:AGGREGATE [FINALIZE]
| output: count:merge(*), min:merge(tinyint_col), max:merge(tinyint_col), sum:merge(tinyint_col), avg:merge(tinyint_col)
| group by: tinyint_col
+| row-size=27B cardinality=9
|
02:EXCHANGE [HASH(tinyint_col)]
|
01:AGGREGATE [STREAMING]
| output: count(*), min(functional.alltypesagg.tinyint_col), max(functional.alltypesagg.tinyint_col), sum(functional.alltypesagg.tinyint_col), avg(functional.alltypesagg.tinyint_col)
| group by: functional.alltypesagg.tinyint_col
+| row-size=27B cardinality=9
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=1B cardinality=11.00K
====
# with grouping
select * from (
@@ -458,9 +529,11 @@ PLAN-ROOT SINK
01:AGGREGATE [FINALIZE]
| output: count(*), min(tinyint_col), max(tinyint_col), sum(tinyint_col), avg(tinyint_col)
| group by: tinyint_col
+| row-size=27B cardinality=9
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=1B cardinality=11.00K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -469,15 +542,18 @@ PLAN-ROOT SINK
03:AGGREGATE [FINALIZE]
| output: count:merge(*), min:merge(tinyint_col), max:merge(tinyint_col), sum:merge(tinyint_col), avg:merge(tinyint_col)
| group by: tinyint_col
+| row-size=27B cardinality=9
|
02:EXCHANGE [HASH(tinyint_col)]
|
01:AGGREGATE [STREAMING]
| output: count(*), min(tinyint_col), max(tinyint_col), sum(tinyint_col), avg(tinyint_col)
| group by: tinyint_col
+| row-size=27B cardinality=9
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=1B cardinality=11.00K
====
select c1, c2, c3
from
@@ -494,12 +570,15 @@ PLAN-ROOT SINK
|
02:TOP-N [LIMIT=5]
| order by: c2 ASC, c3 DESC
+| row-size=16B cardinality=5
|
01:AGGREGATE [FINALIZE]
| output: sum(float_col), min(float_col)
| group by: int_col
+| row-size=16B cardinality=10
|
00:SCAN HBASE [functional_hbase.alltypessmall]
+ row-size=8B cardinality=50
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -509,18 +588,22 @@ PLAN-ROOT SINK
|
02:TOP-N [LIMIT=5]
| order by: c2 ASC, c3 DESC
+| row-size=16B cardinality=5
|
04:AGGREGATE [FINALIZE]
| output: sum:merge(float_col), min:merge(float_col)
| group by: int_col
+| row-size=16B cardinality=10
|
03:EXCHANGE [HASH(int_col)]
|
01:AGGREGATE [STREAMING]
| output: sum(float_col), min(float_col)
| group by: int_col
+| row-size=16B cardinality=10
|
00:SCAN HBASE [functional_hbase.alltypessmall]
+ row-size=8B cardinality=50
====
select c1, x2
from (
@@ -556,12 +639,15 @@ PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
01:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
+ row-size=24B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -569,17 +655,21 @@ PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
04:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
03:EXCHANGE [HASH(functional.testtbl.id,functional.testtbl.name,functional.testtbl.zip)]
|
01:AGGREGATE [STREAMING]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
+ row-size=24B cardinality=0
====
# distinct w/ explicit select list
select distinct id, zip
@@ -589,12 +679,15 @@ PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.zip
+| row-size=12B cardinality=0
|
01:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
+ row-size=24B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -602,22 +695,27 @@ PLAN-ROOT SINK
|
06:AGGREGATE [FINALIZE]
| group by: id, zip
+| row-size=12B cardinality=0
|
05:EXCHANGE [HASH(id,zip)]
|
02:AGGREGATE [STREAMING]
| group by: functional.testtbl.id, functional.testtbl.zip
+| row-size=12B cardinality=0
|
04:AGGREGATE [FINALIZE]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
03:EXCHANGE [HASH(functional.testtbl.id,functional.testtbl.name,functional.testtbl.zip)]
|
01:AGGREGATE [STREAMING]
| group by: functional.testtbl.id, functional.testtbl.name, functional.testtbl.zip
+| row-size=24B cardinality=0
|
00:SCAN HDFS [functional.testtbl]
partitions=1/1 files=0 size=0B
+ row-size=24B cardinality=0
====
# aggregate with group-by, having
select *
@@ -638,9 +736,11 @@ PLAN-ROOT SINK
| output: count(*), avg(functional.alltypesagg.int_col)
| group by: functional.alltypesagg.int_col % 7
| having: int_col % 7 IS NOT NULL, count(*) > 10, avg(int_col) > 500 OR count(*) = 10
+| row-size=20B cardinality=96
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=4B cardinality=11.00K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -650,15 +750,18 @@ PLAN-ROOT SINK
| output: count:merge(*), avg:merge(int_col)
| group by: int_col % 7
| having: int_col % 7 IS NOT NULL, count(*) > 10, avg(int_col) > 500 OR count(*) = 10
+| row-size=20B cardinality=96
|
02:EXCHANGE [HASH(int_col % 7)]
|
01:AGGREGATE [STREAMING]
| output: count(*), avg(functional.alltypesagg.int_col)
| group by: functional.alltypesagg.int_col % 7
+| row-size=20B cardinality=957
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
+ row-size=4B cardinality=11.00K
====
# subquery with left outer join
select j.*, d.*
@@ -679,14 +782,17 @@ PLAN-ROOT SINK
02:HASH JOIN [RIGHT OUTER JOIN]
| hash predicates: b.name = a.test_name
| runtime filters: RF000 <- a.test_name
+| row-size=63B cardinality=2
|
|--00:SCAN HDFS [functional.jointbl a]
| partitions=1/1 files=1 size=433B
| predicates: a.test_id <= 1006
+| row-size=33B cardinality=2
|
01:SCAN HDFS [functional.dimtbl b]
partitions=1/1 files=1 size=171B
runtime filters: RF000 -> b.name
+ row-size=29B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -695,18 +801,21 @@ PLAN-ROOT SINK
02:HASH JOIN [RIGHT OUTER JOIN, PARTITIONED]
| hash predicates: b.name = a.test_name
| runtime filters: RF000 <- a.test_name
+| row-size=63B cardinality=2
|
|--04:EXCHANGE [HASH(a.test_name)]
| |
| 00:SCAN HDFS [functional.jointbl a]
| partitions=1/1 files=1 size=433B
| predicates: a.test_id <= 1006
+| row-size=33B cardinality=2
|
03:EXCHANGE [HASH(b.name)]
|
01:SCAN HDFS [functional.dimtbl b]
partitions=1/1 files=1 size=171B
runtime filters: RF000 -> b.name
+ row-size=29B cardinality=10
====
# complex join, having joined subquery on the rhs, and predicate
# at multiple subquery level
@@ -732,24 +841,30 @@ PLAN-ROOT SINK
05:AGGREGATE [FINALIZE]
| output: count(b.id)
| group by: a.smallint_col
+| row-size=10B cardinality=97
|
04:HASH JOIN [RIGHT OUTER JOIN]
| hash predicates: a.tinyint_col = c.id
| runtime filters: RF000 <- c.id
+| row-size=11B cardinality=11.11K
|
|--00:SCAN HDFS [functional.alltypessmall c]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
03:HASH JOIN [INNER JOIN]
| hash predicates: a.smallint_col = b.id
| runtime filters: RF002 <- b.id
+| row-size=7B cardinality=11.00K
|
|--02:SCAN HDFS [functional.alltypessmall b]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
01:SCAN HDFS [functional.alltypesagg a]
partitions=11/11 files=11 size=814.73KB
runtime filters: RF000 -> a.tinyint_col, RF002 -> a.smallint_col
+ row-size=3B cardinality=11.00K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -758,36 +873,43 @@ PLAN-ROOT SINK
10:AGGREGATE [FINALIZE]
| output: count:merge(x.id)
| group by: x.smallint_col
+| row-size=10B cardinality=97
|
09:EXCHANGE [HASH(x.smallint_col)]
|
05:AGGREGATE [STREAMING]
| output: count(b.id)
| group by: a.smallint_col
+| row-size=10B cardinality=97
|
04:HASH JOIN [RIGHT OUTER JOIN, PARTITIONED]
| hash predicates: a.tinyint_col = c.id
| runtime filters: RF000 <- c.id
+| row-size=11B cardinality=11.11K
|
|--08:EXCHANGE [HASH(c.id)]
| |
| 00:SCAN HDFS [functional.alltypessmall c]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
07:EXCHANGE [HASH(a.tinyint_col)]
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: a.smallint_col = b.id
| runtime filters: RF002 <- b.id
+| row-size=7B cardinality=11.00K
|
|--06:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [functional.alltypessmall b]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
01:SCAN HDFS [functional.alltypesagg a]
partitions=11/11 files=11 size=814.73KB
runtime filters: RF000 -> a.tinyint_col, RF002 -> a.smallint_col
+ row-size=3B cardinality=11.00K
====
# complex join, having joined subquery on the lhs, and predicate
# at multiple subquery level
@@ -820,24 +942,30 @@ PLAN-ROOT SINK
| hash predicates: c.id = a.tinyint_col
| other predicates: a.int_col + b.float_col + CAST(c.string_col AS FLOAT) < 1000
| runtime filters: RF000 <- a.tinyint_col
+| row-size=32B cardinality=11
|
|--02:HASH JOIN [INNER JOIN]
| | hash predicates: a.smallint_col = b.id
| | runtime filters: RF002 <- b.id
+| | row-size=15B cardinality=11
| |
| |--01:SCAN HDFS [functional.alltypessmall b]
| | partitions=4/4 files=4 size=6.32KB
| | predicates: b.float_col > 4.5
+| | row-size=8B cardinality=10
| |
| 00:SCAN HDFS [functional.alltypesagg a]
+| partition predicates: month = 1, a.day = 1
| partitions=1/11 files=1 size=73.39KB
| predicates: a.int_col > 899
| runtime filters: RF002 -> a.smallint_col
+| row-size=7B cardinality=100
|
03:SCAN HDFS [functional.alltypessmall c]
partitions=4/4 files=4 size=6.32KB
predicates: c.string_col < '7'
runtime filters: RF000 -> c.id
+ row-size=17B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -847,18 +975,22 @@ PLAN-ROOT SINK
| hash predicates: c.id = a.tinyint_col
| other predicates: a.int_col + b.float_col + CAST(c.string_col AS FLOAT) < 1000
| runtime filters: RF000 <- a.tinyint_col
+| row-size=32B cardinality=11
|
|--08:EXCHANGE [HASH(a.tinyint_col)]
| |
| 02:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: b.id = a.smallint_col
| | runtime filters: RF002 <- a.smallint_col
+| | row-size=15B cardinality=11
| |
| |--06:EXCHANGE [HASH(a.smallint_col)]
| | |
| | 00:SCAN HDFS [functional.alltypesagg a]
+| | partition predicates: month = 1, a.day = 1
| | partitions=1/11 files=1 size=73.39KB
| | predicates: a.int_col > 899
+| | row-size=7B cardinality=100
| |
| 05:EXCHANGE [HASH(b.id)]
| |
@@ -866,6 +998,7 @@ PLAN-ROOT SINK
| partitions=4/4 files=4 size=6.32KB
| predicates: b.float_col > 4.5
| runtime filters: RF002 -> b.id
+| row-size=8B cardinality=10
|
07:EXCHANGE [HASH(c.id)]
|
@@ -873,6 +1006,7 @@ PLAN-ROOT SINK
partitions=4/4 files=4 size=6.32KB
predicates: c.string_col < '7'
runtime filters: RF000 -> c.id
+ row-size=17B cardinality=10
====
# complex join, having joined aggregate subquery on the rhs, and predicate
# at multiple subquery level
@@ -891,29 +1025,36 @@ PLAN-ROOT SINK
06:AGGREGATE [FINALIZE]
| output: sum(count(a.id))
| group by: b.smallint_col
+| row-size=10B cardinality=10
|
05:HASH JOIN [INNER JOIN]
| hash predicates: c.id = b.smallint_col
| runtime filters: RF000 <- b.smallint_col
+| row-size=14B cardinality=10
|
|--04:AGGREGATE [FINALIZE]
| | output: count(a.id)
| | group by: b.smallint_col
+| | row-size=10B cardinality=10
| |
| 03:HASH JOIN [INNER JOIN]
| | hash predicates: a.smallint_col = b.id
| | runtime filters: RF002 <- b.id
+| | row-size=12B cardinality=11.00K
| |
| |--02:SCAN HDFS [functional.alltypessmall b]
| | partitions=4/4 files=4 size=6.32KB
+| | row-size=6B cardinality=100
| |
| 01:SCAN HDFS [functional.alltypesagg a]
| partitions=11/11 files=11 size=814.73KB
| runtime filters: RF002 -> a.smallint_col
+| row-size=6B cardinality=11.00K
|
00:SCAN HDFS [functional.alltypessmall c]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> c.id
+ row-size=4B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -922,45 +1063,54 @@ PLAN-ROOT SINK
12:AGGREGATE [FINALIZE]
| output: sum:merge(x.cnt)
| group by: x.smallint_col
+| row-size=10B cardinality=10
|
11:EXCHANGE [HASH(x.smallint_col)]
|
06:AGGREGATE [STREAMING]
| output: sum(count(a.id))
| group by: b.smallint_col
+| row-size=10B cardinality=10
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c.id = b.smallint_col
| runtime filters: RF000 <- b.smallint_col
+| row-size=14B cardinality=10
|
|--10:EXCHANGE [BROADCAST]
| |
| 09:AGGREGATE [FINALIZE]
| | output: count:merge(a.id)
| | group by: b.smallint_col
+| | row-size=10B cardinality=10
| |
| 08:EXCHANGE [HASH(b.smallint_col)]
| |
| 04:AGGREGATE [STREAMING]
| | output: count(a.id)
| | group by: b.smallint_col
+| | row-size=10B cardinality=10
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: a.smallint_col = b.id
| | runtime filters: RF002 <- b.id
+| | row-size=12B cardinality=11.00K
| |
| |--07:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [functional.alltypessmall b]
| | partitions=4/4 files=4 size=6.32KB
+| | row-size=6B cardinality=100
| |
| 01:SCAN HDFS [functional.alltypesagg a]
| partitions=11/11 files=11 size=814.73KB
| runtime filters: RF002 -> a.smallint_col
+| row-size=6B cardinality=11.00K
|
00:SCAN HDFS [functional.alltypessmall c]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> c.id
+ row-size=4B cardinality=100
====
# Values statement in subqueries with predicate
select * from (select y from (values((1 as y),(11))) a where y < 10) b
@@ -969,11 +1119,13 @@ PLAN-ROOT SINK
|
00:UNION
constant-operands=1
+ row-size=1B cardinality=1
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:UNION
constant-operands=1
+ row-size=1B cardinality=1
====
# Mixed constant and non-constant select; the predicate is evaluated directly
# by the non-const select
@@ -989,10 +1141,12 @@ PLAN-ROOT SINK
00:UNION
| constant-operands=1
| pass-through-operands: all
+| row-size=1B cardinality=731
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.tinyint_col < 10
+ row-size=1B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -1001,10 +1155,12 @@ PLAN-ROOT SINK
00:UNION
| constant-operands=1
| pass-through-operands: all
+| row-size=1B cardinality=731
|
01:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
predicates: functional.alltypes.tinyint_col < 10
+ row-size=1B cardinality=730
====
# Union of constant selects in subquery
select * from (select 1 as y union all select 2 union all select * from (select 11) a) b
@@ -1014,11 +1170,13 @@ PLAN-ROOT SINK
|
00:UNION
constant-operands=2
+ row-size=1B cardinality=2
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:UNION
constant-operands=2
+ row-size=1B cardinality=2
====
# Union of values statements in subquery
# TODO: We could combine the merge nodes below.
@@ -1029,15 +1187,19 @@ PLAN-ROOT SINK
|
00:UNION
| constant-operands=2
+| row-size=1B cardinality=2
|
01:UNION
+ row-size=1B cardinality=0
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:UNION
| constant-operands=2
+| row-size=1B cardinality=2
|
01:UNION
+ row-size=1B cardinality=0
====
# Inner join on inline views made up of unions of constant selects
select * from
@@ -1051,39 +1213,49 @@ PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN]
| hash predicates: b = b
+| row-size=6B cardinality=2
|
|--02:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
03:HASH JOIN [INNER JOIN]
| hash predicates: a = a
+| row-size=4B cardinality=2
|
|--01:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
00:UNION
constant-operands=2
+ row-size=2B cardinality=2
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: b = b
+| row-size=6B cardinality=2
|
|--06:EXCHANGE [UNPARTITIONED]
| |
| 02:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: a = a
+| row-size=4B cardinality=2
|
|--05:EXCHANGE [UNPARTITIONED]
| |
| 01:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
00:UNION
constant-operands=2
+ row-size=2B cardinality=2
====
# Semi and inner join on a table and on inline views made up of constant selects
select * from functional.alltypessmall x
@@ -1097,20 +1269,25 @@ PLAN-ROOT SINK
04:HASH JOIN [INNER JOIN]
| hash predicates: x.id + 2 = b
| runtime filters: RF000 <- b
+| row-size=91B cardinality=2
|
|--02:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
03:HASH JOIN [LEFT SEMI JOIN]
| hash predicates: x.id = a
| runtime filters: RF002 <- a
+| row-size=89B cardinality=2
|
|--01:UNION
| constant-operands=2
+| row-size=1B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall x]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> x.id + 2, RF002 -> x.id
+ row-size=89B cardinality=100
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
@@ -1119,24 +1296,29 @@ PLAN-ROOT SINK
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: x.id + 2 = b
| runtime filters: RF000 <- b
+| row-size=91B cardinality=2
|
|--06:EXCHANGE [BROADCAST]
| |
| 02:UNION
| constant-operands=2
+| row-size=2B cardinality=2
|
03:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: x.id = a
| runtime filters: RF002 <- a
+| row-size=89B cardinality=2
|
|--05:EXCHANGE [BROADCAST]
| |
| 01:UNION
| constant-operands=2
+| row-size=1B cardinality=2
|
00:SCAN HDFS [functional.alltypessmall x]
partitions=4/4 files=4 size=6.32KB
runtime filters: RF000 -> x.id + 2, RF002 -> x.id
+ row-size=89B cardinality=100
====
# Tests that views correctly reanalyze cloned exprs. (IMPALA-984)
select b.* from functional.decimal_tbl a left outer join
@@ -1147,12 +1329,15 @@ PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
| hash predicates: a.d1 = d1
+| row-size=8B cardinality=unavailable
|
|--01:SCAN HDFS [functional.decimal_tbl]
| partitions=1/1 files=1 size=195B
+| row-size=4B cardinality=unavailable
|
00:SCAN HDFS [functional.decimal_tbl a]
partitions=1/1 files=1 size=195B
+ row-size=4B cardinality=unavailable
====
# Test predicate assignment through inline view when the query contains
# group by and distinct (IMPALA-1165)
@@ -1168,13 +1353,16 @@ PLAN-ROOT SINK
| output: sum(foo)
| group by: foo
| limit: 10
+| row-size=16B cardinality=10
|
01:AGGREGATE
| group by: int_col + int_col, int_col + int_col
+| row-size=16B cardinality=11
|
00:SCAN HDFS [functional.alltypesagg]
partitions=11/11 files=11 size=814.73KB
predicates: int_col + int_col = 10
+ row-size=4B cardinality=11
====
# Test enforcement of inline-view slot equivalences when the inline-view
# contains an outer join (IMPALA-1441)
@@ -1188,13 +1376,16 @@ PLAN-ROOT SINK
02:HASH JOIN [RIGHT OUTER JOIN]
| hash predicates: t2.int_col = t1.int_col, t2.tinyint_col = t1.tinyint_col
| runtime filters: RF000 <- t1.int_col, RF001 <- t1.tinyint_col
+| row-size=10B cardinality=5.84K
|
|--00:SCAN HDFS [functional.alltypestiny t1]
| partitions=4/4 files=4 size=460B
+| row-size=5B cardinality=8
|
01:SCAN HDFS [functional.alltypes t2]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> t2.int_col, RF001 -> t2.tinyint_col
+ row-size=5B cardinality=7.30K
====
# IMPALA-1459: Test correct assignment of On-clause predicate from an enclosing block
# inside an inline view with an outer join.
@@ -1211,28 +1402,35 @@ PLAN-ROOT SINK
06:HASH JOIN [INNER JOIN]
| hash predicates: a.id = c.id
| runtime filters: RF000 <- c.id
+| row-size=16B cardinality=9
|
|--05:SCAN HDFS [functional.alltypestiny c]
| partitions=4/4 files=4 size=460B
+| row-size=4B cardinality=8
|
04:HASH JOIN [FULL OUTER JOIN]
| hash predicates: a.id = c.id
| other predicates: a.id < b.id, a.id = b.id
+| row-size=12B cardinality=7.40K
|
|--02:SCAN HDFS [functional.alltypessmall c]
| partitions=4/4 files=4 size=6.32KB
+| row-size=4B cardinality=100
|
03:HASH JOIN [INNER JOIN]
| hash predicates: a.id = b.id
| runtime filters: RF002 <- b.id
+| row-size=8B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypes b]
| partitions=24/24 files=24 size=478.45KB
| runtime filters: RF000 -> b.id
+| row-size=4B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes a]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> a.id, RF002 -> a.id
+ row-size=4B cardinality=7.30K
====
# IMPALA-2665: Test correct assignment of On-clause predicate from an enclosing block
# inside an inline view with an outer join.
@@ -1248,24 +1446,29 @@ PLAN-ROOT SINK
04:HASH JOIN [INNER JOIN]
| hash predicates: a.id = t1.id
| runtime filters: RF000 <- t1.id
+| row-size=12B cardinality=73
|
|--00:SCAN HDFS [functional.alltypes t1]
| partitions=24/24 files=24 size=478.45KB
| predicates: t1.id < 10
+| row-size=4B cardinality=730
|
03:HASH JOIN [LEFT OUTER JOIN]
| hash predicates: a.id = b.int_col
| other predicates: b.int_col IS NULL, b.int_col < 10
+| row-size=8B cardinality=730
|
|--02:SCAN HDFS [functional.alltypes b]
| partitions=24/24 files=24 size=478.45KB
| predicates: b.int_col < 10
| runtime filters: RF000 -> b.int_col
+| row-size=4B cardinality=730
|
01:SCAN HDFS [functional.alltypes a]
partitions=24/24 files=24 size=478.45KB
predicates: a.id < 10
runtime filters: RF000 -> a.id
+ row-size=4B cardinality=730
====
# IMPALA-2643: Test inline views with duplicate exprs in their select list.
# Inferred predicate referencing the same expr gets filtered out.
@@ -1279,6 +1482,7 @@ PLAN-ROOT SINK
|
00:SCAN HDFS [functional.alltypestiny]
partitions=4/4 files=4 size=460B
+ row-size=8B cardinality=8
====
# IMPALA-2643: Explicit predicates remain unafftected.
select * from
@@ -1292,6 +1496,7 @@ PLAN-ROOT SINK
00:SCAN HDFS [functional.alltypestiny]
partitions=4/4 files=4 size=460B
predicates: bigint_col = bigint_col
+ row-size=8B cardinality=1
====
# IMPALA-2643: Test aggregation.
# Inferred predicate referencing the same expr gets filtered out.
@@ -1305,9 +1510,11 @@ PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
| output: sum(bigint_col)
+| row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypestiny]
partitions=4/4 files=4 size=460B
+ row-size=8B cardinality=8
====
# IMPALA-2643: Explicit predicates remain unafftected.
select * from
@@ -1321,7 +1528,9 @@ PLAN-ROOT SINK
01:AGGREGATE [FINALIZE]
| output: sum(bigint_col)
| having: sum(bigint_col) = sum(bigint_col)
+| row-size=8B cardinality=0
|
00:SCAN HDFS [functional.alltypestiny]
partitions=4/4 files=4 size=460B
+ row-size=8B cardinality=8
====
http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/insert-sort-by.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/insert-sort-by.test b/testdata/workloads/functional-planner/queries/PlannerTest/insert-sort-by.test
index f2ecb2c..e6432da 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/insert-sort-by.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/insert-sort-by.test
@@ -8,20 +8,24 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
|
01:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
| partitions=24
|
02:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
01:EXCHANGE [HASH(year,month)]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
====
# IMPALA-4166: insert with noshuffle hint into tables with sort.columns property adds
# sort node.
@@ -33,18 +37,22 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
|
01:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
| partitions=24
|
01:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
====
# IMPALA-4166: insert into tables with sort.columns property adds sort node. Clustering
# columns are added to the sort columns. noclustered hint is ignored when sort.columns
@@ -57,20 +65,24 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
|
01:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
| partitions=24
|
02:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
01:EXCHANGE [HASH(year,month)]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=17B cardinality=7.30K
====
# IMPALA-4166: insert into tables with sort.columns property adds sort node.
insert into table test_sort_by.t_nopart /*+ shuffle */
@@ -81,20 +93,24 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
01:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
02:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
====
# IMPALA-4166: insert with noshuffle hint into tables with sort.columns property adds
# sort node.
@@ -106,18 +122,22 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
01:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
01:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
====
# IMPALA-4166: sort columns are correct when using an identity column permutation.
insert into table test_sort_by.t_nopart (id, int_col, bool_col) /*+ shuffle */
@@ -128,20 +148,24 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
01:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
02:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
====
# IMPALA-4166: sort columns are correct when using a non-trivial column permutation.
insert into table test_sort_by.t_nopart (bool_col, id, int_col) /*+ shuffle */
@@ -152,20 +176,24 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
01:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
02:SORT
| order by: int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=9B cardinality=7.30K
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=9B cardinality=7.30K
====
# IMPALA-4166: sort columns are correct when using a partial column permutation.
insert into table test_sort_by.t_nopart (bool_col, id) /*+ shuffle */
@@ -176,20 +204,24 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
01:SORT
| order by: bool_col ASC NULLS LAST
+| row-size=5B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=5B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
02:SORT
| order by: bool_col ASC NULLS LAST
+| row-size=5B cardinality=7.30K
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=5B cardinality=7.30K
====
# IMPALA-4166: no sort node is added when using a partial column permutation and none of
# the sort columns appear in the permutation.
@@ -201,6 +233,7 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=4B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
@@ -209,6 +242,7 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
00:SCAN HDFS [functional.alltypes]
partitions=24/24 files=24 size=478.45KB
+ row-size=4B cardinality=7.30K
====
# IMPALA-4166: sort columns with a join
insert into table test_sort_by.t partition(year, month) /*+ noclustered */
@@ -221,26 +255,32 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
|
04:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=10
|
03:TOP-N [LIMIT=10]
| order by: string_col ASC
+| row-size=30B cardinality=10
|
02:HASH JOIN [INNER JOIN]
| hash predicates: b.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=34B cardinality=7.30K
|
|--00:SCAN HDFS [functional.alltypes a]
| partitions=24/24 files=24 size=478.45KB
+| row-size=9B cardinality=7.30K
|
01:SCAN HDFS [functional.alltypes b]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> b.id
+ row-size=25B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
| partitions=24
|
07:SORT
| order by: year ASC NULLS LAST, month ASC NULLS LAST, int_col ASC NULLS LAST, bool_col ASC NULLS LAST
+| row-size=17B cardinality=10
|
06:MERGING-EXCHANGE [UNPARTITIONED]
| order by: string_col ASC
@@ -248,21 +288,25 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(year,month)]
|
03:TOP-N [LIMIT=10]
| order by: string_col ASC
+| row-size=30B cardinality=10
|
02:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: b.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=34B cardinality=7.30K
|
|--05:EXCHANGE [HASH(a.id)]
| |
| 00:SCAN HDFS [functional.alltypes a]
| partitions=24/24 files=24 size=478.45KB
+| row-size=9B cardinality=7.30K
|
04:EXCHANGE [HASH(b.id)]
|
01:SCAN HDFS [functional.alltypes b]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> b.id
+ row-size=25B cardinality=7.30K
====
# IMPALA-4166: sort columns with a join and agg
insert into table test_sort_by.t partition(year, month) /*+ noclustered */
@@ -275,54 +319,65 @@ WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(b.year,a.month)]
|
04:SORT
| order by: b.year ASC NULLS LAST, a.month ASC NULLS LAST, max(b.int_col) ASC NULLS LAST, min(a.bool_col) ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
03:AGGREGATE [FINALIZE]
| output: max(b.int_col), min(a.bool_col)
| group by: a.id, b.year, a.month
+| row-size=17B cardinality=7.30K
|
02:HASH JOIN [INNER JOIN]
| hash predicates: b.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=21B cardinality=7.30K
|
|--00:SCAN HDFS [functional.alltypes a]
| partitions=24/24 files=24 size=478.45KB
+| row-size=9B cardinality=7.30K
|
01:SCAN HDFS [functional.alltypes b]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> b.id
+ row-size=12B cardinality=7.30K
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t, OVERWRITE=false, PARTITION-KEYS=(b.year,a.month)]
| partitions=24
|
09:SORT
| order by: b.year ASC NULLS LAST, a.month ASC NULLS LAST, max(b.int_col) ASC NULLS LAST, min(a.bool_col) ASC NULLS LAST
+| row-size=17B cardinality=7.30K
|
08:EXCHANGE [HASH(b.year,a.month)]
|
07:AGGREGATE [FINALIZE]
| output: max:merge(b.int_col), min:merge(a.bool_col)
| group by: a.id, b.year, a.month
+| row-size=17B cardinality=7.30K
|
06:EXCHANGE [HASH(a.id,b.year,a.month)]
|
03:AGGREGATE [STREAMING]
| output: max(b.int_col), min(a.bool_col)
| group by: a.id, b.year, a.month
+| row-size=17B cardinality=7.30K
|
02:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: b.id = a.id
| runtime filters: RF000 <- a.id
+| row-size=21B cardinality=7.30K
|
|--05:EXCHANGE [HASH(a.id)]
| |
| 00:SCAN HDFS [functional.alltypes a]
| partitions=24/24 files=24 size=478.45KB
+| row-size=9B cardinality=7.30K
|
04:EXCHANGE [HASH(b.id)]
|
01:SCAN HDFS [functional.alltypes b]
partitions=24/24 files=24 size=478.45KB
runtime filters: RF000 -> b.id
+ row-size=12B cardinality=7.30K
====
# IMPALA-5339: Sort columns with a union to trigger expr rewrite
insert into table test_sort_by.t_nopart
@@ -333,24 +388,30 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
02:SORT
| order by: CAST(id AS INT) ASC NULLS LAST
+| row-size=1B cardinality=2
|
01:AGGREGATE [FINALIZE]
| group by: id
+| row-size=1B cardinality=2
|
00:UNION
constant-operands=2
+ row-size=1B cardinality=2
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
02:SORT
| order by: CAST(id AS INT) ASC NULLS LAST
+| row-size=1B cardinality=2
|
01:AGGREGATE [FINALIZE]
| group by: id
+| row-size=1B cardinality=2
|
00:UNION
constant-operands=2
+ row-size=1B cardinality=2
====
# IMPALA-5339: Sort columns with a subquery to trigger expr rewrite
insert into table test_sort_by.t_nopart
@@ -361,45 +422,56 @@ WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
|
04:SORT
| order by: id ASC NULLS LAST
+| row-size=4B cardinality=0
|
03:HASH JOIN [LEFT SEMI JOIN]
| hash predicates: id = min(id)
| runtime filters: RF000 <- min(id)
+| row-size=4B cardinality=0
|
|--02:AGGREGATE [FINALIZE]
| | output: min(id)
+| | row-size=4B cardinality=0
| |
| 01:SCAN HDFS [test_sort_by.t]
| partitions=0/0 files=0 size=0B
+| row-size=4B cardinality=0
|
00:SCAN HDFS [test_sort_by.t_nopart]
partitions=1/0 files=0 size=0B
runtime filters: RF000 -> id
+ row-size=4B cardinality=0
---- DISTRIBUTEDPLAN
WRITE TO HDFS [test_sort_by.t_nopart, OVERWRITE=false]
| partitions=1
|
07:SORT
| order by: id ASC NULLS LAST
+| row-size=4B cardinality=0
|
03:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: id = min(id)
| runtime filters: RF000 <- min(id)
+| row-size=4B cardinality=0
|
|--06:EXCHANGE [BROADCAST]
| |
| 05:AGGREGATE [FINALIZE]
| | output: min:merge(id)
+| | row-size=4B cardinality=0
| |
| 04:EXCHANGE [UNPARTITIONED]
| |
| 02:AGGREGATE
| | output: min(id)
+| | row-size=4B cardinality=0
| |
| 01:SCAN HDFS [test_sort_by.t]
| partitions=0/0 files=0 size=0B
+| row-size=4B cardinality=0
|
00:SCAN HDFS [test_sort_by.t_nopart]
partitions=1/0 files=0 size=0B
runtime filters: RF000 -> id
+ row-size=4B cardinality=0
====