felipecrv commented on code in PR #24372:
URL: https://github.com/apache/arrow/pull/24372#discussion_r1087810853


##########
cpp/src/arrow/array/builder_base.h:
##########
@@ -36,6 +36,48 @@
 
 namespace arrow {
 
+namespace internal {
+
+template <class Builder, class V>
+class ArrayBuilderExtraOps {
+ private:
+  inline Status AppendOptional(const std::optional<V>& value, bool 
force_empty_value) {
+    auto* self = static_cast<Builder*>(this);
+    if (value.has_value()) {
+      return self->Append(*value);
+    }
+    return force_empty_value ? self->AppendEmptyValue() : self->AppendNull();
+  }
+
+  inline void UnsafeAppendOptional(const std::optional<V>& value,
+                                   bool force_empty_value) {
+    auto* self = static_cast<Builder*>(this);
+    if (value.has_value()) {
+      return self->UnsafeAppend(*value);
+    }
+    return force_empty_value ? self->UnsafeAppendEmptyValue() : 
self->UnsafeAppendNull();
+  }
+
+ public:
+  Status AppendOrNull(const std::optional<V>& value) {
+    return AppendOptional(value, false);
+  }
+
+  Status AppendOrEmptyValue(const std::optional<V>& value) {
+    return AppendOptional(value, true);
+  }

Review Comment:
   Removed this and pushed again.



##########
cpp/src/arrow/testing/matchers.h:
##########
@@ -430,14 +430,10 @@ DataEqMatcher DataEqArray(T type, const 
std::vector<std::optional<ValueType>>& v
   static const bool need_safe_append = !is_fixed_width(T::type_id);
 
   for (auto value : values) {
-    if (value) {
-      if (need_safe_append) {
-        builder.UnsafeAppend(*value);
-      } else {
-        DCHECK_OK(builder.Append(*value));
-      }
+    if (need_safe_append) {
+      builder.UnsafeAppendOrNull(value);

Review Comment:
   Swapped.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to