From 67b8cb9f78351ba9a72b6010ae55d35a508d317b Mon Sep 17 00:00:00 2001 From: Rok Mihevc Date: Tue, 11 Mar 2025 01:32:58 +0100 Subject: [PATCH] Fixes --- parquet/src/arrow/async_reader/mod.rs | 58 ++++++++++++------------- parquet/src/arrow/async_reader/store.rs | 2 +- parquet/src/file/metadata/reader.rs | 2 +- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/parquet/src/arrow/async_reader/mod.rs b/parquet/src/arrow/async_reader/mod.rs index 687a7f6e4d8..a705dad5e68 100644 --- a/parquet/src/arrow/async_reader/mod.rs +++ b/parquet/src/arrow/async_reader/mod.rs @@ -161,7 +161,6 @@ impl AsyncFileReader for T { .boxed() } - #[cfg(feature = "encryption")] fn get_metadata_with_options<'a>( &'a mut self, options: &'a ArrowReaderOptions, @@ -202,7 +201,7 @@ impl AsyncFileReader for T { let footer = ParquetMetaDataReader::decode_footer_tail(&buf)?; let metadata_len = footer.metadata_length(); #[cfg(not(feature = "encryption"))] - if footer.encrypted_footer { + if footer.is_encrypted_footer() { return Err(general_err!( "Parquet file has an encrypted footer but the encryption feature is disabled" )); @@ -927,7 +926,6 @@ struct InMemoryRowGroup<'a> { offset_index: Option<&'a [OffsetIndexMetaData]>, column_chunks: Vec>>, row_count: usize, - #[cfg(feature = "encryption")] row_group_idx: usize, metadata: &'a ParquetMetaData, } @@ -1033,35 +1031,34 @@ impl RowGroups for InMemoryRowGroup<'_> { fn column_chunks(&self, i: usize) -> Result> { #[cfg(feature = "encryption")] - let crypto_context = - if let Some(file_decryptor) = self.metadata.clone().file_decryptor().clone() { - let column_name = &self - .metadata - .clone() - .file_metadata() - .schema_descr() - .column(i); - - if file_decryptor.is_column_encrypted(column_name.name()) { - let data_decryptor = - file_decryptor.get_column_data_decryptor(column_name.name())?; - let metadata_decryptor = - file_decryptor.get_column_metadata_decryptor(column_name.name())?; - - let crypto_context = CryptoContext::new( - self.row_group_idx, - i, - data_decryptor, - metadata_decryptor, - file_decryptor.file_aad().clone(), - ); - Some(Arc::new(crypto_context)) - } else { - None - } + let crypto_context = if let Some(file_decryptor) = self.metadata.clone().file_decryptor() { + let column_name = &self + .metadata + .clone() + .file_metadata() + .schema_descr() + .column(i); + + if file_decryptor.is_column_encrypted(column_name.name()) { + let data_decryptor = + file_decryptor.get_column_data_decryptor(column_name.name())?; + let metadata_decryptor = + file_decryptor.get_column_metadata_decryptor(column_name.name())?; + + let crypto_context = CryptoContext::new( + self.row_group_idx, + i, + data_decryptor, + metadata_decryptor, + file_decryptor.file_aad().clone(), + ); + Some(Arc::new(crypto_context)) } else { None - }; + } + } else { + None + }; match &self.column_chunks[i] { None => Err(ParquetError::General(format!( @@ -1212,7 +1209,6 @@ mod tests { futures::future::ready(Ok(self.metadata.clone())).boxed() } - #[cfg(feature = "encryption")] fn get_metadata_with_options<'a>( &'a mut self, options: &'a ArrowReaderOptions, diff --git a/parquet/src/arrow/async_reader/store.rs b/parquet/src/arrow/async_reader/store.rs index 0060ed6525e..128316b5131 100644 --- a/parquet/src/arrow/async_reader/store.rs +++ b/parquet/src/arrow/async_reader/store.rs @@ -253,7 +253,7 @@ mod tests { let options = ArrowReaderOptions::new().with_file_decryption_properties(decryption_properties); let mut binding = ParquetObjectReader::new(store, meta); - let binding = binding.get_metadata_with_options(&options); + let _binding = binding.get_metadata_with_options(&options); // todo: this should pass // let object_reader = binding.await.unwrap(); diff --git a/parquet/src/file/metadata/reader.rs b/parquet/src/file/metadata/reader.rs index e0746ec0bcb..63f9c8e3b5c 100644 --- a/parquet/src/file/metadata/reader.rs +++ b/parquet/src/file/metadata/reader.rs @@ -561,7 +561,7 @@ impl ParquetMetaDataReader { return Err(ParquetError::NeedMoreData(footer_metadata_len)); } #[cfg(not(feature = "encryption"))] - if footer.encrypted_footer { + if footer.is_encrypted_footer() { return Err(general_err!( "Parquet file has an encrypted footer but the encryption feature is disabled" ));