File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed
Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -358,6 +358,11 @@ impl ParquetMetaDataPushDecoder {
358358 Ok ( ( ) )
359359 }
360360
361+ /// Clear any staged byte ranges currently buffered for future decode work.
362+ pub fn clear_all_ranges ( & mut self ) {
363+ self . buffers . clear_all_ranges ( ) ;
364+ }
365+
361366 /// Try to decode the metadata from the pushed data, returning the
362367 /// decoded metadata or an error if not enough data is available.
363368 pub fn try_decode ( & mut self ) -> Result < DecodeResult < ParquetMetaData > > {
@@ -573,6 +578,23 @@ mod tests {
573578 assert ! ( metadata. offset_index( ) . is_some( ) ) ;
574579 }
575580
581+ #[ test]
582+ fn test_metadata_decoder_clear_all_ranges ( ) {
583+ let file_len = test_file_len ( ) ;
584+ let mut metadata_decoder = ParquetMetaDataPushDecoder :: try_new ( file_len) . unwrap ( ) ;
585+
586+ metadata_decoder
587+ . push_range ( test_file_range ( ) , TEST_FILE_DATA . clone ( ) )
588+ . unwrap ( ) ;
589+ assert_eq ! ( metadata_decoder. buffers. buffered_bytes( ) , test_file_len( ) ) ;
590+
591+ metadata_decoder. clear_all_ranges ( ) ;
592+ assert_eq ! ( metadata_decoder. buffers. buffered_bytes( ) , 0 ) ;
593+
594+ let ranges = expect_needs_data ( metadata_decoder. try_decode ( ) ) ;
595+ assert_eq ! ( ranges, vec![ test_file_len( ) - 8 ..test_file_len( ) ] ) ;
596+ }
597+
576598 /// Decode the metadata incrementally, simulating a scenario where exactly the data needed
577599 /// is read in each step
578600 #[ test]
Original file line number Diff line number Diff line change @@ -156,7 +156,6 @@ impl PushBuffers {
156156 }
157157
158158 /// Clear all buffered ranges and their corresponding data
159- #[ cfg( feature = "arrow" ) ]
160159 pub fn clear_all_ranges ( & mut self ) {
161160 self . ranges . clear ( ) ;
162161 self . buffers . clear ( ) ;
You can’t perform that action at this time.
0 commit comments