Skip to content

Commit 96520a1

Browse files
committed
GH-48684: [C++] Update MakeListArray to use ListArray::FromArrays instead of constructor
1 parent 1b0a220 commit 96520a1

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

cpp/src/arrow/ipc/test_common.cc

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,19 @@ Status MakeListArray(const std::shared_ptr<Array>& child_array, int num_lists,
172172

173173
offsets[num_lists] = static_cast<offset_type>(child_array->length());
174174

175-
/// TODO(wesm): Implement support for nulls in ListArray::FromArrays
176-
std::shared_ptr<Buffer> null_bitmap, offsets_buffer;
175+
// Create offsets array
176+
using OffsetArrowType = typename TypeTraits<TypeClass>::OffsetType;
177+
std::shared_ptr<Array> offsets_array;
178+
ArrayFromVector<OffsetArrowType, offset_type>(offsets, &offsets_array);
179+
180+
// Create null bitmap
181+
std::shared_ptr<Buffer> null_bitmap;
177182
RETURN_NOT_OK(GetBitmapFromVector(valid_lists, &null_bitmap));
178-
RETURN_NOT_OK(CopyBufferFromVector(offsets, pool, &offsets_buffer));
179183

180-
*out = std::make_shared<ArrayType>(std::make_shared<TypeClass>(child_array->type()),
181-
num_lists, offsets_buffer, child_array, null_bitmap,
182-
kUnknownNullCount);
183-
return (**out).Validate();
184+
// Use FromArrays which supports nulls via null_bitmap parameter
185+
ARROW_ASSIGN_OR_RAISE(*out, ArrayType::FromArrays(*offsets_array, *child_array, pool,
186+
null_bitmap, kUnknownNullCount));
187+
return Status::OK();
184188
}
185189

186190
Status MakeRandomListViewArray(const std::shared_ptr<Array>& child_array, int num_lists,

0 commit comments

Comments
 (0)