@@ -24,7 +24,6 @@ use crate::arrow::record_reader::{
2424 buffer:: { BufferQueue , ScalarBuffer , ValuesBuffer } ,
2525 definition_levels:: { DefinitionLevelBuffer , DefinitionLevelBufferDecoder } ,
2626} ;
27- use crate :: column:: page:: PageIterator ;
2827use crate :: column:: {
2928 page:: PageReader ,
3029 reader:: {
@@ -46,6 +45,9 @@ pub(crate) const MIN_BATCH_SIZE: usize = 1024;
4645pub type RecordReader < T > =
4746 GenericRecordReader < ScalarBuffer < <T as DataType >:: T > , ColumnValueDecoderImpl < T > > ;
4847
48+ pub ( crate ) type ColumnReader < CV > =
49+ GenericColumnReader < ColumnLevelDecoderImpl , DefinitionLevelBufferDecoder , CV > ;
50+
4951/// A generic stateful column reader that delimits semantic records
5052///
5153/// This type is hidden from the docs, and relies on private traits with no
@@ -57,9 +59,7 @@ pub struct GenericRecordReader<V, CV> {
5759 records : V ,
5860 def_levels : Option < DefinitionLevelBuffer > ,
5961 rep_levels : Option < ScalarBuffer < i16 > > ,
60- column_reader : Option <
61- GenericColumnReader < ColumnLevelDecoderImpl , DefinitionLevelBufferDecoder , CV > ,
62- > ,
62+ column_reader : Option < ColumnReader < CV > > ,
6363
6464 /// Number of records accumulated in records
6565 num_records : usize ,
@@ -185,24 +185,11 @@ where
185185 /// # Returns
186186 ///
187187 /// Number of records skipped
188- pub fn skip_records (
189- & mut self ,
190- num_records : usize ,
191- pages : & mut dyn PageIterator ,
192- ) -> Result < usize > {
188+ pub fn skip_records ( & mut self , num_records : usize ) -> Result < usize > {
193189 // First need to clear the buffer
194190 let end_of_column = match self . column_reader . as_mut ( ) {
195191 Some ( reader) => !reader. has_next ( ) ?,
196- None => {
197- // If we skip records before all read operation
198- // we need set `column_reader` by `set_page_reader`
199- if let Some ( page_reader) = pages. next ( ) {
200- self . set_page_reader ( page_reader?) ?;
201- false
202- } else {
203- return Ok ( 0 ) ;
204- }
205- }
192+ None => return Ok ( 0 ) ,
206193 } ;
207194
208195 let ( buffered_records, buffered_values) =
@@ -292,6 +279,11 @@ where
292279 . map ( |levels| levels. split_bitmask ( self . num_values ) )
293280 }
294281
282+ /// Returns column reader.
283+ pub ( crate ) fn column_reader ( & self ) -> Option < & ColumnReader < CV > > {
284+ self . column_reader . as_ref ( )
285+ }
286+
295287 /// Try to read one batch of data.
296288 fn read_one_batch ( & mut self , batch_size : usize ) -> Result < usize > {
297289 let rep_levels = self
0 commit comments