Skip to content

Commit 356d965

Browse files
author
Devdutt Shenoi
committed
refactor: unexpected compression algo
1 parent e85f33d commit 356d965

File tree

2 files changed

+40
-27
lines changed

2 files changed

+40
-27
lines changed

server/src/cli.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ impl Cli {
423423
.arg(
424424
// RowGroupSize controls the number of rows present in one row group
425425
// More rows = better compression but HIGHER Memory consumption during read/write
426-
// 1048576 is the default value for DataFusion
426+
// 1048576 is the default value for DataFusion
427427
Arg::new(Self::ROW_GROUP_SIZE)
428428
.long(Self::ROW_GROUP_SIZE)
429429
.env("P_PARQUET_ROW_GROUP_SIZE")
@@ -591,20 +591,12 @@ impl FromArgMatches for Cli {
591591
.get_one::<usize>(Self::ROW_GROUP_SIZE)
592592
.cloned()
593593
.expect("default for row_group size");
594-
self.parquet_compression = match m
594+
self.parquet_compression = m
595595
.get_one::<String>(Self::PARQUET_COMPRESSION_ALGO)
596596
.expect("default for compression algo")
597597
.as_str()
598-
{
599-
"uncompressed" => Compression::UNCOMPRESSED,
600-
"snappy" => Compression::SNAPPY,
601-
"gzip" => Compression::GZIP,
602-
"lzo" => Compression::LZO,
603-
"brotli" => Compression::BROTLI,
604-
"lz4" => Compression::LZ4,
605-
"zstd" => Compression::ZSTD,
606-
_ => unreachable!(),
607-
};
598+
.try_into()
599+
.expect("valid compression algorithm");
608600

609601
let openid_client_id = m.get_one::<String>(Self::OPENID_CLIENT_ID).cloned();
610602
let openid_client_secret = m.get_one::<String>(Self::OPENID_CLIENT_SECRET).cloned();

server/src/option.rs

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -254,28 +254,49 @@ pub enum Mode {
254254
}
255255

256256
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
257-
#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
258257
pub enum Compression {
259-
UNCOMPRESSED,
260-
SNAPPY,
261-
GZIP,
262-
LZO,
263-
BROTLI,
258+
Uncompressed,
259+
Snappy,
260+
Gzip,
261+
Lzo,
262+
Brotli,
264263
#[default]
265-
LZ4,
266-
ZSTD,
264+
Lz4,
265+
Zstd,
266+
}
267+
268+
#[derive(Debug, thiserror::Error)]
269+
#[error("Unexpected compression algorithm: {0:?}")]
270+
pub struct UnexpectedAlgo<'a>(&'a str);
271+
272+
impl<'a> TryFrom<&'a str> for Compression {
273+
type Error = UnexpectedAlgo<'a>;
274+
fn try_from(value: &'a str) -> Result<Self, Self::Error> {
275+
let algo = match value {
276+
"uncompressed" => Self::Uncompressed,
277+
"snappy" => Self::Snappy,
278+
"gzip" => Self::Gzip,
279+
"lzo" => Self::Lzo,
280+
"brotli" => Self::Brotli,
281+
"lz4" => Self::Lz4,
282+
"zstd" => Self::Zstd,
283+
s => return Err(UnexpectedAlgo(s)),
284+
};
285+
286+
Ok(algo)
287+
}
267288
}
268289

269290
impl From<Compression> for parquet::basic::Compression {
270291
fn from(value: Compression) -> Self {
271292
match value {
272-
Compression::UNCOMPRESSED => parquet::basic::Compression::UNCOMPRESSED,
273-
Compression::SNAPPY => parquet::basic::Compression::SNAPPY,
274-
Compression::GZIP => parquet::basic::Compression::GZIP(GzipLevel::default()),
275-
Compression::LZO => parquet::basic::Compression::LZO,
276-
Compression::BROTLI => parquet::basic::Compression::BROTLI(BrotliLevel::default()),
277-
Compression::LZ4 => parquet::basic::Compression::LZ4,
278-
Compression::ZSTD => parquet::basic::Compression::ZSTD(ZstdLevel::default()),
293+
Compression::Uncompressed => parquet::basic::Compression::UNCOMPRESSED,
294+
Compression::Snappy => parquet::basic::Compression::SNAPPY,
295+
Compression::Gzip => parquet::basic::Compression::GZIP(GzipLevel::default()),
296+
Compression::Lzo => parquet::basic::Compression::LZO,
297+
Compression::Brotli => parquet::basic::Compression::BROTLI(BrotliLevel::default()),
298+
Compression::Lz4 => parquet::basic::Compression::LZ4,
299+
Compression::Zstd => parquet::basic::Compression::ZSTD(ZstdLevel::default()),
279300
}
280301
}
281302
}

0 commit comments

Comments
 (0)