Skip to content

Commit

Permalink
Support skip_def_levels (only max_def_levels=1) for ColumnLevelDecode…
Browse files Browse the repository at this point in the history
…rImpl
  • Loading branch information
Ted-Jiang committed Jul 20, 2022
1 parent f192929 commit 7a2fa01
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions parquet/src/column/reader/decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,28 @@ impl ColumnLevelDecoder for ColumnLevelDecoderImpl {
impl DefinitionLevelDecoder for ColumnLevelDecoderImpl {
fn skip_def_levels(
&mut self,
_num_levels: usize,
_max_def_level: i16,
num_levels: usize,
max_def_level: i16,
) -> Result<(usize, usize)> {
Err(nyi_err!("https://github.com/apache/arrow-rs/issues/1792"))
// For now only support max_def_level == 1
if max_def_level == 1 {
let mut skip = num_levels;
match &mut self.inner {
LevelDecoderInner::Packed(reader, _bit_width) => {
while !reader.skip_value(skip) {
skip /= 2;
}
}
LevelDecoderInner::Rle(reader) => {
skip = reader.skip(skip).unwrap();
}
}
Ok((skip, skip))
} else {
Err(nyi_err!(
"For now only support skip when max_def_level == 1 && max_rep_level == 0"
))
}
}
}

Expand Down

0 comments on commit 7a2fa01

Please sign in to comment.