Skip to content

Commit d208f70

Browse files
author
Rafał Hibner
committed
Handle oprional in ConversionTraits::GetEntry
1 parent 7f645d4 commit d208f70

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

cpp/src/arrow/stl.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ struct ConversionTraits<Optional, enable_if_optional_like<Optional>>
222222
using OptionalInnerType =
223223
typename std::decay<decltype(*std::declval<Optional>())>::type;
224224
using typename CTypeTraits<OptionalInnerType>::ArrowType;
225+
using typename CTypeTraits<OptionalInnerType>::ArrayType;
225226
using CTypeTraits<OptionalInnerType>::type_singleton;
226227

227228
static Status AppendRow(typename TypeTraits<ArrowType>::BuilderType& builder,
@@ -232,6 +233,14 @@ struct ConversionTraits<Optional, enable_if_optional_like<Optional>>
232233
return builder.AppendNull();
233234
}
234235
}
236+
237+
static Optional GetEntry(const ArrayType& array, size_t j) {
238+
if (array.IsNull(j)) {
239+
return {};
240+
} else {
241+
return ConversionTraits<OptionalInnerType>::GetEntry(array, j);
242+
}
243+
}
235244
};
236245

237246
/// Build an arrow::Schema based upon the types defined in a std::tuple-like structure.

0 commit comments

Comments
 (0)