@@ -23,7 +23,7 @@ use vortex_array::stats::StatsSet;
2323use vortex_array:: { ArrayContext , ArrayRegistry } ;
2424use vortex_dtype:: DType ;
2525use vortex_error:: { VortexResult , vortex_bail, vortex_err} ;
26- use vortex_flatbuffers:: { FlatBuffer , footer as fb} ;
26+ use vortex_flatbuffers:: { FlatBuffer , footer as fb, layout as fbl } ;
2727use vortex_layout:: { Layout , LayoutContext , LayoutRegistry } ;
2828
2929/// Captures the layout information of a Vortex file.
@@ -39,39 +39,38 @@ pub struct Footer {
3939impl Footer {
4040 /// Read the [`Footer`] from a flatbuffer.
4141 pub ( crate ) fn from_flatbuffer (
42- flatbuffer : FlatBuffer ,
42+ footer_bytes : FlatBuffer ,
43+ layout_bytes : FlatBuffer ,
4344 dtype : DType ,
4445 statistics : Option < FileStatistics > ,
4546 array_registry : & ArrayRegistry ,
4647 layout_registry : & LayoutRegistry ,
4748 ) -> VortexResult < Self > {
48- let fb = root :: < fb:: FileLayout > ( & flatbuffer) ?;
49- let fb_root_layout = fb
50- . layout ( )
51- . ok_or_else ( || vortex_err ! ( "Footer missing root layout" ) ) ?;
49+ let fb_footer = root :: < fb:: Footer > ( & footer_bytes) ?;
50+ let fb_layout = root :: < fbl:: Layout > ( & layout_bytes) ?;
5251
5352 // Create a LayoutContext from the registry.
54- let layout_specs = fb . layout_specs ( ) ;
53+ let layout_specs = fb_footer . layout_specs ( ) ;
5554 let layout_ids = layout_specs
5655 . iter ( )
5756 . flat_map ( |e| e. iter ( ) )
5857 . map ( |encoding| encoding. id ( ) ) ;
5958 let layout_ctx = layout_registry. new_context ( layout_ids) ?;
6059
6160 // Create an ArrayContext from the registry.
62- let array_specs = fb . array_specs ( ) ;
61+ let array_specs = fb_footer . array_specs ( ) ;
6362 let array_ids = array_specs
6463 . iter ( )
6564 . flat_map ( |e| e. iter ( ) )
6665 . map ( |encoding| encoding. id ( ) ) ;
6766 let array_ctx = array_registry. new_context ( array_ids) ?;
6867
6968 let root_encoding = layout_ctx
70- . lookup_encoding ( fb_root_layout . encoding ( ) )
69+ . lookup_encoding ( fb_layout . encoding ( ) )
7170 . ok_or_else ( || {
7271 vortex_err ! (
7372 "Footer root layout encoding {} not found" ,
74- fb_root_layout . encoding( )
73+ fb_layout . encoding( )
7574 )
7675 } ) ?
7776 . clone ( ) ;
@@ -82,13 +81,13 @@ impl Footer {
8281 "" . into ( ) ,
8382 root_encoding,
8483 dtype,
85- flatbuffer . clone ( ) ,
86- fb_root_layout . _tab . loc ( ) ,
84+ layout_bytes . clone ( ) ,
85+ fb_layout . _tab . loc ( ) ,
8786 layout_ctx. clone ( ) ,
8887 )
8988 } ;
9089
91- let segments: Arc < [ SegmentSpec ] > = fb
90+ let segments: Arc < [ SegmentSpec ] > = fb_footer
9291 . segment_specs ( )
9392 . ok_or_else ( || vortex_err ! ( "FileLayout missing segment specs" ) ) ?
9493 . iter ( )
0 commit comments