rok commented on code in PR #6637:
URL: https://github.com/apache/arrow-rs/pull/6637#discussion_r1987417425
##########
parquet/src/arrow/arrow_reader/mod.rs:
##########
@@ -670,14 +691,59 @@ impl<T: ChunkReader + 'static> Iterator for
ReaderPageIterator<T> {
let meta = rg.column(self.column_idx);
let offset_index = self.metadata.offset_index();
// `offset_index` may not exist and `i[rg_idx]` will be empty.
- // To avoid `i[rg_idx][self.oolumn_idx`] panic, we need to filter out
empty `i[rg_idx]`.
+ // To avoid `i[rg_idx][self.column_idx`] panic, we need to filter out
empty `i[rg_idx]`.
let page_locations = offset_index
.filter(|i| !i[rg_idx].is_empty())
.map(|i| i[rg_idx][self.column_idx].page_locations.clone());
let total_rows = rg.num_rows() as usize;
let reader = self.reader.clone();
+ #[cfg(feature = "encryption")]
+ let crypto_context = if let Some(file_decryptor) =
self.metadata.file_decryptor() {
+ let column_name = self
+ .metadata
+ .file_metadata()
+ .schema_descr()
+ .column(self.column_idx);
+
+ if file_decryptor.is_column_encrypted(column_name.name()) {
+ let data_decryptor =
file_decryptor.get_column_data_decryptor(column_name.name());
+ let data_decryptor = match data_decryptor {
+ Ok(data_decryptor) => data_decryptor,
+ Err(err) => return Some(Err(err)),
+ };
+
+ let metadata_decryptor =
+
file_decryptor.get_column_metadata_decryptor(column_name.name());
+ let metadata_decryptor = match metadata_decryptor {
+ Ok(metadata_decryptor) => metadata_decryptor,
+ Err(err) => return Some(Err(err)),
+ };
+
+ let crypto_context = CryptoContext::new(
+ rg_idx,
+ self.column_idx,
+ data_decryptor,
+ metadata_decryptor,
+ file_decryptor.file_aad().clone(),
+ );
+ Some(Arc::new(crypto_context))
+ } else {
+ None
+ }
+ } else {
+ None
+ };
+
let ret = SerializedPageReader::new(reader, meta, total_rows,
page_locations);
+
+ #[cfg(feature = "encryption")]
+ {
+ let ret = Ok(ret.unwrap().with_crypto_context(crypto_context));
Review Comment:
Done.
--
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]