http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/kudu-upsert.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/kudu-upsert.test b/testdata/workloads/functional-planner/queries/PlannerTest/kudu-upsert.test index 0ee1aa9..d4c3beb 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/kudu-upsert.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/kudu-upsert.test @@ -6,17 +6,22 @@ where year=2009 and month=05 UPSERT INTO KUDU [functional_kudu.testtbl] | 00:SCAN HDFS [functional.alltypes] + partition predicates: year = 2009, month = 5 partitions=1/24 files=1 size=20.36KB + row-size=25B cardinality=310 ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.testtbl] | 02:PARTIAL SORT | order by: KuduPartition(bigint_col) ASC NULLS LAST, bigint_col ASC NULLS LAST +| row-size=29B cardinality=310 | 01:EXCHANGE [KUDU(KuduPartition(bigint_col))] | 00:SCAN HDFS [functional.alltypes] + partition predicates: year = 2009, month = 5 partitions=1/24 files=1 size=20.36KB + row-size=25B cardinality=310 ==== # simple upsert with values clause upsert into table functional_kudu.testtbl @@ -26,6 +31,7 @@ UPSERT INTO KUDU [functional_kudu.testtbl] | 00:UNION constant-operands=2 + row-size=14B cardinality=2 ==== # upsert with 'with' clause and limit with x as (select string_col, count(*) from functional.alltypes group by string_col) @@ -38,44 +44,54 @@ UPSERT INTO KUDU [functional_kudu.testtbl] 03:HASH JOIN [INNER JOIN] | hash predicates: a.string_col = string_col | runtime filters: RF000 <- string_col +| row-size=38B cardinality=7.30K | |--02:AGGREGATE [FINALIZE] | | group by: string_col +| | row-size=13B cardinality=10 | | | 01:SCAN HDFS [functional.alltypes] | partitions=24/24 files=24 size=478.45KB +| row-size=13B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes a] partitions=24/24 files=24 size=478.45KB runtime filters: RF000 -> a.string_col + row-size=25B cardinality=7.30K ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.testtbl] | 08:PARTIAL SORT | order by: KuduPartition(a.bigint_col) ASC NULLS LAST, bigint_col ASC NULLS LAST +| row-size=29B cardinality=7.30K | 07:EXCHANGE [KUDU(KuduPartition(a.bigint_col))] | 03:HASH JOIN [INNER JOIN, BROADCAST] | hash predicates: a.string_col = string_col | runtime filters: RF000 <- string_col +| row-size=38B cardinality=7.30K | |--06:EXCHANGE [BROADCAST] | | | 05:AGGREGATE [FINALIZE] | | group by: string_col +| | row-size=13B cardinality=10 | | | 04:EXCHANGE [HASH(string_col)] | | | 02:AGGREGATE [STREAMING] | | group by: string_col +| | row-size=13B cardinality=10 | | | 01:SCAN HDFS [functional.alltypes] | partitions=24/24 files=24 size=478.45KB +| row-size=13B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes a] partitions=24/24 files=24 size=478.45KB runtime filters: RF000 -> a.string_col + row-size=25B cardinality=7.30K ==== # upsert with inline view upsert into functional_kudu.testtbl @@ -91,14 +107,17 @@ UPSERT INTO KUDU [functional_kudu.testtbl] | output: count(*) | group by: id, string_col | having: CAST(count(*) AS INT) < 10 +| row-size=25B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=17B cardinality=7.30K ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.testtbl] | 05:PARTIAL SORT | order by: KuduPartition(id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=29B cardinality=7.30K | 04:EXCHANGE [KUDU(KuduPartition(id))] | @@ -106,15 +125,18 @@ UPSERT INTO KUDU [functional_kudu.testtbl] | output: count:merge(*) | group by: id, string_col | having: CAST(count(*) AS INT) < 10 +| row-size=25B cardinality=7.30K | 02:EXCHANGE [HASH(id,string_col)] | 01:AGGREGATE [STREAMING] | output: count(*) | group by: id, string_col +| row-size=25B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=17B cardinality=7.30K ==== upsert into functional_kudu.testtbl select * from functional_kudu.testtbl @@ -122,15 +144,18 @@ select * from functional_kudu.testtbl UPSERT INTO KUDU [functional_kudu.testtbl] | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.testtbl] | 02:PARTIAL SORT | order by: KuduPartition(functional_kudu.testtbl.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=28B cardinality=0 | 01:EXCHANGE [KUDU(KuduPartition(functional_kudu.testtbl.id))] | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ==== # upsert with a union upsert into functional_kudu.testtbl select * from functional_kudu.testtbl where id % 3 = 0 @@ -139,27 +164,34 @@ union all select * from functional_kudu.testtbl where id % 3 = 1 UPSERT INTO KUDU [functional_kudu.testtbl] | 00:UNION +| row-size=24B cardinality=0 | |--02:SCAN KUDU [functional_kudu.testtbl] | predicates: id % 3 = 1 +| row-size=28B cardinality=0 | 01:SCAN KUDU [functional_kudu.testtbl] predicates: id % 3 = 0 + row-size=28B cardinality=0 ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.testtbl] | 04:PARTIAL SORT | order by: KuduPartition(id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=28B cardinality=0 | 03:EXCHANGE [KUDU(KuduPartition(id))] | 00:UNION +| row-size=24B cardinality=0 | |--02:SCAN KUDU [functional_kudu.testtbl] | predicates: id % 3 = 1 +| row-size=28B cardinality=0 | 01:SCAN KUDU [functional_kudu.testtbl] predicates: id % 3 = 0 + row-size=28B cardinality=0 ==== # upsert with agg on col that is already partitioned in the input and target table # TODO: we shouldn't need to do any repartioning here (IMPALA-5254). @@ -170,25 +202,31 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 01:AGGREGATE [FINALIZE] | group by: id +| row-size=4B cardinality=7.30K | 00:SCAN KUDU [functional_kudu.alltypes] + row-size=4B cardinality=7.30K ---- DISTRIBUTEDPLAN UPSERT INTO KUDU [functional_kudu.alltypes] | 05:PARTIAL SORT | order by: KuduPartition(id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=8B cardinality=7.30K | 04:EXCHANGE [KUDU(KuduPartition(id))] | 03:AGGREGATE [FINALIZE] | group by: id +| row-size=4B cardinality=7.30K | 02:EXCHANGE [HASH(id)] | 01:AGGREGATE [STREAMING] | group by: id +| row-size=4B cardinality=7.30K | 00:SCAN KUDU [functional_kudu.alltypes] + row-size=4B cardinality=7.30K ==== # Hint - noshuffle should remove the exchange node. upsert into functional_kudu.alltypes /* +noshuffle */ select * from functional.alltypes; @@ -197,9 +235,11 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 01:PARTIAL SORT | order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # same as above but the hint is at Oracle hint location. upsert /* +noshuffle */ into functional_kudu.alltypes select * from functional.alltypes; @@ -208,9 +248,11 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 01:PARTIAL SORT | order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # Hint - noclustered should remove the sort node. upsert into functional_kudu.alltypes /* +noclustered */ select * from functional.alltypes; @@ -221,6 +263,7 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # same as above but the hint is at Oracle hint location. upsert /* +noclustered */ into functional_kudu.alltypes select * from functional.alltypes; @@ -231,6 +274,7 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # Hint - noshuffle should remove the exchange node. upsert into functional_kudu.alltypes /* +noshuffle */ select * from functional.alltypes; @@ -239,9 +283,11 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 01:PARTIAL SORT | order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # same as above but the hint is at Oracle hint location. upsert /* +noshuffle */ into functional_kudu.alltypes select * from functional.alltypes; @@ -250,9 +296,11 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 01:PARTIAL SORT | order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== upsert into functional_kudu.alltypes /* +noclustered,noshuffle */ select * from functional.alltypes; @@ -261,6 +309,7 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # same as above but the hint is at Oracle hint location. upsert into functional_kudu.alltypes /* +noclustered,noshuffle */ @@ -270,4 +319,5 @@ UPSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ====
http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test b/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test index dfea970..d8b50dc 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test @@ -3,6 +3,7 @@ select * from functional_kudu.testtbl PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))} @@ -14,6 +15,7 @@ PLAN-ROOT SINK 01:EXCHANGE [UNPARTITIONED] | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ==== select * from functional_kudu.testtbl where name = '10' ---- PLAN @@ -21,6 +23,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] kudu predicates: name = '10' + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))} @@ -33,6 +36,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] kudu predicates: name = '10' + row-size=28B cardinality=0 ==== select * from functional_kudu.testtbl where name = NULL ---- PLAN @@ -40,6 +44,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] predicates: name = NULL + row-size=28B cardinality=0 ==== insert into functional_kudu.testtbl(id) values (10) ---- PLAN @@ -47,31 +52,37 @@ INSERT INTO KUDU [functional_kudu.testtbl] | 00:UNION constant-operands=1 + row-size=1B cardinality=1 ---- DISTRIBUTEDPLAN INSERT INTO KUDU [functional_kudu.testtbl] | 02:PARTIAL SORT | order by: KuduPartition(10) ASC NULLS LAST, 10 ASC NULLS LAST +| row-size=5B cardinality=1 | 01:EXCHANGE [KUDU(KuduPartition(10))] | 00:UNION constant-operands=1 + row-size=1B cardinality=1 ==== insert into functional_kudu.testtbl(id) select int_col from functional_kudu.tinyinttable ---- PLAN INSERT INTO KUDU [functional_kudu.testtbl] | 00:SCAN KUDU [functional_kudu.tinyinttable] + row-size=4B cardinality=10 ---- DISTRIBUTEDPLAN INSERT INTO KUDU [functional_kudu.testtbl] | 02:PARTIAL SORT | order by: KuduPartition(int_col) ASC NULLS LAST, int_col ASC NULLS LAST +| row-size=8B cardinality=10 | 01:EXCHANGE [KUDU(KuduPartition(int_col))] | 00:SCAN KUDU [functional_kudu.tinyinttable] + row-size=4B cardinality=10 ==== insert into functional_kudu.testtbl(id, name) select count(distinct id), name from functional_kudu.dimtbl @@ -82,38 +93,47 @@ INSERT INTO KUDU [functional_kudu.testtbl] 02:AGGREGATE [FINALIZE] | output: count(id) | group by: name +| row-size=25B cardinality=10 | 01:AGGREGATE | group by: name, id +| row-size=25B cardinality=10 | 00:SCAN KUDU [functional_kudu.dimtbl] + row-size=29B cardinality=10 ---- DISTRIBUTEDPLAN INSERT INTO KUDU [functional_kudu.testtbl] | 08:PARTIAL SORT | order by: KuduPartition(count(id)) ASC NULLS LAST, count(id) ASC NULLS LAST +| row-size=29B cardinality=10 | 07:EXCHANGE [KUDU(KuduPartition(count(id)))] | 06:AGGREGATE [FINALIZE] | output: count:merge(id) | group by: name +| row-size=25B cardinality=10 | 05:EXCHANGE [HASH(name)] | 02:AGGREGATE [STREAMING] | output: count(id) | group by: name +| row-size=25B cardinality=10 | 04:AGGREGATE | group by: name, id +| row-size=25B cardinality=10 | 03:EXCHANGE [HASH(name,id)] | 01:AGGREGATE [STREAMING] | group by: name, id +| row-size=25B cardinality=10 | 00:SCAN KUDU [functional_kudu.dimtbl] + row-size=29B cardinality=10 ==== # All predicates can be pushed down. select * from functional_kudu.testtbl @@ -124,6 +144,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] kudu predicates: id <= 20, id >= 10, zip < 50, zip <= 30, zip <= 5, zip > 1, zip >= 0, name = 'foo' + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))} @@ -134,6 +155,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.testtbl] kudu predicates: id <= 20, id >= 10, zip < 50, zip <= 30, zip <= 5, zip > 1, zip >= 0, name = 'foo' + row-size=28B cardinality=0 ==== # Constant propagation works for Kudu select * from functional_kudu.alltypes t @@ -145,6 +167,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.alltypes t] predicates: CAST(t.tinyint_col AS BIGINT) = 1000 kudu predicates: t.bigint_col = 1000, t.int_col = 10 + row-size=97B cardinality=107 ==== # Test constant folding. select * from functional_kudu.testtbl @@ -155,6 +178,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: id < 103, id < 40, id <= 60 + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))} @@ -166,6 +190,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: id < 103, id < 40, id <= 60 + row-size=28B cardinality=0 ==== # Some predicates can be pushed down but others can't (predicate on an non-const value). select * from functional_kudu.testtbl @@ -176,6 +201,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: name = 'a' + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))} @@ -189,6 +215,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: name = 'a' + row-size=28B cardinality=0 ==== # No predicates can be pushed down (predicate on a non-const value and # non-binary predicate). There is a single tablet so no partition pruning. @@ -200,6 +227,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: name IS NULL + row-size=28B cardinality=0 ---- SCANRANGELOCATIONS NODE 0: ScanToken{table=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))} @@ -213,6 +241,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.testtbl] predicates: CAST(sin(id) AS BOOLEAN) = TRUE kudu predicates: name IS NULL + row-size=28B cardinality=0 ==== # Derived EmptySets for Kudu select * from functional_kudu.alltypes t @@ -230,9 +259,11 @@ PLAN-ROOT SINK | 01:SORT | order by: o_orderkey ASC +| row-size=8B cardinality=150.00K | 00:SCAN KUDU [tpch_kudu.orders] predicates: o_orderkey < 10.0 + row-size=8B cardinality=150.00K ==== # IMPALA-3871: Casting literals to TIMESTAMP throw when pushed to KuduScanNode select t.c from @@ -243,10 +274,12 @@ PLAN-ROOT SINK | 01:SORT | order by: c ASC +| row-size=22B cardinality=150.00K | 00:SCAN KUDU [tpch_kudu.orders] predicates: CAST(o_orderdate AS TIMESTAMP) <= TIMESTAMP '1995-01-01 00:00:00' kudu predicates: o_orderkey < 10 + row-size=26B cardinality=150.00K ==== # IMPALA-4213: Planner not pushing some predicates with constant exprs to Kudu select count(*) from functional_kudu.alltypes @@ -257,9 +290,11 @@ PLAN-ROOT SINK | 01:AGGREGATE [FINALIZE] | output: count(*) +| row-size=8B cardinality=1 | 00:SCAN KUDU [functional_kudu.alltypes] kudu predicates: id < 1475059775, id > 1475059665 + row-size=0B cardinality=730 ==== insert into table functional_kudu.alltypes select * from functional_kudu.alltypes @@ -267,15 +302,18 @@ select * from functional_kudu.alltypes INSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN KUDU [functional_kudu.alltypes] + row-size=97B cardinality=7.30K ---- DISTRIBUTEDPLAN INSERT INTO KUDU [functional_kudu.alltypes] | 02:PARTIAL SORT | order by: KuduPartition(functional_kudu.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 01:EXCHANGE [KUDU(KuduPartition(functional_kudu.alltypes.id))] | 00:SCAN KUDU [functional_kudu.alltypes] + row-size=97B cardinality=7.30K ==== insert into table functional_kudu.testtbl select id, name, maxzip as zip @@ -289,27 +327,33 @@ INSERT INTO KUDU [functional_kudu.testtbl] 01:AGGREGATE [FINALIZE] | output: max(zip) | group by: id, name +| row-size=24B cardinality=0 | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ---- DISTRIBUTEDPLAN INSERT INTO KUDU [functional_kudu.testtbl] | 05:PARTIAL SORT | order by: KuduPartition(id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=28B cardinality=0 | 04:EXCHANGE [KUDU(KuduPartition(id))] | 03:AGGREGATE [FINALIZE] | output: max:merge(zip) | group by: id, name +| row-size=24B cardinality=0 | 02:EXCHANGE [HASH(id,name)] | 01:AGGREGATE [STREAMING] | output: max(zip) | group by: id, name +| row-size=24B cardinality=0 | 00:SCAN KUDU [functional_kudu.testtbl] + row-size=28B cardinality=0 ==== # IMPALA-4479: Test proper folding of constant boolean exprs. select * from functional_kudu.alltypes @@ -319,6 +363,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.alltypes] kudu predicates: bool_col = FALSE + row-size=97B cardinality=3.65K ==== # IMPALA-4578: Test predicate propagation for Kudu scans. select /* +straight_join */ count(*) @@ -334,26 +379,32 @@ PLAN-ROOT SINK | 05:AGGREGATE [FINALIZE] | output: count(*) +| row-size=8B cardinality=1 | 04:HASH JOIN [LEFT OUTER JOIN] | hash predicates: b.int_col = c.int_col | other predicates: c.int_col > 20 +| row-size=16B cardinality=1 | |--02:SCAN KUDU [functional_kudu.alltypestiny c] | kudu predicates: c.int_col > 20 +| row-size=4B cardinality=1 | 03:HASH JOIN [INNER JOIN] | hash predicates: a.id = b.id | runtime filters: RF001 <- b.id +| row-size=12B cardinality=1 | |--01:SCAN KUDU [functional_kudu.alltypessmall b] | predicates: CAST(b.id AS STRING) > '123' | kudu predicates: b.id > 10 +| row-size=8B cardinality=10 | 00:SCAN KUDU [functional_kudu.alltypes a] predicates: CAST(a.id AS STRING) > '123' kudu predicates: a.id > 10 runtime filters: RF001 -> a.id + row-size=4B cardinality=730 ==== # IMPALA-4662: Kudu analysis failure for NULL literal in IN list # NULL literal in values list results in applying predicate at scan node @@ -366,6 +417,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.alltypestiny] predicates: id IN (1, NULL), bigint_col IN (NULL), bool_col IN (NULL), double_col IN (NULL), float_col IN (NULL), smallint_col IN (NULL), string_col IN (NULL), tinyint_col IN (NULL) + row-size=45B cardinality=1 ==== # IMPALA-3586: The operand with the Kudu scan cannot be passed through because id is # not-nullable (primary key). @@ -377,11 +429,14 @@ PLAN-ROOT SINK | 00:UNION | pass-through-operands: 02 +| row-size=4B cardinality=14.60K | |--01:SCAN KUDU [functional_kudu.alltypes] +| row-size=4B cardinality=7.30K | 02:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=4B cardinality=7.30K ==== # IMPALA-3586: When both operands are Kudu scans, they should both be passed through. select id from functional_kudu.alltypes @@ -392,10 +447,13 @@ PLAN-ROOT SINK | 00:UNION | pass-through-operands: all +| row-size=4B cardinality=14.60K | |--02:SCAN KUDU [functional_kudu.alltypes] +| row-size=4B cardinality=7.30K | 01:SCAN KUDU [functional_kudu.alltypes] + row-size=4B cardinality=7.30K ==== # Hint - noshuffle should remove the exchange node. insert into functional_kudu.alltypes /* +noshuffle */ select * from functional.alltypes; @@ -404,9 +462,11 @@ INSERT INTO KUDU [functional_kudu.alltypes] | 01:PARTIAL SORT | order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST +| row-size=93B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # Hint - noclustered should remove the sort node. insert into functional_kudu.alltypes /* +noclustered */ select * from functional.alltypes; @@ -417,6 +477,7 @@ INSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== insert into functional_kudu.alltypes /* +noclustered,noshuffle */ select * from functional.alltypes; @@ -425,6 +486,7 @@ INSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # Hint - noclustered should remove the sort node from CTAS. create /* +noclustered */ table t @@ -437,6 +499,7 @@ INSERT INTO KUDU [default.t] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== create /* +noclustered,noshuffle */ table t primary key(id) partition by hash(id) partitions 3 stored as kudu as @@ -446,6 +509,7 @@ INSERT INTO KUDU [default.t] | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=89B cardinality=7.30K ==== # IMPALA-5602: If a query contains predicates that are all pushed to kudu and there is a # limit, then the query should not incorrectly run with 'small query' optimization. @@ -459,6 +523,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.alltypesagg_idx] kudu predicates: functional_kudu.alltypesagg_idx.tinyint_col = 9 limit: 10 + row-size=103B cardinality=10 ==== # IMPALA-5602: If a query contains predicates that are all pushed to kudu, there is a # limit, and no table stats, then the query should not incorrectly run with 'small query' @@ -473,6 +538,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [kudu_planner_test.no_stats] kudu predicates: tinyint_col = 9 limit: 10 + row-size=88B cardinality=10 ==== # Insert into an unpartitioned table, shouldn't partition/sort insert into tpch_kudu.nation @@ -481,7 +547,8 @@ select * from tpch_parquet.nation INSERT INTO KUDU [tpch_kudu.nation] | 00:SCAN HDFS [tpch_parquet.nation] - partitions=1/1 files=1 size=2.74KB + partitions=1/1 files=1 size=2.75KB + row-size=109B cardinality=25 ==== # Unpartitioned table, still has an exchange due to shuffle hint. insert into tpch_kudu.nation /* +shuffle */ @@ -492,7 +559,8 @@ INSERT INTO KUDU [tpch_kudu.nation] 01:EXCHANGE [UNPARTITIONED] | 00:SCAN HDFS [tpch_parquet.nation] - partitions=1/1 files=1 size=2.74KB + partitions=1/1 files=1 size=2.75KB + row-size=109B cardinality=25 ==== # Unpartitioned table, clustered hint forces sort node. insert into tpch_kudu.nation /* +clustered */ @@ -502,9 +570,11 @@ INSERT INTO KUDU [tpch_kudu.nation] | 01:PARTIAL SORT | order by: n_nationkey ASC NULLS LAST +| row-size=109B cardinality=25 | 00:SCAN HDFS [tpch_parquet.nation] partitions=1/1 files=1 size=2.75KB + row-size=109B cardinality=25 ==== # Unpartitioned table, no sort node without clustered hint. insert into tpch_kudu.nation @@ -514,6 +584,7 @@ INSERT INTO KUDU [tpch_kudu.nation] | 00:SCAN HDFS [tpch_parquet.nation] partitions=1/1 files=1 size=2.75KB + row-size=109B cardinality=25 ==== # Partition and primary key exprs are all constant, so don't partition/sort. insert into functional_kudu.alltypes (id) @@ -522,6 +593,7 @@ select 1 from functional_kudu.alltypes INSERT INTO KUDU [functional_kudu.alltypes] | 00:SCAN KUDU [functional_kudu.alltypes] + row-size=0B cardinality=7.30K ==== # Partition exprs are constant but primary key exprs aren't, so sort but don't partition. insert into functional_kudu.jointbl (test_id, test_name, test_zip, alltypes_id) @@ -531,9 +603,11 @@ INSERT INTO KUDU [functional_kudu.jointbl] | 01:PARTIAL SORT | order by: int_col ASC NULLS LAST, id ASC NULLS LAST +| row-size=8B cardinality=7.30K | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=8B cardinality=7.30K ==== # Decimal predicate. select * from functional_kudu.decimal_tbl where d4 = 0.123456789; @@ -542,6 +616,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.decimal_tbl] kudu predicates: d4 = 0.123456789 + row-size=56B cardinality=5 ---- DISTRIBUTEDPLAN PLAN-ROOT SINK | @@ -549,4 +624,5 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.decimal_tbl] kudu predicates: d4 = 0.123456789 -==== \ No newline at end of file + row-size=56B cardinality=5 +==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/lineage.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/lineage.test b/testdata/workloads/functional-planner/queries/PlannerTest/lineage.test index 02ac733..9c4c49b 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/lineage.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/lineage.test @@ -9,8 +9,8 @@ select * from ( "queryText":"select * from (\n select tinyint_col + int_col x from functional.alltypes\n union all\n select sum(bigint_col) y from (select bigint_col from functional.alltypes) v1) v2", "queryId":"0:0", "hash":"25456c60a2e874a20732f42c7af27553", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -63,8 +63,8 @@ order by b.bigint_col limit 10 "queryText":"select sum(a.tinyint_col) over (partition by a.smallint_col order by a.id),\n count(b.string_col), b.timestamp_col\nfrom functional.alltypes a join functional.alltypessmall b on (a.id = b.id)\nwhere a.year = 2010 and b.float_col > 0\ngroup by a.tinyint_col, a.smallint_col, a.id, b.string_col, b.timestamp_col, b.bigint_col\nhaving count(a.int_col) > 10\norder by b.bigint_col limit 10", "queryId":"0:0", "hash":"e0309eeff9811f53c82657d62c1e04eb", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -199,9 +199,9 @@ create table lineage_test_tbl as select int_col, tinyint_col from functional.all { "queryText":"create table lineage_test_tbl as select int_col, tinyint_col from functional.alltypes", "queryId":"0:0", - "hash":"f7666959b65ce1aa2a695ae90adb7c85", - "user":"dev", - "timestamp":1446159271, + "hash":"407f23b24758ffcb2ac445b9703f5c44", + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -254,9 +254,9 @@ where a.year = 2009 and b.month = 2 { "queryText":"create table lineage_test_tbl as\nselect distinct a.int_col, a.string_col from functional.alltypes a\ninner join functional.alltypessmall b on (a.id = b.id)\nwhere a.year = 2009 and b.month = 2", "queryId":"0:0", - "hash":"6d83126f8e34eec31ed4e111e1c32e78", - "user":"dev", - "timestamp":1446159271, + "hash":"f3101dcb046a7d34d7ee14892a6cc94e", + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -342,9 +342,9 @@ select * from { "queryText":"create table lineage_test_tbl as\nselect * from\n (select * from\n (select int_col from functional.alltypestiny limit 1) v1 ) v2", "queryId":"0:0", - "hash":"f719f8eba46eda75e9cc560310885558", - "user":"dev", - "timestamp":1446159271, + "hash":"9c04c1e9feee35ffacf14bfcd3b363a7", + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -376,9 +376,9 @@ create table lineage_test_tblm as select * from functional_hbase.alltypes limit { "queryText":"create table lineage_test_tblm as select * from functional_hbase.alltypes limit 5", "queryId":"0:0", - "hash":"bedebc5bc72bbc6aec385c514944daae", - "user":"dev", - "timestamp":1446159271, + "hash":"a294f36bddf2adb329eac3055a76b2b5", + "user":"progers", + "timestamp":1546590134, "edges":[ { "sources":[ @@ -642,8 +642,8 @@ functional_hbase.alltypes "queryText":"insert into\nfunctional_hbase.alltypes\n values (1, 1, true, \"1999-12-01\", 2.0, 1.0, 1, 12, 2, \"abs\",\n cast(now() as timestamp), 1, 1999)", "queryId":"0:0", "hash":"b923425ce9cc2d53d36523ec83971e67", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -827,8 +827,8 @@ from functional.alltypes "queryText":"insert into table functional.alltypesnopart (id, bool_col, timestamp_col)\nselect id, bool_col, timestamp_col\nfrom functional.alltypes", "queryId":"0:0", "hash":"b7b9474fc6b97f104bd031209438ee0e", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1006,8 +1006,8 @@ where year=2009 and month=05 "queryText":"insert into table functional.alltypessmall (smallint_col, int_col)\npartition (year=2009, month=04)\nselect smallint_col, int_col\nfrom functional.alltypes\nwhere year=2009 and month=05", "queryId":"0:0", "hash":"2ed3a6c784e1c0c7fcef226d71375180", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1237,8 +1237,8 @@ where year=2009 and month>10 "queryText":"insert into table functional.alltypessmall (id, string_col, int_col)\npartition (year, month)\nselect id, string_col, int_col, year, month\nfrom functional_seq_snap.alltypes\nwhere year=2009 and month>10", "queryId":"0:0", "hash":"39ac95ce0632ef1ee8b474be644971f3", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1480,8 +1480,8 @@ having min(id) > 10 "queryText":"insert into table functional.alltypessmall\npartition (year=2009, month)\nselect min(id), min(bool_col), min(tinyint_col), min(smallint_col), min(int_col),\nmin(bigint_col), min(float_col), min(double_col), min(date_string_col), min(string_col),\nmin(timestamp_col), month\nfrom functional.alltypes\nwhere year=2009 and month>10\ngroup by month\nhaving min(id) > 10", "queryId":"0:0", "hash":"e6969c2cc67e9d6f3f985ddc6431f915", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1767,8 +1767,8 @@ group by int_col, tinyint_col "queryText":"select\nmax(tinyint_col) over(partition by int_col)\nfrom functional.alltypes\ngroup by int_col, tinyint_col", "queryId":"0:0", "hash":"83c78528e6f5325c56a3f3521b08a78d", - "user":"dev", - "timestamp":1446159271, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1814,8 +1814,8 @@ select int_col, rank() over(order by int_col) from functional.alltypesagg "queryText":"select int_col, rank() over(order by int_col) from functional.alltypesagg", "queryId":"0:0", "hash":"4f1ecaaed571d2ed9f09f091f399c311", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1872,8 +1872,8 @@ order by a.tinyint_col, a.int_col "queryText":"select a.tinyint_col, a.int_col, count(a.double_col)\n over(partition by a.tinyint_col order by a.int_col desc rows between 1 preceding and 1 following)\nfrom functional.alltypes a inner join functional.alltypessmall b on a.id = b.id\norder by a.tinyint_col, a.int_col", "queryId":"0:0", "hash":"b6e26c00b2ef17f0592ebadb0ecc21f6", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -1983,8 +1983,8 @@ order by 2, 3, 4 "queryText":"with v2 as\n (select\n double_col,\n count(int_col) over() a,\n sum(int_col + bigint_col) over(partition by bool_col) b\n from\n (select * from functional.alltypes) v1)\nselect double_col, a, b, a + b, double_col + a from v2\norder by 2, 3, 4", "queryId":"0:0", "hash":"6bf993cea0d1ab9e613674ef178916c9", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2115,8 +2115,8 @@ order by 2, 3, 4 "queryText":"select double_col, a, b, a + b, double_col + a from\n (select\n double_col,\n count(int_col) over() a,\n sum(int_col + bigint_col) over(partition by bool_col) b\n from\n (select * from functional.alltypes) v1) v2\norder by 2, 3, 4", "queryId":"0:0", "hash":"811403c86e86fe630dea7bd0a6c89273", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2249,8 +2249,8 @@ where b.month = 1 "queryText":"select a.month, a.year, b.int_col, b.month\nfrom\n (select year, month from functional.alltypes\n union all\n select year, month from functional.alltypes) a\n inner join\n functional.alltypessmall b\n on (a.month = b.month)\nwhere b.month = 1", "queryId":"0:0", "hash":"e3000cd5edf2a02e1f5407810f3cc09a", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2357,8 +2357,8 @@ where month = 1 "queryText":"select t1.int_col, t2.month, t2.int_col + 1\nfrom (\n select int_col, count(*)\n from functional.alltypessmall\n where month = 1\n group by int_col\n having count(*) > 1\n order by count(*) desc limit 5\n ) t1\njoin functional.alltypes t2 on (t1.int_col = t2.int_col)\nwhere month = 1", "queryId":"0:0", "hash":"3f1ecf7239e205342aee4979e7cb4877", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2459,8 +2459,8 @@ and x.int_col + x.float_col + cast(c.string_col as float) < 1000 "queryText":"select x.smallint_col, x.id, x.tinyint_col, c.id, x.int_col, x.float_col, c.string_col\nfrom functional.alltypessmall c\njoin (\n select a.smallint_col smallint_col, a.tinyint_col tinyint_col, a.day day,\n a.int_col int_col, a.month month, b.float_col float_col, b.id id\n from ( select * from functional.alltypesagg a where month=1 ) a\n join functional.alltypessmall b on (a.smallint_col = b.id)\n ) x on (x.tinyint_col = c.id)\nwhere x.day=1\nand x.int_col > 899\nand x.float_col > 4.5\nand c.string_col < '7'\nand x.int_col + x.float_col + cast(c.string_col as float) < 1000", "queryId":"0:0", "hash":"4edf165aed5982ede63f7c91074f4b44", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2636,8 +2636,8 @@ from "queryText":"select c1, c2, c3\nfrom\n (select c1, c2, c3\n from\n (select int_col c1, sum(float_col) c2, min(float_col) c3\n from functional_hbase.alltypessmall\n group by 1) x\n order by 2,3 desc\n limit 5\n) y", "queryId":"0:0", "hash":"8b4d1ab11721d9ebdf26666d4195eb18", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2730,8 +2730,8 @@ limit 0 "queryText":"select c1, x2\nfrom (\n select c1, min(c2) x2\n from (\n select c1, c2, c3\n from (\n select int_col c1, tinyint_col c2, min(float_col) c3\n from functional_hbase.alltypessmall\n group by 1, 2\n order by 1,2\n limit 1\n ) x\n ) x2\n group by c1\n) y\norder by 2,1 desc\nlimit 0", "queryId":"0:0", "hash":"50d3b4f249f038b0711ea75c17640fc9", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2794,8 +2794,8 @@ select int_col, string_col from functional.view_view "queryText":"select int_col, string_col from functional.view_view", "queryId":"0:0", "hash":"9073496459077de1332e5017977dedf5", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2847,8 +2847,8 @@ where t.id < 10 "queryText":"select t.id from (select id from functional.alltypes_view) t\nwhere t.id < 10", "queryId":"0:0", "hash":"8ba7998033f90e1e358f4fdc7ea4251b", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2893,8 +2893,8 @@ where id in "queryText":"select string_col, float_col, bool_col\nfrom functional.alltypes\nwhere id in\n (select id from functional.alltypesagg)", "queryId":"0:0", "hash":"e8ad1371d2a13e1ee9ec45689b62cdc9", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -2993,8 +2993,8 @@ and tinyint_col < 10 "queryText":"select 1\nfrom functional.alltypesagg a\nwhere exists\n (select id, count(int_col) over (partition by bool_col)\n from functional.alltypestiny b\n where a.tinyint_col = b.tinyint_col\n group by id, int_col, bool_col)\nand tinyint_col < 10", "queryId":"0:0", "hash":"a7500c022d29c583c31b287868a848bf", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3044,8 +3044,8 @@ and a.bigint_col > 10 "queryText":"select int_col + 1, tinyint_col - 1\nfrom functional.alltypes a\nwhere a.int_col <\n (select max(int_col) from functional.alltypesagg g where g.bool_col = true)\nand a.bigint_col > 10", "queryId":"0:0", "hash":"5e6227f323793ea4441e2a3119af2f09", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3125,8 +3125,8 @@ with t as (select int_col x, bigint_col y from functional.alltypes) select x, y "queryText":"with t as (select int_col x, bigint_col y from functional.alltypes) select x, y from t", "queryId":"0:0", "hash":"a7ab58d90540f28a8dfd69703632ad7a", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3179,8 +3179,8 @@ select id, int_col, string_col, year, month from t1 "queryText":"with t1 as (select * from functional.alltypestiny)\ninsert into functional.alltypesinsert (id, int_col, string_col) partition(year, month)\nselect id, int_col, string_col, year, month from t1", "queryId":"0:0", "hash":"0bc5b3e66cc72387f74893b1f1934946", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3398,8 +3398,8 @@ from "queryText":"select lead(a) over (partition by b order by c)\nfrom\n (select lead(id) over (partition by int_col order by bigint_col) as a,\n max(id) over (partition by tinyint_col order by int_col) as b,\n min(int_col) over (partition by string_col order by bool_col) as c\n from functional.alltypes) v", "queryId":"0:0", "hash":"aa95e5e6f39fc80bb3c318a2515dc77d", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3471,8 +3471,8 @@ create view test_view_lineage as select id from functional.alltypestiny "queryText":"create view test_view_lineage as select id from functional.alltypestiny", "queryId":"0:0", "hash":"ff6b1ecb265afe4f03355a07238cfe37", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3521,8 +3521,8 @@ limit 0 "queryText":"create view test_view_lineage (a, b) as select c1, x2\nfrom (\n select c1, min(c2) x2\n from (\n select c1, c2, c3\n from (\n select int_col c1, tinyint_col c2, min(float_col) c3\n from functional_hbase.alltypessmall\n group by 1, 2\n order by 1,2\n limit 1\n ) x\n ) x2\n group by c1\n) y\norder by 2,1 desc\nlimit 0", "queryId":"0:0", "hash":"b96adf892b897da1e562c5be98724fb5", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3598,8 +3598,8 @@ create view test_view_lineage (a1, a2, a3, a4, a5, a6, a7) as "queryText":"create view test_view_lineage (a1, a2, a3, a4, a5, a6, a7) as\n select x.smallint_col, x.id, x.tinyint_col, c.id, x.int_col, x.float_col, c.string_col\n from functional.alltypessmall c\n join (\n select a.smallint_col smallint_col, a.tinyint_col tinyint_col, a.day day,\n a.int_col int_col, a.month month, b.float_col float_col, b.id id\n from ( select * from functional.alltypesagg a where month=1 ) a\n join functional.alltypessmall b on (a.smallint_col = b.id)\n ) x on (x.tinyint_col = c.id)\n where x.day=1\n and x.int_col > 899\n and x.float_col > 4.5\n and c.string_col < '7'\n and x.int_col + x.float_col + cast(c.string_col as float) < 1000", "queryId":"0:0", "hash":"ffbe643df8f26e92907fb45de1aeda36", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3781,8 +3781,8 @@ create view test_view_lineage as "queryText":"create view test_view_lineage as\n select * from (\n select sum(a.tinyint_col) over (partition by a.smallint_col order by a.id),\n count(b.string_col), b.timestamp_col\n from functional.alltypes a join functional.alltypessmall b on (a.id = b.id)\n where a.year = 2010 and b.float_col > 0\n group by a.tinyint_col, a.smallint_col, a.id, b.string_col, b.timestamp_col, b.bigint_col\n having count(a.int_col) > 10\n order by b.bigint_col limit 10) t", "queryId":"0:0", "hash":"d4b9e2d63548088f911816b2ae29d7c2", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3918,8 +3918,8 @@ alter view functional.alltypes_view as select id from functional.alltypestiny "queryText":"alter view functional.alltypes_view as select id from functional.alltypestiny", "queryId":"0:0", "hash":"8c9367afc562a4c04d2d40e1276646c2", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -3959,8 +3959,8 @@ select * from ( "queryText":"select * from (\n select int_struct_col.f1 + int_struct_col.f2 x from functional.allcomplextypes\n where year = 2000\n order by nested_struct_col.f2.f12.f21 limit 10\n union all\n select sum(f1) y from\n (select complex_struct_col.f1 f1 from functional.allcomplextypes\n group by 1) v1) v2", "queryId":"0:0", "hash":"4fb3ceddbf596097335af607d528f5a7", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4027,8 +4027,8 @@ select * from functional.allcomplextypes.int_array_col a inner join "queryText":"select * from functional.allcomplextypes.int_array_col a inner join\n functional.allcomplextypes.struct_map_col m on (a.item = m.f1)", "queryId":"0:0", "hash":"8c0c64f8a4c08b82ad343ab439101957", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4133,8 +4133,8 @@ select * from functional.allcomplextypes t, t.int_array_col a, t.struct_map_col "queryText":"select * from functional.allcomplextypes t, t.int_array_col a, t.struct_map_col m\n where a.item = m.f1", "queryId":"0:0", "hash":"1b0db371b32e90d33629ed7779332cf7", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4318,8 +4318,8 @@ select a + b as ab, c, d, e from functional.allcomplextypes t, "queryText":"select a + b as ab, c, d, e from functional.allcomplextypes t,\n (select sum(item) a from t.int_array_col\n where item < 10) v1,\n (select count(f1) b from t.struct_map_col\n group by key) v2,\n (select avg(value) over(partition by key) c from t.map_map_col.value) v3,\n (select item d from t.int_array_col\n union all\n select value from t.int_map_col) v4,\n (select f21 e from t.complex_nested_struct_col.f2.f12 order by key limit 10) v5", "queryId":"0:0", "hash":"4affc0d1e384475d1ff2fc2e19643064", - "user":"dev", - "timestamp":1446159272, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4456,8 +4456,8 @@ where not exists (select 1 from functional.alltypes a where v.id = a.id) "queryText":"create view test_view_lineage as\nselect id from functional.alltypes_view v\nwhere not exists (select 1 from functional.alltypes a where v.id = a.id)", "queryId":"0:0", "hash":"e79b8abc8a682d9e0f6b2c30a6c885f3", - "user":"dev", - "timestamp":1475094005, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4500,8 +4500,8 @@ where k.int_col < 10 "queryText":"select count(*) from functional_kudu.alltypes k join functional.alltypes h on k.id = h.id\nwhere k.int_col < 10", "queryId":"0:0", "hash":"7b7c92d488186d869bb6b78c97666f41", - "user":"dev", - "timestamp":1479538352, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4555,8 +4555,8 @@ functional.alltypes a where a.id < 100 "queryText":"insert into functional_kudu.testtbl select id, string_col as name, int_col as zip from\nfunctional.alltypes a where a.id < 100", "queryId":"0:0", "hash":"87a59bac56c6ad27f7af6e71af46d552", - "user":"dev", - "timestamp":1479539012, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4639,8 +4639,8 @@ functional.alltypes where id < 10 "queryText":"insert into functional_kudu.testtbl (name, id) select string_col as name, id from\nfunctional.alltypes where id < 10", "queryId":"0:0", "hash":"0bccfdbf4118e6d5a3d94062ecb5130a", - "user":"dev", - "timestamp":1479933751, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4703,8 +4703,8 @@ functional.alltypes where id < 10 "queryText":"upsert into functional_kudu.testtbl (name, id) select string_col as name, id from\nfunctional.alltypes where id < 10", "queryId":"0:0", "hash":"f4c1e7b016e75012f7268f2f42ae5630", - "user":"dev", - "timestamp":1479933751, + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4768,9 +4768,9 @@ from functional.alltypestiny { "queryText":"create table kudu_ctas primary key (id) partition by hash (id) partitions 3\nstored as kudu as select id, bool_col, tinyint_col, smallint_col, int_col,\nbigint_col, float_col, double_col, date_string_col, string_col\nfrom functional.alltypestiny", "queryId":"0:0", - "hash":"6e3e192c7fb8bb6b22674a9b7b488b55", - "user":"dev", - "timestamp":1479933751, + "hash":"de98b09af6b6ab0f0678c5fc0c4369b4", + "user":"progers", + "timestamp":1546590135, "edges":[ { "sources":[ @@ -4967,9 +4967,3 @@ from functional.alltypestiny ] } ==== -# No lineage should be generated for UPDATE -update functional_kudu.alltypes set int_col = 1 where id = 1 -==== -# No lineage should be generated from DELETE -delete from functional_kudu.alltypes where id = 1 -==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/max-row-size.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/max-row-size.test b/testdata/workloads/functional-planner/queries/PlannerTest/max-row-size.test index 0ffe8af..34c4938 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/max-row-size.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/max-row-size.test @@ -18,7 +18,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=10.33MB mem-reservation=0B thread-reservation=0 -| tuple-ids=0,1 row-size=327B cardinality=150000 +| tuple-ids=0,1 row-size=327B cardinality=150.00K | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=1 @@ -28,7 +28,7 @@ Per-Host Resources: mem-estimate=41.95MB mem-reservation=33.94MB thread-reservat | fk/pk conjuncts: c_nationkey = n_nationkey | runtime filters: RF000[bloom] <- n_nationkey | mem-estimate=16.94MB mem-reservation=16.94MB spill-buffer=64.00KB thread-reservation=0 -| tuple-ids=0,1 row-size=327B cardinality=150000 +| tuple-ids=0,1 row-size=327B cardinality=150.00K | in pipelines: 00(GETNEXT), 01(OPEN) | |--03:EXCHANGE [BROADCAST] @@ -56,7 +56,7 @@ Per-Host Resources: mem-estimate=41.95MB mem-reservation=33.94MB thread-reservat columns: all extrapolated-rows=disabled max-scan-range-rows=150000 mem-estimate=24.00MB mem-reservation=16.00MB thread-reservation=1 - tuple-ids=0 row-size=218B cardinality=150000 + tuple-ids=0 row-size=218B cardinality=150.00K in pipelines: 00(GETNEXT) ==== # Join with large build side. @@ -79,7 +79,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=11.20MB mem-reservation=0B thread-reservation=0 -| tuple-ids=0,1N row-size=402B cardinality=6001215 +| tuple-ids=0,1N row-size=402B cardinality=6.00M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 @@ -88,12 +88,12 @@ Per-Host Resources: mem-estimate=359.29MB mem-reservation=86.00MB thread-reserva | hash predicates: l_orderkey = o_orderkey | fk/pk conjuncts: l_orderkey = o_orderkey | mem-estimate=268.94MB mem-reservation=46.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=0,1N row-size=402B cardinality=6001215 +| tuple-ids=0,1N row-size=402B cardinality=6.00M | in pipelines: 00(GETNEXT), 01(OPEN) | |--03:EXCHANGE [BROADCAST] | | mem-estimate=10.34MB mem-reservation=0B thread-reservation=0 -| | tuple-ids=1 row-size=171B cardinality=1500000 +| | tuple-ids=1 row-size=171B cardinality=1.50M | | in pipelines: 01(GETNEXT) | | | F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2 @@ -103,19 +103,19 @@ Per-Host Resources: mem-estimate=359.29MB mem-reservation=86.00MB thread-reserva | stored statistics: | table: rows=1500000 size=54.07MB | columns: all -| extrapolated-rows=disabled max-scan-range-rows=1177135 +| extrapolated-rows=disabled max-scan-range-rows=1177136 | mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=1 -| tuple-ids=1 row-size=171B cardinality=1500000 +| tuple-ids=1 row-size=171B cardinality=1.50M | in pipelines: 01(GETNEXT) | 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM] - partitions=1/1 files=3 size=193.72MB + partitions=1/1 files=3 size=193.60MB stored statistics: - table: rows=6001215 size=193.72MB + table: rows=6001215 size=193.60MB columns: all - extrapolated-rows=disabled max-scan-range-rows=2141609 + extrapolated-rows=disabled max-scan-range-rows=2141702 mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1 - tuple-ids=0 row-size=231B cardinality=6001215 + tuple-ids=0 row-size=231B cardinality=6.00M in pipelines: 00(GETNEXT) ==== # Null-aware anti-join with medium build side. @@ -136,7 +136,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=10.69MB mem-reservation=0B thread-reservation=0 -| tuple-ids=0 row-size=231B cardinality=6001215 +| tuple-ids=0 row-size=231B cardinality=6.00M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 @@ -144,12 +144,12 @@ Per-Host Resources: mem-estimate=124.02MB mem-reservation=74.00MB thread-reserva 02:HASH JOIN [NULL AWARE LEFT ANTI JOIN, BROADCAST] | hash predicates: l_orderkey = o_orderkey | mem-estimate=34.00MB mem-reservation=34.00MB spill-buffer=1.00MB thread-reservation=0 -| tuple-ids=0 row-size=231B cardinality=6001215 +| tuple-ids=0 row-size=231B cardinality=6.00M | in pipelines: 00(GETNEXT), 01(OPEN) | |--03:EXCHANGE [BROADCAST] | | mem-estimate=10.02MB mem-reservation=0B thread-reservation=0 -| | tuple-ids=1 row-size=8B cardinality=1500000 +| | tuple-ids=1 row-size=8B cardinality=1.50M | | in pipelines: 01(GETNEXT) | | | F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2 @@ -159,19 +159,19 @@ Per-Host Resources: mem-estimate=124.02MB mem-reservation=74.00MB thread-reserva | stored statistics: | table: rows=1500000 size=54.07MB | columns: all -| extrapolated-rows=disabled max-scan-range-rows=1177135 +| extrapolated-rows=disabled max-scan-range-rows=1177136 | mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1 -| tuple-ids=1 row-size=8B cardinality=1500000 +| tuple-ids=1 row-size=8B cardinality=1.50M | in pipelines: 01(GETNEXT) | 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM] - partitions=1/1 files=3 size=193.72MB + partitions=1/1 files=3 size=193.60MB stored statistics: - table: rows=6001215 size=193.72MB + table: rows=6001215 size=193.60MB columns: all - extrapolated-rows=disabled max-scan-range-rows=2141609 + extrapolated-rows=disabled max-scan-range-rows=2141702 mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1 - tuple-ids=0 row-size=231B cardinality=6001215 + tuple-ids=0 row-size=231B cardinality=6.00M in pipelines: 00(GETNEXT) ==== # Mid NDV aggregation. @@ -197,7 +197,7 @@ PLAN-ROOT SINK | 08:EXCHANGE [UNPARTITIONED] | mem-estimate=10.10MB mem-reservation=0B thread-reservation=0 -| tuple-ids=2 row-size=29B cardinality=4690314 +| tuple-ids=2 row-size=29B cardinality=4.69M | in pipelines: 07(GETNEXT) | F03:PLAN FRAGMENT [HASH(l_orderkey,o_orderstatus)] hosts=3 instances=3 @@ -207,12 +207,12 @@ Per-Host Resources: mem-estimate=41.10MB mem-reservation=31.00MB thread-reservat | group by: l_orderkey, o_orderstatus | having: count(*) = CAST(1 AS BIGINT) | mem-estimate=31.00MB mem-reservation=31.00MB spill-buffer=1.00MB thread-reservation=0 -| tuple-ids=2 row-size=29B cardinality=4690314 +| tuple-ids=2 row-size=29B cardinality=4.69M | in pipelines: 07(GETNEXT), 00(OPEN) | 06:EXCHANGE [HASH(l_orderkey,o_orderstatus)] | mem-estimate=10.10MB mem-reservation=0B thread-reservation=0 -| tuple-ids=2 row-size=29B cardinality=4690314 +| tuple-ids=2 row-size=29B cardinality=4.69M | in pipelines: 00(GETNEXT) | F02:PLAN FRAGMENT [HASH(l_orderkey)] hosts=3 instances=3 @@ -221,7 +221,7 @@ Per-Host Resources: mem-estimate=99.65MB mem-reservation=66.00MB thread-reservat | output: count(*) | group by: l_orderkey, o_orderstatus | mem-estimate=47.56MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=2 row-size=29B cardinality=4690314 +| tuple-ids=2 row-size=29B cardinality=4.69M | in pipelines: 00(GETNEXT) | 02:HASH JOIN [INNER JOIN, PARTITIONED] @@ -229,12 +229,12 @@ Per-Host Resources: mem-estimate=99.65MB mem-reservation=66.00MB thread-reservat | fk/pk conjuncts: l_orderkey = o_orderkey | runtime filters: RF000[bloom] <- o_orderkey | mem-estimate=31.00MB mem-reservation=31.00MB spill-buffer=1.00MB thread-reservation=0 -| tuple-ids=0,1 row-size=29B cardinality=5757710 +| tuple-ids=0,1 row-size=29B cardinality=5.76M | in pipelines: 00(GETNEXT), 01(OPEN) | |--05:EXCHANGE [HASH(o_orderkey)] | | mem-estimate=10.05MB mem-reservation=0B thread-reservation=0 -| | tuple-ids=1 row-size=21B cardinality=1500000 +| | tuple-ids=1 row-size=21B cardinality=1.50M | | in pipelines: 01(GETNEXT) | | | F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2 @@ -244,27 +244,27 @@ Per-Host Resources: mem-estimate=99.65MB mem-reservation=66.00MB thread-reservat | stored statistics: | table: rows=1500000 size=54.07MB | columns: all -| extrapolated-rows=disabled max-scan-range-rows=1177135 +| extrapolated-rows=disabled max-scan-range-rows=1177136 | mem-estimate=40.00MB mem-reservation=8.00MB thread-reservation=1 -| tuple-ids=1 row-size=21B cardinality=1500000 +| tuple-ids=1 row-size=21B cardinality=1.50M | in pipelines: 01(GETNEXT) | 04:EXCHANGE [HASH(l_orderkey)] | mem-estimate=10.04MB mem-reservation=0B thread-reservation=0 -| tuple-ids=0 row-size=8B cardinality=6001215 +| tuple-ids=0 row-size=8B cardinality=6.00M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 Per-Host Resources: mem-estimate=81.00MB mem-reservation=5.00MB thread-reservation=2 runtime-filters-memory=1.00MB 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM] - partitions=1/1 files=3 size=193.72MB + partitions=1/1 files=3 size=193.60MB runtime filters: RF000[bloom] -> l_orderkey stored statistics: - table: rows=6001215 size=193.72MB + table: rows=6001215 size=193.60MB columns: all - extrapolated-rows=disabled max-scan-range-rows=2141609 + extrapolated-rows=disabled max-scan-range-rows=2141702 mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=1 - tuple-ids=0 row-size=8B cardinality=6001215 + tuple-ids=0 row-size=8B cardinality=6.00M in pipelines: 00(GETNEXT) ==== # High NDV aggregation. @@ -283,7 +283,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=10.69MB mem-reservation=0B thread-reservation=0 -| tuple-ids=1 row-size=231B cardinality=6001215 +| tuple-ids=1 row-size=231B cardinality=6.00M | in pipelines: 03(GETNEXT) | F01:PLAN FRAGMENT [HASH(tpch_parquet.lineitem.l_orderkey,tpch_parquet.lineitem.l_partkey,tpch_parquet.lineitem.l_suppkey,tpch_parquet.lineitem.l_linenumber,tpch_parquet.lineitem.l_quantity,tpch_parquet.lineitem.l_extendedprice,tpch_parquet.lineitem.l_discount,tpch_parquet.lineitem.l_tax,tpch_parquet.lineitem.l_returnflag,tpch_parquet.lineitem.l_linestatus,tpch_parquet.lineitem.l_shipdate,tpch_parquet.lineitem.l_commitdate,tpch_parquet.lineitem.l_receiptdate,tpch_parquet.lineitem.l_shipinstruct,tpch_parquet.lineitem.l_shipmode,tpch_parquet.lineitem.l_comment)] hosts=3 instances=3 @@ -291,12 +291,12 @@ Per-Host Resources: mem-estimate=737.12MB mem-reservation=46.00MB thread-reserva 03:AGGREGATE [FINALIZE] | group by: tpch_parquet.lineitem.l_orderkey, tpch_parquet.lineitem.l_partkey, tpch_parquet.lineitem.l_suppkey, tpch_parquet.lineitem.l_linenumber, tpch_parquet.lineitem.l_quantity, tpch_parquet.lineitem.l_extendedprice, tpch_parquet.lineitem.l_discount, tpch_parquet.lineitem.l_tax, tpch_parquet.lineitem.l_returnflag, tpch_parquet.lineitem.l_linestatus, tpch_parquet.lineitem.l_shipdate, tpch_parquet.lineitem.l_commitdate, tpch_parquet.lineitem.l_receiptdate, tpch_parquet.lineitem.l_shipinstruct, tpch_parquet.lineitem.l_shipmode, tpch_parquet.lineitem.l_comment | mem-estimate=726.43MB mem-reservation=46.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=1 row-size=231B cardinality=6001215 +| tuple-ids=1 row-size=231B cardinality=6.00M | in pipelines: 03(GETNEXT), 00(OPEN) | 02:EXCHANGE [HASH(tpch_parquet.lineitem.l_orderkey,tpch_parquet.lineitem.l_partkey,tpch_parquet.lineitem.l_suppkey,tpch_parquet.lineitem.l_linenumber,tpch_parquet.lineitem.l_quantity,tpch_parquet.lineitem.l_extendedprice,tpch_parquet.lineitem.l_discount,tpch_parquet.lineitem.l_tax,tpch_parquet.lineitem.l_returnflag,tpch_parquet.lineitem.l_linestatus,tpch_parquet.lineitem.l_shipdate,tpch_parquet.lineitem.l_commitdate,tpch_parquet.lineitem.l_receiptdate,tpch_parquet.lineitem.l_shipinstruct,tpch_parquet.lineitem.l_shipmode,tpch_parquet.lineitem.l_comment)] | mem-estimate=10.69MB mem-reservation=0B thread-reservation=0 -| tuple-ids=1 row-size=231B cardinality=6001215 +| tuple-ids=1 row-size=231B cardinality=6.00M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 @@ -304,17 +304,17 @@ Per-Host Resources: mem-estimate=806.43MB mem-reservation=74.00MB thread-reserva 01:AGGREGATE [STREAMING] | group by: tpch_parquet.lineitem.l_orderkey, tpch_parquet.lineitem.l_partkey, tpch_parquet.lineitem.l_suppkey, tpch_parquet.lineitem.l_linenumber, tpch_parquet.lineitem.l_quantity, tpch_parquet.lineitem.l_extendedprice, tpch_parquet.lineitem.l_discount, tpch_parquet.lineitem.l_tax, tpch_parquet.lineitem.l_returnflag, tpch_parquet.lineitem.l_linestatus, tpch_parquet.lineitem.l_shipdate, tpch_parquet.lineitem.l_commitdate, tpch_parquet.lineitem.l_receiptdate, tpch_parquet.lineitem.l_shipinstruct, tpch_parquet.lineitem.l_shipmode, tpch_parquet.lineitem.l_comment | mem-estimate=726.43MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=1 row-size=231B cardinality=6001215 +| tuple-ids=1 row-size=231B cardinality=6.00M | in pipelines: 00(GETNEXT) | 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM] - partitions=1/1 files=3 size=193.72MB + partitions=1/1 files=3 size=193.60MB stored statistics: - table: rows=6001215 size=193.72MB + table: rows=6001215 size=193.60MB columns: all - extrapolated-rows=disabled max-scan-range-rows=2141609 + extrapolated-rows=disabled max-scan-range-rows=2141702 mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1 - tuple-ids=0 row-size=231B cardinality=6001215 + tuple-ids=0 row-size=231B cardinality=6.00M in pipelines: 00(GETNEXT) ==== # High NDV aggregation with string aggregation function. @@ -335,7 +335,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=10.09MB mem-reservation=0B thread-reservation=0 -| tuple-ids=1 row-size=28B cardinality=6001215 +| tuple-ids=1 row-size=28B cardinality=6.00M | in pipelines: 03(GETNEXT) | F01:PLAN FRAGMENT [HASH(l_orderkey,l_partkey)] hosts=3 instances=3 @@ -344,12 +344,12 @@ Per-Host Resources: mem-estimate=98.23MB mem-reservation=48.00MB thread-reservat | output: group_concat:merge(l_linestatus, ',') | group by: l_orderkey, l_partkey | mem-estimate=88.14MB mem-reservation=48.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=1 row-size=28B cardinality=6001215 +| tuple-ids=1 row-size=28B cardinality=6.00M | in pipelines: 03(GETNEXT), 00(OPEN) | 02:EXCHANGE [HASH(l_orderkey,l_partkey)] | mem-estimate=10.09MB mem-reservation=0B thread-reservation=0 -| tuple-ids=1 row-size=28B cardinality=6001215 +| tuple-ids=1 row-size=28B cardinality=6.00M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 @@ -358,17 +358,17 @@ Per-Host Resources: mem-estimate=168.14MB mem-reservation=50.00MB thread-reserva | output: group_concat(l_linestatus, ',') | group by: l_orderkey, l_partkey | mem-estimate=88.14MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=1 row-size=28B cardinality=6001215 +| tuple-ids=1 row-size=28B cardinality=6.00M | in pipelines: 00(GETNEXT) | 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM] - partitions=1/1 files=3 size=193.72MB + partitions=1/1 files=3 size=193.60MB stored statistics: - table: rows=6001215 size=193.72MB + table: rows=6001215 size=193.60MB columns: all - extrapolated-rows=disabled max-scan-range-rows=2141609 + extrapolated-rows=disabled max-scan-range-rows=2141702 mem-estimate=80.00MB mem-reservation=16.00MB thread-reservation=1 - tuple-ids=0 row-size=29B cardinality=6001215 + tuple-ids=0 row-size=29B cardinality=6.00M in pipelines: 00(GETNEXT) ==== # Sort + Analytic. @@ -389,7 +389,7 @@ PLAN-ROOT SINK | 04:EXCHANGE [UNPARTITIONED] | mem-estimate=56.26KB mem-reservation=0B thread-reservation=0 -| tuple-ids=3,2 row-size=6B cardinality=7300 +| tuple-ids=3,2 row-size=6B cardinality=7.30K | in pipelines: 01(GETNEXT) | F01:PLAN FRAGMENT [HASH(int_col)] hosts=3 instances=3 @@ -398,18 +398,18 @@ Per-Host Resources: mem-estimate=40.04MB mem-reservation=40.00MB thread-reservat | functions: max(tinyint_col) | partition by: int_col | mem-estimate=16.00MB mem-reservation=16.00MB spill-buffer=8.00MB thread-reservation=0 -| tuple-ids=3,2 row-size=6B cardinality=7300 +| tuple-ids=3,2 row-size=6B cardinality=7.30K | in pipelines: 01(GETNEXT) | 01:SORT | order by: int_col ASC NULLS FIRST | mem-estimate=24.00MB mem-reservation=24.00MB spill-buffer=8.00MB thread-reservation=0 -| tuple-ids=3 row-size=5B cardinality=7300 +| tuple-ids=3 row-size=5B cardinality=7.30K | in pipelines: 01(GETNEXT), 00(OPEN) | 03:EXCHANGE [HASH(int_col)] | mem-estimate=38.88KB mem-reservation=0B thread-reservation=0 -| tuple-ids=0 row-size=5B cardinality=7300 +| tuple-ids=0 row-size=5B cardinality=7.30K | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3 @@ -422,6 +422,6 @@ Per-Host Resources: mem-estimate=16.00MB mem-reservation=32.00KB thread-reservat columns: all extrapolated-rows=disabled max-scan-range-rows=310 mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=1 - tuple-ids=0 row-size=5B cardinality=7300 + tuple-ids=0 row-size=5B cardinality=7.30K in pipelines: 00(GETNEXT) ==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test b/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test index 689e78a..e6f0d7d 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test @@ -9,13 +9,16 @@ PLAN-ROOT SINK 02:HASH JOIN [INNER JOIN, BROADCAST] | hash predicates: n1.n_regionkey = n2.n_regionkey | runtime filters: RF000 <- n2.n_regionkey +| row-size=219B cardinality=125 | |--03:EXCHANGE [BROADCAST] | | | 01:SCAN HDFS [tpch.nation n2] | partitions=1/1 files=1 size=2.15KB +| row-size=109B cardinality=25 | 00:SCAN HDFS [tpch.nation n1] partitions=1/1 files=1 size=2.15KB runtime filters: RF000 -> n1.n_regionkey + row-size=109B cardinality=25 ==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/min-max-runtime-filters.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/min-max-runtime-filters.test b/testdata/workloads/functional-planner/queries/PlannerTest/min-max-runtime-filters.test index 0ddccdc..0a63ef6 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/min-max-runtime-filters.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/min-max-runtime-filters.test @@ -18,7 +18,7 @@ PLAN-ROOT SINK | fk/pk conjuncts: none | runtime filters: RF002[min_max] <- b.string_col, RF003[min_max] <- b.tinyint_col + 1 | mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0 -| tuple-ids=0,1 row-size=39B cardinality=5840 +| tuple-ids=0,1 row-size=39B cardinality=5.84K | in pipelines: 00(GETNEXT), 01(OPEN) | |--01:SCAN KUDU [functional_kudu.alltypestiny b] @@ -29,7 +29,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.alltypes a] runtime filters: RF002[min_max] -> a.string_col, RF003[min_max] -> a.int_col mem-estimate=1.50MB mem-reservation=0B thread-reservation=1 - tuple-ids=0 row-size=21B cardinality=7300 + tuple-ids=0 row-size=21B cardinality=7.30K in pipelines: 00(GETNEXT) ==== # Filters are not created if the target isn't a bare Kudu column or if 'is (not) distinct' @@ -55,7 +55,7 @@ PLAN-ROOT SINK | fk/pk conjuncts: assumed fk/pk | other predicates: a.string_col IS DISTINCT FROM b.string_col | mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0 -| tuple-ids=0,1 row-size=44B cardinality=7300 +| tuple-ids=0,1 row-size=44B cardinality=7.30K | in pipelines: 00(GETNEXT), 01(OPEN) | |--01:SCAN KUDU [functional_kudu.alltypestiny b] @@ -65,7 +65,7 @@ PLAN-ROOT SINK | 00:SCAN KUDU [functional_kudu.alltypes a] mem-estimate=2.25MB mem-reservation=0B thread-reservation=1 - tuple-ids=0 row-size=22B cardinality=7300 + tuple-ids=0 row-size=22B cardinality=7.30K in pipelines: 00(GETNEXT) ==== # Filters are only assigned when the target expr is cast if its an implicit integer cast. @@ -91,7 +91,7 @@ PLAN-ROOT SINK | fk/pk conjuncts: a.string_col = b.timestamp_col, a.tinyint_col = b.bigint_col | runtime filters: RF007[min_max] <- b.bigint_col | mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0 -| tuple-ids=0,1 row-size=60B cardinality=1460 +| tuple-ids=0,1 row-size=60B cardinality=1.46K | in pipelines: 00(GETNEXT), 01(OPEN) | |--01:SCAN KUDU [functional_kudu.alltypestiny b] @@ -102,7 +102,7 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.alltypes a] runtime filters: RF007[min_max] -> a.tinyint_col mem-estimate=3.00MB mem-reservation=0B thread-reservation=1 - tuple-ids=0 row-size=26B cardinality=7300 + tuple-ids=0 row-size=26B cardinality=7.30K in pipelines: 00(GETNEXT) ==== # Query with both Kudu and HDFS filter targets. @@ -126,12 +126,12 @@ PLAN-ROOT SINK | fk/pk conjuncts: none | runtime filters: RF000[bloom] <- c.int_col, RF001[min_max] <- c.int_col | mem-estimate=1.94MB mem-reservation=1.94MB spill-buffer=64.00KB thread-reservation=0 -| tuple-ids=0,1,2 row-size=12B cardinality=5329000 +| tuple-ids=0,1,2 row-size=12B cardinality=5.33M | in pipelines: 00(GETNEXT), 02(OPEN) | |--02:SCAN KUDU [functional_kudu.alltypes c] | mem-estimate=768.00KB mem-reservation=0B thread-reservation=1 -| tuple-ids=2 row-size=4B cardinality=7300 +| tuple-ids=2 row-size=4B cardinality=7.30K | in pipelines: 02(GETNEXT) | 03:HASH JOIN [INNER JOIN] @@ -139,11 +139,11 @@ PLAN-ROOT SINK | fk/pk conjuncts: assumed fk/pk | runtime filters: RF003[min_max] <- b.int_col | mem-estimate=2.00GB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0 -| tuple-ids=0,1 row-size=8B cardinality=7300 +| tuple-ids=0,1 row-size=8B cardinality=7.30K | in pipelines: 00(GETNEXT), 01(OPEN) | |--01:SCAN HDFS [functional_parquet.alltypes b] -| partitions=24/24 files=24 size=199.69KB +| partitions=24/24 files=24 size=189.28KB | runtime filters: RF000[bloom] -> b.int_col | stored statistics: | table: rows=unavailable size=unavailable @@ -157,6 +157,6 @@ PLAN-ROOT SINK 00:SCAN KUDU [functional_kudu.alltypes a] runtime filters: RF001[min_max] -> a.int_col, RF003[min_max] -> a.int_col mem-estimate=768.00KB mem-reservation=0B thread-reservation=1 - tuple-ids=0 row-size=4B cardinality=7300 + tuple-ids=0 row-size=4B cardinality=7.30K in pipelines: 00(GETNEXT) ==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/mt-dop-validation.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/mt-dop-validation.test b/testdata/workloads/functional-planner/queries/PlannerTest/mt-dop-validation.test index a1571b5..5d340f3 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/mt-dop-validation.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/mt-dop-validation.test @@ -58,7 +58,7 @@ PLAN-ROOT SINK | in pipelines: 01(GETNEXT), 00(OPEN) | 00:SCAN HDFS [functional_parquet.alltypes] - partitions=24/24 files=24 size=188.92KB + partitions=24/24 files=24 size=189.28KB predicates: id < CAST(10 AS INT) stored statistics: table: rows=unavailable size=unavailable @@ -113,7 +113,7 @@ Per-Host Resources: mem-estimate=432.00MB mem-reservation=102.07MB thread-reserv | in pipelines: 00(GETNEXT) | 00:SCAN HDFS [functional_parquet.alltypes, RANDOM] - partitions=24/24 files=24 size=188.92KB + partitions=24/24 files=24 size=189.28KB predicates: id < CAST(10 AS INT) stored statistics: table: rows=unavailable size=unavailable @@ -152,7 +152,7 @@ PLAN-ROOT SINK | in pipelines: 01(GETNEXT), 00(OPEN) | 00:SCAN HDFS [functional_parquet.alltypes] - partitions=24/24 files=24 size=188.92KB + partitions=24/24 files=24 size=189.28KB predicates: id < CAST(10 AS INT) stored statistics: table: rows=unavailable size=unavailable @@ -200,7 +200,7 @@ Per-Host Resources: mem-estimate=30.32MB mem-reservation=30.00MB thread-reservat F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=9 Per-Host Resources: mem-estimate=48.00MB mem-reservation=48.00KB thread-reservation=3 00:SCAN HDFS [functional_parquet.alltypes, RANDOM] - partitions=24/24 files=24 size=188.92KB + partitions=24/24 files=24 size=189.28KB predicates: id < CAST(10 AS INT) stored statistics: table: rows=unavailable size=unavailable @@ -225,7 +225,7 @@ PLAN-ROOT SINK | 01:SUBPLAN | mem-estimate=0B mem-reservation=0B thread-reservation=0 -| tuple-ids=2,1,0 row-size=482B cardinality=1500000 +| tuple-ids=2,1,0 row-size=482B cardinality=1.50M | in pipelines: 00(GETNEXT) | |--08:NESTED LOOP JOIN [CROSS JOIN] @@ -268,14 +268,14 @@ PLAN-ROOT SINK | in pipelines: 00(GETNEXT) | 00:SCAN HDFS [tpch_nested_parquet.customer c] - partitions=1/1 files=4 size=288.98MB + partitions=1/1 files=4 size=288.99MB predicates: c_custkey < CAST(10 AS BIGINT), !empty(c.c_orders) predicates on o: !empty(o.o_lineitems), o_orderkey < CAST(5 AS BIGINT) predicates on o_lineitems: l_linenumber < CAST(3 AS INT) stored statistics: table: rows=150000 size=288.99MB columns missing stats: c_orders - extrapolated-rows=disabled max-scan-range-rows=44227 + extrapolated-rows=disabled max-scan-range-rows=44225 parquet statistics predicates: c_custkey < CAST(10 AS BIGINT) parquet statistics predicates on o: o_orderkey < CAST(5 AS BIGINT) parquet statistics predicates on o_lineitems: l_linenumber < CAST(3 AS INT) @@ -283,7 +283,7 @@ PLAN-ROOT SINK parquet dictionary predicates on o: o_orderkey < CAST(5 AS BIGINT) parquet dictionary predicates on o_lineitems: l_linenumber < CAST(3 AS INT) mem-estimate=88.00MB mem-reservation=88.00MB thread-reservation=0 - tuple-ids=0 row-size=230B cardinality=15000 + tuple-ids=0 row-size=230B cardinality=15.00K in pipelines: 00(GETNEXT) ---- PARALLELPLANS F01:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 @@ -293,14 +293,14 @@ PLAN-ROOT SINK | 09:EXCHANGE [UNPARTITIONED] | mem-estimate=14.34MB mem-reservation=0B thread-reservation=0 -| tuple-ids=2,1,0 row-size=482B cardinality=1500000 +| tuple-ids=2,1,0 row-size=482B cardinality=1.50M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=9 Per-Host Resources: mem-estimate=264.00MB mem-reservation=264.00MB thread-reservation=3 01:SUBPLAN | mem-estimate=0B mem-reservation=0B thread-reservation=0 -| tuple-ids=2,1,0 row-size=482B cardinality=1500000 +| tuple-ids=2,1,0 row-size=482B cardinality=1.50M | in pipelines: 00(GETNEXT) | |--08:NESTED LOOP JOIN [CROSS JOIN] @@ -343,14 +343,14 @@ Per-Host Resources: mem-estimate=264.00MB mem-reservation=264.00MB thread-reserv | in pipelines: 00(GETNEXT) | 00:SCAN HDFS [tpch_nested_parquet.customer c, RANDOM] - partitions=1/1 files=4 size=288.98MB + partitions=1/1 files=4 size=288.99MB predicates: c_custkey < CAST(10 AS BIGINT), !empty(c.c_orders) predicates on o: !empty(o.o_lineitems), o_orderkey < CAST(5 AS BIGINT) predicates on o_lineitems: l_linenumber < CAST(3 AS INT) stored statistics: table: rows=150000 size=288.99MB columns missing stats: c_orders - extrapolated-rows=disabled max-scan-range-rows=44229 + extrapolated-rows=disabled max-scan-range-rows=44225 parquet statistics predicates: c_custkey < CAST(10 AS BIGINT) parquet statistics predicates on o: o_orderkey < CAST(5 AS BIGINT) parquet statistics predicates on o_lineitems: l_linenumber < CAST(3 AS INT) @@ -358,7 +358,7 @@ Per-Host Resources: mem-estimate=264.00MB mem-reservation=264.00MB thread-reserv parquet dictionary predicates on o: o_orderkey < CAST(5 AS BIGINT) parquet dictionary predicates on o_lineitems: l_linenumber < CAST(3 AS INT) mem-estimate=88.00MB mem-reservation=88.00MB thread-reservation=0 - tuple-ids=0 row-size=230B cardinality=15000 + tuple-ids=0 row-size=230B cardinality=15.00K in pipelines: 00(GETNEXT) ==== # Hash-join in a subplan should work. @@ -373,7 +373,7 @@ PLAN-ROOT SINK | 01:SUBPLAN | mem-estimate=0B mem-reservation=0B thread-reservation=0 -| tuple-ids=1,0,2 row-size=258B cardinality=1500000 +| tuple-ids=1,0,2 row-size=258B cardinality=1.50M | in pipelines: 00(GETNEXT) | |--06:HASH JOIN [INNER JOIN] @@ -413,11 +413,11 @@ PLAN-ROOT SINK stored statistics: table: rows=150000 size=288.99MB columns missing stats: c_orders, c_orders - extrapolated-rows=disabled max-scan-range-rows=44229 + extrapolated-rows=disabled max-scan-range-rows=44225 parquet statistics predicates on o1: o1.o_orderkey < CAST(5 AS BIGINT) parquet dictionary predicates on o1: o1.o_orderkey < CAST(5 AS BIGINT) mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=0 - tuple-ids=0 row-size=242B cardinality=150000 + tuple-ids=0 row-size=242B cardinality=150.00K in pipelines: 00(GETNEXT) ---- PARALLELPLANS F01:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1 @@ -427,14 +427,14 @@ PLAN-ROOT SINK | 07:EXCHANGE [UNPARTITIONED] | mem-estimate=12.37MB mem-reservation=0B thread-reservation=0 -| tuple-ids=1,0,2 row-size=258B cardinality=1500000 +| tuple-ids=1,0,2 row-size=258B cardinality=1.50M | in pipelines: 00(GETNEXT) | F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=9 Per-Host Resources: mem-estimate=269.81MB mem-reservation=53.81MB thread-reservation=3 01:SUBPLAN | mem-estimate=0B mem-reservation=0B thread-reservation=0 -| tuple-ids=1,0,2 row-size=258B cardinality=1500000 +| tuple-ids=1,0,2 row-size=258B cardinality=1.50M | in pipelines: 00(GETNEXT) | |--06:HASH JOIN [INNER JOIN] @@ -474,10 +474,10 @@ Per-Host Resources: mem-estimate=269.81MB mem-reservation=53.81MB thread-reserva stored statistics: table: rows=150000 size=288.99MB columns missing stats: c_orders, c_orders - extrapolated-rows=disabled max-scan-range-rows=44229 + extrapolated-rows=disabled max-scan-range-rows=44225 parquet statistics predicates on o1: o1.o_orderkey < CAST(5 AS BIGINT) parquet dictionary predicates on o1: o1.o_orderkey < CAST(5 AS BIGINT) mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=0 - tuple-ids=0 row-size=242B cardinality=150000 + tuple-ids=0 row-size=242B cardinality=150.00K in pipelines: 00(GETNEXT) ==== http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/multiple-distinct-limit.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/multiple-distinct-limit.test b/testdata/workloads/functional-planner/queries/PlannerTest/multiple-distinct-limit.test index d3c5553..bb9ee16 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/multiple-distinct-limit.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/multiple-distinct-limit.test @@ -9,6 +9,7 @@ PLAN-ROOT SINK 03:AGGREGATE [FINALIZE] | output: aggif(valid_tid() = 2, count(tinyint_col)), aggif(valid_tid() = 4, count(smallint_col)), aggif(valid_tid() = 5, min(timestamp_col)), aggif(valid_tid() = 5, max(timestamp_col)) | limit: 10 +| row-size=48B cardinality=1 | 02:AGGREGATE [FINALIZE] | Class 0 @@ -17,6 +18,7 @@ PLAN-ROOT SINK | output: count(smallint_col) | Class 2 | output: min:merge(timestamp_col), max:merge(timestamp_col) +| row-size=48B cardinality=3 | 01:AGGREGATE | Class 0 @@ -25,15 +27,18 @@ PLAN-ROOT SINK | group by: smallint_col | Class 2 | output: min(timestamp_col), max(timestamp_col) +| row-size=35B cardinality=31 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=19B cardinality=7.30K ---- DISTRIBUTEDPLAN PLAN-ROOT SINK | 03:AGGREGATE [FINALIZE] | output: aggif(valid_tid() = 2, count(tinyint_col)), aggif(valid_tid() = 4, count(smallint_col)), aggif(valid_tid() = 5, min(timestamp_col)), aggif(valid_tid() = 5, max(timestamp_col)) | limit: 10 +| row-size=48B cardinality=1 | 07:AGGREGATE [FINALIZE] | Class 0 @@ -42,6 +47,7 @@ PLAN-ROOT SINK | output: count:merge(smallint_col) | Class 2 | output: min:merge(timestamp_col), max:merge(timestamp_col) +| row-size=48B cardinality=3 | 06:EXCHANGE [UNPARTITIONED] | @@ -52,6 +58,7 @@ PLAN-ROOT SINK | output: count(smallint_col) | Class 2 | output: min:merge(timestamp_col), max:merge(timestamp_col) +| row-size=48B cardinality=3 | 05:AGGREGATE | Class 0 @@ -60,6 +67,7 @@ PLAN-ROOT SINK | group by: smallint_col | Class 2 | output: min:merge(timestamp_col), max:merge(timestamp_col) +| row-size=35B cardinality=31 | 04:EXCHANGE [HASH(CASE valid_tid() WHEN 1 THEN murmur_hash(tinyint_col) WHEN 3 THEN murmur_hash(smallint_col) WHEN 5 THEN 0 END)] | @@ -70,9 +78,11 @@ PLAN-ROOT SINK | group by: smallint_col | Class 2 | output: min(timestamp_col), max(timestamp_col) +| row-size=35B cardinality=31 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=19B cardinality=7.30K ==== # Test correct placement of limit. Simplifies to a single class with one distinct agg. select b from ( @@ -86,23 +96,28 @@ PLAN-ROOT SINK 01:AGGREGATE [FINALIZE] | output: min(timestamp_col) | limit: 10 +| row-size=16B cardinality=1 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=16B cardinality=7.30K ---- DISTRIBUTEDPLAN PLAN-ROOT SINK | 04:AGGREGATE [FINALIZE] | output: min:merge(timestamp_col) | limit: 10 +| row-size=16B cardinality=1 | 03:EXCHANGE [UNPARTITIONED] | 01:AGGREGATE | output: min(timestamp_col) +| row-size=16B cardinality=1 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=16B cardinality=7.30K ==== # Test correct placement of limit. Simplifies to a single class with a non-distinct agg. select d from ( @@ -116,23 +131,28 @@ PLAN-ROOT SINK 01:AGGREGATE [FINALIZE] | output: max(timestamp_col) | limit: 10 +| row-size=16B cardinality=1 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=16B cardinality=7.30K ---- DISTRIBUTEDPLAN PLAN-ROOT SINK | 04:AGGREGATE [FINALIZE] | output: max:merge(timestamp_col) | limit: 10 +| row-size=16B cardinality=1 | 03:EXCHANGE [UNPARTITIONED] | 01:AGGREGATE | output: max(timestamp_col) +| row-size=16B cardinality=1 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=16B cardinality=7.30K ==== # Test correct placement of limit. Simplifies to a single class with distinct # and non-distinct aggss. @@ -147,35 +167,43 @@ PLAN-ROOT SINK 02:AGGREGATE [FINALIZE] | output: count(smallint_col), max:merge(timestamp_col) | limit: 10 +| row-size=24B cardinality=1 | 01:AGGREGATE | output: max(timestamp_col) | group by: smallint_col +| row-size=18B cardinality=10 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=18B cardinality=7.30K ---- DISTRIBUTEDPLAN PLAN-ROOT SINK | 07:AGGREGATE [FINALIZE] | output: count:merge(smallint_col), max:merge(timestamp_col) | limit: 10 +| row-size=24B cardinality=1 | 06:EXCHANGE [UNPARTITIONED] | 02:AGGREGATE | output: count(smallint_col), max:merge(timestamp_col) +| row-size=24B cardinality=1 | 05:AGGREGATE | output: max:merge(timestamp_col) | group by: smallint_col +| row-size=18B cardinality=10 | 04:EXCHANGE [HASH(smallint_col)] | 01:AGGREGATE [STREAMING] | output: max(timestamp_col) | group by: smallint_col +| row-size=18B cardinality=10 | 00:SCAN HDFS [functional.alltypes] partitions=24/24 files=24 size=478.45KB + row-size=18B cardinality=7.30K ====