| 760 | } |
| 761 | |
| 762 | Status GetCompressionExperimental(const flatbuf::Message* message, |
| 763 | Compression::type* out) { |
| 764 | *out = Compression::UNCOMPRESSED; |
| 765 | if (message->custom_metadata() != nullptr) { |
| 766 | // TODO: Ensure this deserialization only ever happens once |
| 767 | std::shared_ptr<KeyValueMetadata> metadata; |
| 768 | ARROW_ASSIGN_OR_RAISE(metadata, |
| 769 | internal::GetKeyValueMetadata(message->custom_metadata())); |
| 770 | int index = metadata->FindKey("ARROW:experimental_compression"); |
| 771 | if (index != -1) { |
| 772 | // Arrow 0.17 stored string in upper case, internal utils now require lower case |
| 773 | auto name = arrow::internal::AsciiToLower(metadata->value(index)); |
| 774 | ARROW_ASSIGN_OR_RAISE(*out, util::Codec::GetCompressionType(name)); |
| 775 | } |
| 776 | return internal::CheckCompressionSupported(*out); |
| 777 | } |
| 778 | return Status::OK(); |
| 779 | } |
| 780 | |
| 781 | Status ReadContiguousPayload(io::InputStream* file, std::unique_ptr<Message>* message) { |
| 782 | ARROW_ASSIGN_OR_RAISE(*message, ReadMessage(file)); |
no test coverage detected