pitrou commented on code in PR #48865:
URL: https://github.com/apache/arrow/pull/48865#discussion_r2695104131
##########
cpp/src/arrow/util/compression_test.cc:
##########
@@ -446,36 +449,17 @@ TEST(TestCodecMisc, SpecifyCompressionLevel) {
}
}
-TEST(TestCodecMisc, SpecifyCodecOptionsGZip) {
- // for now only GZIP & Brotli codec options supported, since it has specific
parameters
- // to be customized, other codecs could directly go with CodecOptions, could
add more
- // specific codec options if needed.
- struct CombinationOption {
- int level;
- GZipFormat format;
- int window_bits;
- bool expect_success;
- };
- constexpr CombinationOption combinations[] = {{2, GZipFormat::ZLIB, 12,
true},
- {9, GZipFormat::GZIP, 9, true},
- {9, GZipFormat::GZIP, 20,
false},
- {5, GZipFormat::DEFLATE, -12,
false},
- {-992, GZipFormat::GZIP, 15,
false}};
-
+template <std::derived_from<arrow::util::CodecOptions> T>
Review Comment:
Neat, a concept 😀
##########
cpp/src/arrow/util/compression_test.cc:
##########
@@ -484,37 +468,60 @@ TEST(TestCodecMisc, SpecifyCodecOptionsGZip) {
}
}
+TEST(TestCodecMisc, SpecifyCodecOptionsGZip) {
+ auto makeOption = [](int compression_level, GZipFormat format,
Review Comment:
Nit: `make_option` (it's a local variable)
##########
cpp/src/arrow/util/compression_test.cc:
##########
@@ -484,37 +468,60 @@ TEST(TestCodecMisc, SpecifyCodecOptionsGZip) {
}
}
+TEST(TestCodecMisc, SpecifyCodecOptionsGZip) {
+ auto makeOption = [](int compression_level, GZipFormat format,
+ std::optional<int> window_bits) {
+ arrow::util::GZipCodecOptions option;
+ option.compression_level = compression_level;
+ option.gzip_format = format;
+ option.window_bits = window_bits;
+ return option;
+ };
+ const std::pair<arrow::util::GZipCodecOptions, bool> options[]{
+ {makeOption(5, GZipFormat::GZIP, 15), true},
+ {makeOption(9, GZipFormat::ZLIB, 12), true},
+ {makeOption(-1, GZipFormat::DEFLATE, 10), true},
+ {makeOption(10, GZipFormat::GZIP, 25), false},
+ {makeOption(-992, GZipFormat::GZIP, 15), false},
+ };
+ CheckSpecifyCodecOptions<arrow::util::GZipCodecOptions>(Compression::GZIP,
options);
+}
+
TEST(TestCodecMisc, SpecifyCodecOptionsBrotli) {
- // for now only GZIP & Brotli codec options supported, since it has specific
parameters
- // to be customized, other codecs could directly go with CodecOptions, could
add more
- // specific codec options if needed.
- struct CombinationOption {
- int level;
- int window_bits;
- bool expect_success;
+ auto makeOption = [](int compression_level, std::optional<int> window_bits) {
Review Comment:
Same
##########
cpp/src/arrow/util/compression_zstd.cc:
##########
@@ -207,24 +198,24 @@ class ZSTDCodec : public Codec {
Result<int64_t> Compress(int64_t input_len, const uint8_t* input,
int64_t output_buffer_len, uint8_t* output_buffer)
override {
- size_t ret = ZSTD_compress(output_buffer,
static_cast<size_t>(output_buffer_len),
- input, static_cast<size_t>(input_len),
compression_level_);
+ ARROW_ASSIGN_OR_RAISE(auto cctx, CreateCCtx());
+ size_t ret = ZSTD_compressCCtx(cctx.get(), output_buffer,
+ static_cast<size_t>(output_buffer_len),
input,
+ static_cast<size_t>(input_len),
compression_level_);
Review Comment:
Funny that the compression level is passed a second time here, after we
already gave it to `ZSTD_CCtx_setParameter`. I suppose it doesn't matter?
--
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]