File tree Expand file tree Collapse file tree 1 file changed +9
-8
lines changed
rust/datafusion/src/datasource Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -83,9 +83,8 @@ pub struct ParquetFile {
8383
8484fn create_binary_array ( b : & Vec < ByteArray > , row_count : usize ) -> Result < Arc < BinaryArray > > {
8585 let mut builder = BinaryBuilder :: new ( b. len ( ) ) ;
86- for j in 0 ..row_count {
87- let slice = b[ j] . slice ( 0 , b[ j] . len ( ) ) ;
88- builder. append_string ( & String :: from_utf8 ( slice. data ( ) . to_vec ( ) ) . unwrap ( ) ) ?;
86+ for i in 0 ..row_count {
87+ builder. append_string ( & String :: from_utf8 ( b[ i] . data ( ) . to_vec ( ) ) . unwrap ( ) ) ?;
8988 }
9089 Ok ( Arc :: new ( builder. finish ( ) ) )
9190}
@@ -167,14 +166,16 @@ where
167166 & mut read_buffer,
168167 ) ?;
169168 let mut builder = PrimitiveBuilder :: < A > :: new ( levels_read) ;
169+ let converted_buffer: Vec < A :: Native > =
170+ read_buffer. into_iter ( ) . map ( |v| v. into ( ) ) . collect ( ) ;
170171 if values_read == levels_read {
171- let converted_buffer: Vec < A :: Native > =
172- read_buffer. into_iter ( ) . map ( |v| v. into ( ) ) . collect ( ) ;
173172 builder. append_slice ( & converted_buffer[ 0 ..values_read] ) ?;
174173 } else {
175- for ( v, l) in read_buffer. into_iter ( ) . zip ( def_levels) {
176- if l == 0 {
177- builder. append_value ( v. into ( ) ) ?;
174+ let mut vi = 0 ;
175+ for i in 0 ..def_levels. len ( ) {
176+ if def_levels[ i] != 0 {
177+ builder. append_value ( converted_buffer[ vi] . into ( ) ) ?;
178+ vi += 1 ;
178179 } else {
179180 builder. append_null ( ) ?;
180181 }
You can’t perform that action at this time.
0 commit comments