From 6b249e579007aa60eadab305149b571eb416a030 Mon Sep 17 00:00:00 2001 From: jinshang Date: Tue, 30 Aug 2022 19:26:52 +0800 Subject: [PATCH 1/4] ARROW-17567:[C++] Fix compute compilation with gcc7 and c++17 --- cpp/src/arrow/compute/kernels/aggregate_internal.h | 2 +- cpp/src/arrow/compute/kernels/scalar_set_lookup.cc | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cpp/src/arrow/compute/kernels/aggregate_internal.h b/cpp/src/arrow/compute/kernels/aggregate_internal.h index 8db74bfe0cd..be87586942d 100644 --- a/cpp/src/arrow/compute/kernels/aggregate_internal.h +++ b/cpp/src/arrow/compute/kernels/aggregate_internal.h @@ -164,7 +164,7 @@ enable_if_t::value, SumType> SumArray( // reduce summation of one block (may be smaller than kBlockSize) from leaf node // continue reducing to upper level if two summations are ready for non-leaf node - auto reduce = [&](SumType block_sum) { + auto reduce = [&, levels](SumType block_sum) { int cur_level = 0; uint64_t cur_level_mask = 1ULL; sum[cur_level] += block_sum; diff --git a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc index 7a0834058f0..8ddaf09e929 100644 --- a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc +++ b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc @@ -67,8 +67,10 @@ struct SetLookupState : public KernelState { auto visit_valid = [&](T v) { const auto memo_size = static_cast(memo_index_to_value_index.size()); int32_t unused_memo_index; - auto on_found = [&](int32_t memo_index) { DCHECK_LT(memo_index, memo_size); }; - auto on_not_found = [&](int32_t memo_index) { + auto on_found = [&, memo_size](int32_t memo_index) { + DCHECK_LT(memo_index, memo_size); + }; + auto on_not_found = [&, memo_size](int32_t memo_index) { DCHECK_EQ(memo_index, memo_size); memo_index_to_value_index.push_back(index); }; @@ -79,8 +81,10 @@ struct SetLookupState : public KernelState { }; auto visit_null = [&]() { const auto memo_size = static_cast(memo_index_to_value_index.size()); - auto on_found = [&](int32_t memo_index) { DCHECK_LT(memo_index, memo_size); }; - auto on_not_found = [&](int32_t memo_index) { + auto on_found = [&, memo_size](int32_t memo_index) { + DCHECK_LT(memo_index, memo_size); + }; + auto on_not_found = [&, memo_size](int32_t memo_index) { DCHECK_EQ(memo_index, memo_size); memo_index_to_value_index.push_back(index); }; From 7a624cafe7c0093176036f4bf31348dcfb1ec899 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 30 Aug 2022 14:06:06 +0200 Subject: [PATCH 2/4] Update cpp/src/arrow/compute/kernels/aggregate_internal.h --- cpp/src/arrow/compute/kernels/aggregate_internal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/src/arrow/compute/kernels/aggregate_internal.h b/cpp/src/arrow/compute/kernels/aggregate_internal.h index be87586942d..8fd67485d7f 100644 --- a/cpp/src/arrow/compute/kernels/aggregate_internal.h +++ b/cpp/src/arrow/compute/kernels/aggregate_internal.h @@ -164,6 +164,7 @@ enable_if_t::value, SumType> SumArray( // reduce summation of one block (may be smaller than kBlockSize) from leaf node // continue reducing to upper level if two summations are ready for non-leaf node + // (capture `levels` by value because of ARROW-17567) auto reduce = [&, levels](SumType block_sum) { int cur_level = 0; uint64_t cur_level_mask = 1ULL; From 92184b6177cd6c71a34824ab82459482ce4ca49b Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 30 Aug 2022 14:06:11 +0200 Subject: [PATCH 3/4] Update cpp/src/arrow/compute/kernels/scalar_set_lookup.cc --- cpp/src/arrow/compute/kernels/scalar_set_lookup.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc index 8ddaf09e929..3f268017dec 100644 --- a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc +++ b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc @@ -67,6 +67,7 @@ struct SetLookupState : public KernelState { auto visit_valid = [&](T v) { const auto memo_size = static_cast(memo_index_to_value_index.size()); int32_t unused_memo_index; + // (capture `memo_index` by value because of ARROW-17567 auto on_found = [&, memo_size](int32_t memo_index) { DCHECK_LT(memo_index, memo_size); }; From 471ffae623affc14d27e81069851b049d544f334 Mon Sep 17 00:00:00 2001 From: Jin Shang Date: Tue, 30 Aug 2022 22:21:45 +0800 Subject: [PATCH 4/4] Update cpp/src/arrow/compute/kernels/scalar_set_lookup.cc Co-authored-by: Antoine Pitrou --- cpp/src/arrow/compute/kernels/scalar_set_lookup.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc index 3f268017dec..292a924233b 100644 --- a/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc +++ b/cpp/src/arrow/compute/kernels/scalar_set_lookup.cc @@ -67,7 +67,7 @@ struct SetLookupState : public KernelState { auto visit_valid = [&](T v) { const auto memo_size = static_cast(memo_index_to_value_index.size()); int32_t unused_memo_index; - // (capture `memo_index` by value because of ARROW-17567 + // (capture `memo_size` by value because of ARROW-17567) auto on_found = [&, memo_size](int32_t memo_index) { DCHECK_LT(memo_index, memo_size); };