@@ -225,6 +225,55 @@ impl<T: ParquetValueType> NativeIndex<T> {
225
225
boundary_order : index. boundary_order ,
226
226
} )
227
227
}
228
+
229
+ // TODO: remove annotation after merge with #6000
230
+ #[ allow( dead_code) ]
231
+ pub ( crate ) fn to_thrift ( & self ) -> ColumnIndex {
232
+ let min_values = self
233
+ . indexes
234
+ . iter ( )
235
+ . map ( |x| x. min_bytes ( ) . map ( |x| x. to_vec ( ) ) )
236
+ . collect :: < Option < Vec < _ > > > ( )
237
+ . unwrap_or_else ( || vec ! [ vec![ ] ; self . indexes. len( ) ] ) ;
238
+
239
+ let max_values = self
240
+ . indexes
241
+ . iter ( )
242
+ . map ( |x| x. max_bytes ( ) . map ( |x| x. to_vec ( ) ) )
243
+ . collect :: < Option < Vec < _ > > > ( )
244
+ . unwrap_or_else ( || vec ! [ vec![ ] ; self . indexes. len( ) ] ) ;
245
+
246
+ let null_counts = self
247
+ . indexes
248
+ . iter ( )
249
+ . map ( |x| x. null_count ( ) )
250
+ . collect :: < Option < Vec < _ > > > ( ) ;
251
+
252
+ // Concatenate page histograms into a single Option<Vec>
253
+ let repetition_level_histograms = self
254
+ . indexes
255
+ . iter ( )
256
+ . map ( |x| x. repetition_level_histogram ( ) . map ( |v| v. values ( ) ) )
257
+ . collect :: < Option < Vec < & [ i64 ] > > > ( )
258
+ . map ( |hists| hists. concat ( ) ) ;
259
+
260
+ let definition_level_histograms = self
261
+ . indexes
262
+ . iter ( )
263
+ . map ( |x| x. definition_level_histogram ( ) . map ( |v| v. values ( ) ) )
264
+ . collect :: < Option < Vec < & [ i64 ] > > > ( )
265
+ . map ( |hists| hists. concat ( ) ) ;
266
+
267
+ ColumnIndex :: new (
268
+ self . indexes . iter ( ) . map ( |x| x. min ( ) . is_none ( ) ) . collect ( ) ,
269
+ min_values,
270
+ max_values,
271
+ self . boundary_order ,
272
+ null_counts,
273
+ repetition_level_histograms,
274
+ definition_level_histograms,
275
+ )
276
+ }
228
277
}
229
278
230
279
#[ cfg( test) ]
0 commit comments