Skip to content

Commit 825ab6b

Browse files
author
Rafał Hibner
committed
optional fix
1 parent 8aa9084 commit 825ab6b

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

cpp/src/arrow/stl.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,14 @@ struct ConversionTraits<std::string> : public CTypeTraits<std::string> {
127127
template <typename ValueCType, typename ListBuilderType, typename Range>
128128
Status AppendCellRange(ListBuilderType& builder, Range&& cell_range) {
129129
constexpr bool is_list_builder = std::is_same<ListBuilderType, ListBuilder>::value;
130+
constexpr bool is_fixed_size_list_builder =
131+
std::is_same<ListBuilderType, FixedSizeListBuilder>::value;
130132
constexpr bool is_large_list_builder =
131133
std::is_same<ListBuilderType, LargeListBuilder>::value;
132-
static_assert(
133-
is_list_builder || is_large_list_builder,
134-
"Builder type must be either ListBuilder or LargeListBuilder for appending "
135-
"multiple rows.");
134+
static_assert(is_list_builder || is_large_list_builder || is_fixed_size_list_builder,
135+
"Builder type must be either ListBuilder, LargeListBuilder or "
136+
"FixedSizeListBuilder for appending "
137+
"multiple rows.");
136138

137139
using ChildBuilderType = CBuilderType<ValueCType>;
138140
ARROW_RETURN_NOT_OK(builder.Append());
@@ -171,11 +173,7 @@ struct ConversionTraits<std::array<ValueCType, N>>
171173
: public CTypeTraits<std::array<ValueCType, N>> {
172174
static arrow::Status AppendRow(FixedSizeListBuilder& builder,
173175
const std::array<ValueCType, N>& values) {
174-
auto vb =
175-
::arrow::internal::checked_cast<typename CTypeTraits<ValueCType>::BuilderType*>(
176-
builder.value_builder());
177-
ARROW_RETURN_NOT_OK(builder.Append());
178-
return vb->AppendValues(values.data(), N);
176+
return AppendCellRange<ValueCType>(builder, values);
179177
}
180178

181179
static std::array<ValueCType, N> GetEntry(const ::arrow::FixedSizeListArray& array,
@@ -201,6 +199,7 @@ struct ConversionTraits<Optional, enable_if_optional_like<Optional>>
201199
using OptionalInnerType =
202200
typename std::decay<decltype(*std::declval<Optional>())>::type;
203201
using typename CTypeTraits<OptionalInnerType>::ArrowType;
202+
using typename CTypeTraits<OptionalInnerType>::ArrayType;
204203
using CTypeTraits<OptionalInnerType>::type_singleton;
205204

206205
static Status AppendRow(typename TypeTraits<ArrowType>::BuilderType& builder,

0 commit comments

Comments
 (0)