Skip to content

Commit c94c263

Browse files
committed
change ColumnChunkMetaData::encodings to return an iterator as
suggested in review.
1 parent a886995 commit c94c263

File tree

6 files changed

+22
-17
lines changed

6 files changed

+22
-17
lines changed

parquet/src/basic.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -769,11 +769,10 @@ where
769769
mask
770770
}
771771

772-
pub(super) fn mask_to_encodings_vec(mask: i32) -> Vec<Encoding> {
772+
pub(super) fn mask_to_encodings_iter(mask: i32) -> impl Iterator<Item = Encoding> {
773773
(0..=MAX_ENCODING)
774-
.filter(|i| mask & (1 << i) != 0)
774+
.filter(move |i| mask & (1 << i) != 0)
775775
.map(i32_to_encoding)
776-
.collect()
777776
}
778777

779778
// ----------------------------------------------------------------------
@@ -2465,7 +2464,10 @@ mod tests {
24652464
fn encodings_roundtrip(encodings: &mut [Encoding]) {
24662465
encodings.sort();
24672466
let mask = encodings_to_mask(encodings.iter());
2468-
assert_eq!(mask_to_encodings_vec(mask), encodings.to_vec());
2467+
assert_eq!(
2468+
mask_to_encodings_iter(mask).collect::<Vec<_>>(),
2469+
encodings.to_vec()
2470+
);
24692471
}
24702472

24712473
#[test]

parquet/src/column/writer/mod.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,7 +1735,10 @@ mod tests {
17351735
assert_eq!(r.rows_written, 4);
17361736

17371737
let metadata = r.metadata;
1738-
assert_eq!(metadata.encodings(), vec![Encoding::PLAIN, Encoding::RLE]);
1738+
assert_eq!(
1739+
metadata.encodings().collect::<Vec<_>>(),
1740+
vec![Encoding::PLAIN, Encoding::RLE]
1741+
);
17391742
assert_eq!(metadata.num_values(), 4); // just values
17401743
assert_eq!(metadata.dictionary_page_offset(), None);
17411744
}
@@ -2096,7 +2099,7 @@ mod tests {
20962099

20972100
let metadata = r.metadata;
20982101
assert_eq!(
2099-
metadata.encodings(),
2102+
metadata.encodings().collect::<Vec<_>>(),
21002103
vec![Encoding::PLAIN, Encoding::RLE, Encoding::RLE_DICTIONARY]
21012104
);
21022105
assert_eq!(metadata.num_values(), 4);
@@ -2222,7 +2225,7 @@ mod tests {
22222225

22232226
let metadata = r.metadata;
22242227
assert_eq!(
2225-
metadata.encodings(),
2228+
metadata.encodings().collect::<Vec<_>>(),
22262229
vec![Encoding::PLAIN, Encoding::RLE, Encoding::RLE_DICTIONARY]
22272230
);
22282231
assert_eq!(metadata.num_values(), 4);
@@ -4101,7 +4104,7 @@ mod tests {
41014104
.build();
41024105
let meta = column_write_and_get_metadata::<T>(props, data);
41034106
assert_eq!(meta.dictionary_page_offset(), dictionary_page_offset);
4104-
assert_eq!(meta.encodings(), encodings);
4107+
assert_eq!(meta.encodings().collect::<Vec<_>>(), encodings);
41054108
assert_eq!(meta.page_encoding_stats().unwrap(), page_encoding_stats);
41064109
}
41074110

parquet/src/file/metadata/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ pub(crate) mod reader;
9797
pub(crate) mod thrift_gen;
9898
mod writer;
9999

100-
use crate::basic::{PageType, encodings_to_mask, mask_to_encodings_vec};
100+
use crate::basic::{PageType, encodings_to_mask, mask_to_encodings_iter};
101101
#[cfg(feature = "encryption")]
102102
use crate::encryption::decrypt::FileDecryptor;
103103
#[cfg(feature = "encryption")]
@@ -970,8 +970,8 @@ impl ColumnChunkMetaData {
970970
}
971971

972972
/// All encodings used for this column.
973-
pub fn encodings(&self) -> Vec<Encoding> {
974-
mask_to_encodings_vec(self.encodings)
973+
pub fn encodings(&self) -> impl Iterator<Item = Encoding> {
974+
mask_to_encodings_iter(self.encodings)
975975
}
976976

977977
/// All encodings used for this column, returned as a bitmask.

parquet/src/file/metadata/thrift_gen.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1262,7 +1262,10 @@ pub(crate) fn serialize_column_meta_data<W: Write>(
12621262
use crate::file::statistics::page_stats_to_thrift;
12631263

12641264
column_chunk.column_type().write_thrift_field(w, 1, 0)?;
1265-
column_chunk.encodings().write_thrift_field(w, 2, 1)?;
1265+
column_chunk
1266+
.encodings()
1267+
.collect::<Vec<_>>()
1268+
.write_thrift_field(w, 2, 1)?;
12661269
let path = column_chunk.column_descr.path().parts();
12671270
let path: Vec<&str> = path.iter().map(|v| v.as_str()).collect();
12681271
path.write_thrift_field(w, 3, 2)?;

parquet/src/file/writer.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2390,6 +2390,7 @@ mod tests {
23902390
.row_group(0)
23912391
.column(x)
23922392
.encodings()
2393+
.collect::<Vec<_>>()
23932394
.contains(&Encoding::BYTE_STREAM_SPLIT)
23942395
);
23952396
};

parquet/src/schema/printer.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,7 @@ fn print_row_group_metadata(out: &mut dyn io::Write, rg_metadata: &RowGroupMetaD
171171
fn print_column_chunk_metadata(out: &mut dyn io::Write, cc_metadata: &ColumnChunkMetaData) {
172172
writeln!(out, "column type: {}", cc_metadata.column_type());
173173
writeln!(out, "column path: {}", cc_metadata.column_path());
174-
let encoding_strs: Vec<_> = cc_metadata
175-
.encodings()
176-
.iter()
177-
.map(|e| format!("{e}"))
178-
.collect();
174+
let encoding_strs: Vec<_> = cc_metadata.encodings().map(|e| format!("{e}")).collect();
179175
writeln!(out, "encodings: {}", encoding_strs.join(" "));
180176
let file_path_str = cc_metadata.file_path().unwrap_or("N/A");
181177
writeln!(out, "file path: {file_path_str}");

0 commit comments

Comments
 (0)