Skip to content

Commit 0bddb43

Browse files
committed
no longer allow bit_packed level encoding
1 parent f5365c3 commit 0bddb43

File tree

3 files changed

+9
-29
lines changed

3 files changed

+9
-29
lines changed

parquet/src/column/writer/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ impl<'a, E: ColumnValueEncoder> GenericColumnWriter<'a, E> {
650650
/// Creates a new streaming level encoder appropriate for the writer version.
651651
fn create_level_encoder(max_level: i16, props: &WriterProperties) -> LevelEncoder {
652652
match props.writer_version() {
653-
WriterVersion::PARQUET_1_0 => LevelEncoder::v1_streaming(Encoding::RLE, max_level),
653+
WriterVersion::PARQUET_1_0 => LevelEncoder::v1_streaming(max_level),
654654
WriterVersion::PARQUET_2_0 => LevelEncoder::v2_streaming(max_level),
655655
}
656656
}

parquet/src/encodings/levels.rs

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,32 @@ use std::mem;
1919

2020
use super::rle::RleEncoder;
2121

22-
use crate::basic::Encoding;
2322
use crate::data_type::AsBytes;
24-
use crate::util::bit_util::{BitWriter, num_required_bits};
23+
use crate::util::bit_util::num_required_bits;
2524

2625
/// Encoder for definition/repetition levels.
2726
/// Currently only supports Rle and BitPacked (dev/null) encoding, including v2.
2827
pub enum LevelEncoder {
2928
Rle(RleEncoder),
3029
RleV2(RleEncoder),
31-
BitPacked(u8, BitWriter),
3230
}
3331

3432
impl LevelEncoder {
3533
/// Creates a new streaming level encoder for Data Page v1.
3634
///
37-
/// Unlike [`v1`](Self::v1), this does not require knowing the number of values
35+
/// This does not require knowing the number of values
3836
/// upfront, making it suitable for incremental encoding where levels are fed in
3937
/// as they arrive via [`put`](Self::put).
40-
pub fn v1_streaming(encoding: Encoding, max_level: i16) -> Self {
38+
pub fn v1_streaming(max_level: i16) -> Self {
4139
let bit_width = num_required_bits(max_level as u64);
42-
match encoding {
43-
Encoding::RLE => {
44-
// Reserve space for length header
45-
let buffer = vec![0u8; 4];
46-
LevelEncoder::Rle(RleEncoder::new_from_buf(bit_width, buffer))
47-
}
48-
#[allow(deprecated)]
49-
Encoding::BIT_PACKED => {
50-
LevelEncoder::BitPacked(bit_width, BitWriter::new_from_buf(Vec::new()))
51-
}
52-
_ => panic!("Unsupported encoding type {encoding}"),
53-
}
40+
// Reserve space for length header
41+
let buffer = vec![0u8; 4];
42+
LevelEncoder::Rle(RleEncoder::new_from_buf(bit_width, buffer))
5443
}
5544

5645
/// Creates a new streaming RLE level encoder for Data Page v2.
5746
///
58-
/// Unlike [`v2`](Self::v2), this does not require knowing the number of values
47+
/// This does not require knowing the number of values
5948
/// upfront, making it suitable for incremental encoding where levels are fed in
6049
/// as they arrive via [`put`](Self::put).
6150
pub fn v2_streaming(max_level: i16) -> Self {
@@ -80,12 +69,6 @@ impl LevelEncoder {
8069
num_encoded += 1;
8170
}
8271
}
83-
LevelEncoder::BitPacked(bit_width, ref mut encoder) => {
84-
for value in buffer {
85-
encoder.put_value(*value as u64, bit_width as usize);
86-
num_encoded += 1;
87-
}
88-
}
8972
}
9073
num_encoded
9174
}
@@ -106,7 +89,6 @@ impl LevelEncoder {
10689
encoded_data
10790
}
10891
LevelEncoder::RleV2(encoder) => encoder.consume(),
109-
LevelEncoder::BitPacked(_, encoder) => encoder.consume(),
11092
}
11193
}
11294

@@ -126,7 +108,6 @@ impl LevelEncoder {
126108
f(data)
127109
}
128110
LevelEncoder::RleV2(encoder) => f(encoder.flush_buffer()),
129-
LevelEncoder::BitPacked(_, encoder) => f(encoder.flush_buffer()),
130111
};
131112
match self {
132113
LevelEncoder::Rle(encoder) => {
@@ -135,7 +116,6 @@ impl LevelEncoder {
135116
encoder.skip(mem::size_of::<i32>());
136117
}
137118
LevelEncoder::RleV2(encoder) => encoder.clear(),
138-
LevelEncoder::BitPacked(_, encoder) => encoder.clear(),
139119
}
140120
result
141121
}

parquet/src/util/test_common/page_util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl DataPageBuilderImpl {
7575
if max_level <= 0 {
7676
return 0;
7777
}
78-
let mut level_encoder = LevelEncoder::v1_streaming(Encoding::RLE, max_level);
78+
let mut level_encoder = LevelEncoder::v1_streaming(max_level);
7979
level_encoder.put(levels);
8080
let encoded_levels = level_encoder.consume();
8181
// Actual encoded bytes (without length offset)

0 commit comments

Comments
 (0)