From afb226a166641f2a5ba3afc0f3511dbd560e8ddf Mon Sep 17 00:00:00 2001 From: Thomas ten Cate Date: Mon, 19 Aug 2024 09:04:44 +0200 Subject: [PATCH] Do not print compression level in schema printer The compression level is only used during compression, not decompression, and isn't actually stored in the metadata. Printing it is misleading. --- parquet/src/basic.rs | 17 +++++++++++++++++ parquet/src/schema/printer.rs | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/parquet/src/basic.rs b/parquet/src/basic.rs index a12c9d860882..02c2f44f60c3 100644 --- a/parquet/src/basic.rs +++ b/parquet/src/basic.rs @@ -358,6 +358,14 @@ pub enum Compression { LZ4_RAW, } +impl Compression { + /// Returns the codec type of this compression setting as a string, without the compression + /// level. + pub(crate) fn codec_to_string(self) -> String { + format!("{:?}", self).split('(').next().unwrap().to_owned() + } +} + fn split_compression_string(str_setting: &str) -> Result<(&str, Option), ParquetError> { let split_setting = str_setting.split_once('('); @@ -1915,6 +1923,15 @@ mod tests { ); } + #[test] + fn test_compression_codec_to_string() { + assert_eq!(Compression::UNCOMPRESSED.codec_to_string(), "UNCOMPRESSED"); + assert_eq!( + Compression::ZSTD(ZstdLevel::default()).codec_to_string(), + "ZSTD" + ); + } + #[test] fn test_display_compression() { assert_eq!(Compression::UNCOMPRESSED.to_string(), "UNCOMPRESSED"); diff --git a/parquet/src/schema/printer.rs b/parquet/src/schema/printer.rs index 0bbf2af748fb..32d727427ec1 100644 --- a/parquet/src/schema/printer.rs +++ b/parquet/src/schema/printer.rs @@ -130,7 +130,11 @@ fn print_column_chunk_metadata(out: &mut dyn io::Write, cc_metadata: &ColumnChun writeln!(out, "file path: {file_path_str}"); writeln!(out, "file offset: {}", cc_metadata.file_offset()); writeln!(out, "num of values: {}", cc_metadata.num_values()); - writeln!(out, "compression: {}", cc_metadata.compression()); + writeln!( + out, + "compression: {}", + cc_metadata.compression().codec_to_string() + ); writeln!( out, "total compressed size (in bytes): {}",