Repository: incubator-impala Updated Branches: refs/heads/master 585ed5aaa -> 290db20db
IMPALA-4554: fix projection of nested collections with mt_dop > 0 Change-Id: I42e72eae8dfa78f7d53708eb8f2f0da8b780692d Reviewed-on: http://gerrit.cloudera.org:8080/5270 Tested-by: Internal Jenkins Reviewed-by: Tim Armstrong <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/290db20d Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/290db20d Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/290db20d Branch: refs/heads/master Commit: 290db20dbc364c102c40ea2022535b896bf1c45c Parents: 585ed5a Author: Tim Armstrong <[email protected]> Authored: Tue Nov 29 17:04:29 2016 -0800 Committer: Tim Armstrong <[email protected]> Committed: Wed Nov 30 17:18:36 2016 +0000 ---------------------------------------------------------------------- be/src/exec/hdfs-scan-node-mt.cc | 1 + be/src/exec/unnest-node.cc | 1 + .../queries/QueryTest/mt-dop-parquet.test | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/290db20d/be/src/exec/hdfs-scan-node-mt.cc ---------------------------------------------------------------------- diff --git a/be/src/exec/hdfs-scan-node-mt.cc b/be/src/exec/hdfs-scan-node-mt.cc index 8c61326..84e3eef 100644 --- a/be/src/exec/hdfs-scan-node-mt.cc +++ b/be/src/exec/hdfs-scan-node-mt.cc @@ -97,6 +97,7 @@ Status HdfsScanNodeMt::GetNext(RuntimeState* state, RowBatch* row_batch, bool* e num_owned_io_buffers_.Add(-row_batch->num_io_buffers()); return status; } + InitNullCollectionValues(row_batch); num_rows_returned_ += row_batch->num_rows(); if (ReachedLimit()) { http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/290db20d/be/src/exec/unnest-node.cc ---------------------------------------------------------------------- diff --git a/be/src/exec/unnest-node.cc b/be/src/exec/unnest-node.cc index f6b3747..bf467bd 100644 --- a/be/src/exec/unnest-node.cc +++ b/be/src/exec/unnest-node.cc @@ -135,6 +135,7 @@ Status UnnestNode::GetNext(RuntimeState* state, RowBatch* row_batch, bool* eos) // Populate the output row_batch with tuples from the collection. DCHECK(coll_value_ != NULL); + DCHECK_GE(coll_value_->num_tuples, 0); while (item_idx_ < coll_value_->num_tuples) { Tuple* item = reinterpret_cast<Tuple*>(coll_value_->ptr + item_idx_ * item_byte_size_); http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/290db20d/testdata/workloads/functional-query/queries/QueryTest/mt-dop-parquet.test ---------------------------------------------------------------------- diff --git a/testdata/workloads/functional-query/queries/QueryTest/mt-dop-parquet.test b/testdata/workloads/functional-query/queries/QueryTest/mt-dop-parquet.test index 39ec4b3..cbd14ef 100644 --- a/testdata/workloads/functional-query/queries/QueryTest/mt-dop-parquet.test +++ b/testdata/workloads/functional-query/queries/QueryTest/mt-dop-parquet.test @@ -5,3 +5,22 @@ select * from functional_parquet.bad_metadata_len ---- CATCH Invalid metadata size in file footer ==== +---- QUERY +# IMPALA-4554: Memory corruption of nested collection with MT_DOP > 0. +select id, cnt +from functional_parquet.complextypestbl t, + (select count(item) cnt from t.int_array) v +order by id +limit 10 +---- RESULTS +1,3 +2,3 +3,0 +4,0 +5,0 +6,0 +7,0 +8,1 +---- TYPES +bigint,bigint +====
