@@ -127,12 +127,14 @@ struct ConversionTraits<std::string> : public CTypeTraits<std::string> {
127127template <typename ValueCType, typename ListBuilderType, typename Range>
128128Status 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