This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 741a95c ARROW-8862: [C++] NumericBuilder should use MemoryPool passed
to CTOR
741a95c is described below
commit 741a95cb9a9fff86e2b0c8e53a7e06d6b5c171bc
Author: Simon Watts <[email protected]>
AuthorDate: Wed May 20 06:58:53 2020 +0900
ARROW-8862: [C++] NumericBuilder should use MemoryPool passed to CTOR
`NumericBuilder` uses the `pool` (`MemoryPool*`) parameter to initialise
the `ArrayBuilder` base class, but does not use it to initialise its own
internal builder, `data_builder_` (`TypedBufferBuilder`). For comparison
`ArrayBuilder` uses the `pool` to initialise its own `null_bitmap_builder_`
member (also a `TypedBufferBuilder`).
This effect was observed when trying to switch to a custom `MemoryPool` for
performance reasons. A hook was used to detect any use of the `MemoryPool`
proved by `default_memory_pool()`.
Closes #7227 from sawatts/patch-1
Authored-by: Simon Watts <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
cpp/src/arrow/array/builder_primitive.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/cpp/src/arrow/array/builder_primitive.h
b/cpp/src/arrow/array/builder_primitive.h
index ae38c3b..d057f27 100644
--- a/cpp/src/arrow/array/builder_primitive.h
+++ b/cpp/src/arrow/array/builder_primitive.h
@@ -66,10 +66,10 @@ class NumericBuilder : public ArrayBuilder {
template <typename T1 = T>
explicit NumericBuilder(
enable_if_parameter_free<T1, MemoryPool*> pool = default_memory_pool())
- : ArrayBuilder(pool), type_(TypeTraits<T>::type_singleton()) {}
+ : ArrayBuilder(pool), type_(TypeTraits<T>::type_singleton()),
data_builder_(pool) {}
NumericBuilder(const std::shared_ptr<DataType>& type, MemoryPool* pool)
- : ArrayBuilder(pool), type_(type) {}
+ : ArrayBuilder(pool), type_(type), data_builder_(pool) {}
/// Append a single scalar and increase the size if necessary.
Status Append(const value_type val) {