MCPcopy Create free account
hub / github.com/apache/arrow / MakeOrcWriterOptions

Function MakeOrcWriterOptions

cpp/src/arrow/adapters/orc/adapter.cc:713–759  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

711};
712
713Result<liborc::WriterOptions> MakeOrcWriterOptions(
714 arrow::adapters::orc::WriteOptions options) {
715 liborc::WriterOptions orc_options;
716 orc_options.setFileVersion(
717 liborc::FileVersion(static_cast<uint32_t>(options.file_version.major_version()),
718 static_cast<uint32_t>(options.file_version.minor_version())));
719 orc_options.setStripeSize(static_cast<uint64_t>(options.stripe_size));
720 orc_options.setCompressionBlockSize(
721 static_cast<uint64_t>(options.compression_block_size));
722 orc_options.setCompressionStrategy(static_cast<liborc::CompressionStrategy>(
723 static_cast<int8_t>(options.compression_strategy)));
724 orc_options.setRowIndexStride(static_cast<uint64_t>(options.row_index_stride));
725 orc_options.setPaddingTolerance(options.padding_tolerance);
726 orc_options.setDictionaryKeySizeThreshold(options.dictionary_key_size_threshold);
727 std::set<uint64_t> orc_bloom_filter_columns;
728 std::for_each(options.bloom_filter_columns.begin(), options.bloom_filter_columns.end(),
729 [&orc_bloom_filter_columns](const int64_t col) {
730 orc_bloom_filter_columns.insert(static_cast<uint64_t>(col));
731 });
732 orc_options.setColumnsUseBloomFilter(std::move(orc_bloom_filter_columns));
733 orc_options.setBloomFilterFPP(options.bloom_filter_fpp);
734 // Orc timestamp type is error-prone since it serializes values in the writer timezone
735 // and reads them back in the reader timezone. To avoid this, both the Apache Orc C++
736 // writer and reader set the timezone to GMT by default to avoid any conversion.
737 // We follow the same practice here explicitly to make sure readers are aware of this.
738 orc_options.setTimezoneName("GMT");
739 switch (options.compression) {
740 case Compression::UNCOMPRESSED:
741 orc_options.setCompression(liborc::CompressionKind::CompressionKind_NONE);
742 break;
743 case Compression::GZIP:
744 orc_options.setCompression(liborc::CompressionKind::CompressionKind_ZLIB);
745 break;
746 case Compression::SNAPPY:
747 orc_options.setCompression(liborc::CompressionKind::CompressionKind_SNAPPY);
748 break;
749 case Compression::LZ4:
750 orc_options.setCompression(liborc::CompressionKind::CompressionKind_LZ4);
751 break;
752 case Compression::ZSTD:
753 orc_options.setCompression(liborc::CompressionKind::CompressionKind_ZSTD);
754 break;
755 default:
756 return Status::Invalid("Compression type not supported by ORC");
757 }
758 return orc_options;
759}
760
761} // namespace
762

Callers

nothing calls this directly

Calls 5

FileVersionFunction · 0.85
InvalidFunction · 0.50
beginMethod · 0.45
endMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected