From 4643b0a0d5fc921d1892914c0b5f7dc1e5fd7202 Mon Sep 17 00:00:00 2001 From: Keith Lee Date: Mon, 29 Dec 2025 11:50:47 +0000 Subject: [PATCH] Error when using currently unimplemented non default ZSTD compression level --- .../src/compression/arrow_compression.rs | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/crates/fluss/src/compression/arrow_compression.rs b/crates/fluss/src/compression/arrow_compression.rs index 32dfadb..776a4c2 100644 --- a/crates/fluss/src/compression/arrow_compression.rs +++ b/crates/fluss/src/compression/arrow_compression.rs @@ -81,11 +81,20 @@ impl ArrowCompressionInfo { e ), }), - - Some(Ok(level)) => Ok(Self { - compression_type, - compression_level: level, - }), + Some(Ok(level)) => { + // TODO Remove once non-default ZSTD compression level is implemented https://github.com/apache/fluss-rust/issues/109 + if level != DEFAULT_ZSTD_COMPRESSION_LEVEL { + return Err(Error::IoUnsupported { + message: format!( + "Rust client currently only implements default ZSTD compression level {DEFAULT_ZSTD_COMPRESSION_LEVEL}. Got: {level}" + ), + }); + } + Ok(Self { + compression_type, + compression_level: level, + }) + } None => Ok(Self { compression_type, compression_level: DEFAULT_ZSTD_COMPRESSION_LEVEL, @@ -171,11 +180,19 @@ mod tests { "ZSTD", )])); assert_eq!(compression_info.unwrap().compression_level, 3); - let compression_info = ArrowCompressionInfo::from_conf(&mk_map(&[ + } + + // TODO Remove once non-default ZSTD compression level is implemented https://github.com/apache/fluss-rust/issues/109 + #[test] + fn test_from_conf_zstd_compression_level_error_when_non_default() { + let result = ArrowCompressionInfo::from_conf(&mk_map(&[ ("table.log.arrow.compression.type", "ZSTD"), ("table.log.arrow.compression.zstd.level", "1"), ])); - assert_eq!(compression_info.unwrap().compression_level, 1); + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains( + "Rust client currently only implements default ZSTD compression level 3. Got: 1." + )); } #[test]