| # Basic test with a view. |
| select int_col, string_col from functional.alltypes_view |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 01:EXCHANGE [UNPARTITIONED] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ==== |
| # Basic test with a complex view. |
| select * from functional.complex_view |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 04:TOP-N [LIMIT=100] |
| | order by: b.string_col ASC |
| | |
| 03:AGGREGATE [FINALIZE] |
| | output: count(a.bigint_col) |
| | group by: b.string_col |
| | having: count(a.bigint_col) > 1 |
| | |
| 02:HASH JOIN [INNER JOIN] |
| | hash predicates: a.id = b.id |
| | runtime filters: RF000 <- b.id |
| | |
| |--01:SCAN HDFS [functional.alltypestiny b] |
| | partitions=4/4 files=4 size=460B |
| | |
| 00:SCAN HDFS [functional.alltypesagg a] |
| partitions=11/11 files=11 size=814.73KB |
| predicates: a.bigint_col < 50 |
| runtime filters: RF000 -> a.id |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 08:MERGING-EXCHANGE [UNPARTITIONED] |
| | order by: b.string_col ASC |
| | limit: 100 |
| | |
| 04:TOP-N [LIMIT=100] |
| | order by: b.string_col ASC |
| | |
| 07:AGGREGATE [FINALIZE] |
| | output: count:merge(a.bigint_col) |
| | group by: b.string_col |
| | having: count(a.bigint_col) > 1 |
| | |
| 06:EXCHANGE [HASH(b.string_col)] |
| | |
| 03:AGGREGATE [STREAMING] |
| | output: count(a.bigint_col) |
| | group by: b.string_col |
| | |
| 02:HASH JOIN [INNER JOIN, BROADCAST] |
| | hash predicates: a.id = b.id |
| | runtime filters: RF000 <- b.id |
| | |
| |--05:EXCHANGE [BROADCAST] |
| | | |
| | 01:SCAN HDFS [functional.alltypestiny b] |
| | partitions=4/4 files=4 size=460B |
| | |
| 00:SCAN HDFS [functional.alltypesagg a] |
| partitions=11/11 files=11 size=814.73KB |
| predicates: a.bigint_col < 50 |
| runtime filters: RF000 -> a.id |
| ==== |
| # Basic test with a view on a view |
| select int_col, string_col from functional.view_view |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 01:EXCHANGE [UNPARTITIONED] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ==== |
| # view used in a union. |
| select * from functional.alltypes_view union all |
| select * from functional.alltypes_view where id < 10 |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:UNION |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | predicates: functional.alltypes.id < 10 |
| | |
| 01:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 03:EXCHANGE [UNPARTITIONED] |
| | |
| 00:UNION |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | predicates: functional.alltypes.id < 10 |
| | |
| 01:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ==== |
| # view used in an inline view. |
| select t.id from (select id from functional.alltypes_view) t |
| where t.id < 10 |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: functional.alltypes.id < 10 |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 01:EXCHANGE [UNPARTITIONED] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: functional.alltypes.id < 10 |
| ==== |
| # Multiple views used in a join. |
| select * from functional.alltypes_view t1, functional.alltypes_view_sub t2, |
| functional.complex_view t3 where t1.id = t2.x and t2.x = t3.abc |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 08:HASH JOIN [INNER JOIN] |
| | hash predicates: int_col = count(a.bigint_col) |
| | runtime filters: RF000 <- count(a.bigint_col) |
| | |
| |--06:TOP-N [LIMIT=100] |
| | | order by: b.string_col ASC |
| | | |
| | 05:AGGREGATE [FINALIZE] |
| | | output: count(a.bigint_col) |
| | | group by: b.string_col |
| | | having: count(a.bigint_col) > 1 |
| | | |
| | 04:HASH JOIN [INNER JOIN] |
| | | hash predicates: a.id = b.id |
| | | runtime filters: RF002 <- b.id |
| | | |
| | |--03:SCAN HDFS [functional.alltypestiny b] |
| | | partitions=4/4 files=4 size=460B |
| | | |
| | 02:SCAN HDFS [functional.alltypesagg a] |
| | partitions=11/11 files=11 size=814.73KB |
| | predicates: a.bigint_col < 50 |
| | runtime filters: RF002 -> a.id |
| | |
| 07:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = int_col |
| | runtime filters: RF001 <- int_col |
| | |
| |--01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | predicates: functional.alltypes.int_col > 1 |
| | runtime filters: RF000 -> int_col |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: functional.alltypes.id > 1 |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 16:EXCHANGE [UNPARTITIONED] |
| | |
| 08:HASH JOIN [INNER JOIN, BROADCAST] |
| | hash predicates: int_col = count(a.bigint_col) |
| | runtime filters: RF000 <- count(a.bigint_col) |
| | |
| |--15:EXCHANGE [BROADCAST] |
| | | |
| | 14:MERGING-EXCHANGE [UNPARTITIONED] |
| | | order by: b.string_col ASC |
| | | limit: 100 |
| | | |
| | 06:TOP-N [LIMIT=100] |
| | | order by: b.string_col ASC |
| | | |
| | 13:AGGREGATE [FINALIZE] |
| | | output: count:merge(a.bigint_col) |
| | | group by: b.string_col |
| | | having: count(a.bigint_col) > 1 |
| | | |
| | 12:EXCHANGE [HASH(b.string_col)] |
| | | |
| | 05:AGGREGATE [STREAMING] |
| | | output: count(a.bigint_col) |
| | | group by: b.string_col |
| | | |
| | 04:HASH JOIN [INNER JOIN, BROADCAST] |
| | | hash predicates: a.id = b.id |
| | | runtime filters: RF002 <- b.id |
| | | |
| | |--11:EXCHANGE [BROADCAST] |
| | | | |
| | | 03:SCAN HDFS [functional.alltypestiny b] |
| | | partitions=4/4 files=4 size=460B |
| | | |
| | 02:SCAN HDFS [functional.alltypesagg a] |
| | partitions=11/11 files=11 size=814.73KB |
| | predicates: a.bigint_col < 50 |
| | runtime filters: RF002 -> a.id |
| | |
| 07:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = int_col |
| | runtime filters: RF001 <- int_col |
| | |
| |--10:EXCHANGE [HASH(int_col)] |
| | | |
| | 01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | predicates: functional.alltypes.int_col > 1 |
| | runtime filters: RF000 -> int_col |
| | |
| 09:EXCHANGE [HASH(functional.alltypes.id)] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: functional.alltypes.id > 1 |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ==== |
| # Self-join of view to make sure the on clause is properly set |
| # in the cloned view instances. |
| select * from functional.alltypes_view t1 |
| inner join functional.alltypes_view t2 on (t1.id = t2.id) |
| inner join functional.alltypes_view t3 on (t2.id = t3.id) |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 04:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 08:EXCHANGE [UNPARTITIONED] |
| | |
| 04:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--07:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--06:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 05:EXCHANGE [HASH(functional.alltypes.id)] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ==== |
| # Self-join views to make sure the using clause is properly set |
| # in the cloned view instances. |
| select * from functional.alltypes_view t1 |
| inner join functional.alltypes_view t2 using(id) |
| inner join functional.alltypes_view t3 using(id) |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 04:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 08:EXCHANGE [UNPARTITIONED] |
| | |
| 04:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--07:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--06:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 05:EXCHANGE [HASH(functional.alltypes.id)] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ==== |
| # Self-join of view to make sure the join op is properly set |
| # in the cloned view instances. |
| select * from functional.alltypes_view t1 |
| left outer join functional.alltypes_view t2 using(id) |
| full outer join functional.alltypes_view t3 using(id) |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 04:HASH JOIN [FULL OUTER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [LEFT OUTER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | |
| |--01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 08:EXCHANGE [UNPARTITIONED] |
| | |
| 04:HASH JOIN [FULL OUTER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | |
| |--07:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [LEFT OUTER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | |
| |--06:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 05:EXCHANGE [HASH(functional.alltypes.id)] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| ==== |
| # Self-join of view to make sure join hints are properly set |
| # in the cloned view instances. |
| # Note that in the plan above without hints the first join uses shuffle |
| # and the second broadcast. |
| select * from functional.alltypes_view t1 |
| inner join [broadcast] functional.alltypes_view t2 using(id) |
| inner join [shuffle] functional.alltypes_view t3 using(id) |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 04:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 03:HASH JOIN [INNER JOIN] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 08:EXCHANGE [UNPARTITIONED] |
| | |
| 04:HASH JOIN [INNER JOIN, PARTITIONED] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF000 <- functional.alltypes.id |
| | |
| |--07:EXCHANGE [HASH(functional.alltypes.id)] |
| | | |
| | 02:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | |
| 06:EXCHANGE [HASH(functional.alltypes.id)] |
| | |
| 03:HASH JOIN [INNER JOIN, BROADCAST] |
| | hash predicates: functional.alltypes.id = functional.alltypes.id |
| | runtime filters: RF001 <- functional.alltypes.id |
| | |
| |--05:EXCHANGE [BROADCAST] |
| | | |
| | 01:SCAN HDFS [functional.alltypes] |
| | partitions=24/24 files=24 size=478.45KB |
| | runtime filters: RF000 -> functional.alltypes.id |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=24/24 files=24 size=478.45KB |
| runtime filters: RF000 -> functional.alltypes.id, RF001 -> functional.alltypes.id |
| ==== |
| # Tests that parentheses are preserved when creating a view |
| # enabling proper partition pruning for this particular view. |
| select * from functional.alltypes_parens |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=1/24 files=1 size=19.95KB |
| predicates: (int_col < 100 OR bool_col = FALSE) |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 01:EXCHANGE [UNPARTITIONED] |
| | |
| 00:SCAN HDFS [functional.alltypes] |
| partitions=1/24 files=1 size=19.95KB |
| predicates: (int_col < 100 OR bool_col = FALSE) |
| ==== |
| # Tests that slotrefs are correctly marked as assigned inside an inline view where |
| # possible (see IMPALA-923) |
| select bool_col FROM ( SELECT bool_col FROM functional.alltypes t ) t WHERE t.bool_col |
| ---- PLAN |
| PLAN-ROOT SINK |
| | |
| 00:SCAN HDFS [functional.alltypes t] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: bool_col |
| ---- DISTRIBUTEDPLAN |
| PLAN-ROOT SINK |
| | |
| 01:EXCHANGE [UNPARTITIONED] |
| | |
| 00:SCAN HDFS [functional.alltypes t] |
| partitions=24/24 files=24 size=478.45KB |
| predicates: bool_col |
| ==== |