| 622 | }; |
| 623 | |
| 624 | Status WriteArrayV1(const Array& values, io::OutputStream* dst, ArrayMetadata* meta) { |
| 625 | std::shared_ptr<Array> sanitized; |
| 626 | if (values.type_id() == Type::NA) { |
| 627 | // As long as R doesn't support NA, we write this as a StringColumn |
| 628 | // to ensure stable roundtrips. |
| 629 | sanitized = std::make_shared<StringArray>(values.length(), nullptr, nullptr, |
| 630 | values.null_bitmap(), values.null_count()); |
| 631 | } else { |
| 632 | sanitized = MakeArray(values.data()); |
| 633 | } |
| 634 | ArrayWriterV1 visitor{*sanitized, dst, meta}; |
| 635 | return visitor.Write(); |
| 636 | } |
| 637 | |
| 638 | Status WriteColumnV1(const ChunkedArray& values, io::OutputStream* dst, |
| 639 | ColumnMetadata* out) { |