File tree Expand file tree Collapse file tree 2 files changed +10
-5
lines changed
Expand file tree Collapse file tree 2 files changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -441,6 +441,7 @@ class SerializedFile : public ParquetFileReader::Contents {
441441 PARQUET_ASSIGN_OR_THROW (
442442 auto footer_buffer,
443443 source_->ReadAt (source_size_ - footer_read_size, footer_read_size));
444+ uint32_t metadata_len = ParseFooterLength (footer_buffer, footer_read_size);
444445 if (properties_.read_flatbuffer_metadata_if_present ()) {
445446 // Try to extract flatbuffer metadata from footer
446447 std::string flatbuffer_data;
@@ -463,14 +464,13 @@ class SerializedFile : public ParquetFileReader::Contents {
463464 auto thrift_metadata =
464465 std::make_unique<format::FileMetaData>(FromFlatbuffer (fb_metadata));
465466 file_metadata_ =
466- FileMetaData::Make (std::move (thrift_metadata), *result , properties_);
467+ FileMetaData::Make (std::move (thrift_metadata), metadata_len , properties_);
467468 return ;
468469 }
469470 }
470471 // If extraction failed or returned 0 (no flatbuffer), fall through to standard
471472 // parsing
472473 }
473- uint32_t metadata_len = ParseFooterLength (footer_buffer, footer_read_size);
474474 int64_t metadata_start = source_size_ - kFooterSize - metadata_len;
475475
476476 std::shared_ptr<::arrow::Buffer> metadata_buffer;
Original file line number Diff line number Diff line change @@ -981,6 +981,14 @@ struct FlatbufferConverter {
981981 std::optional<decltype (To (cm.statistics , rg_idx, col_idx))> statistics;
982982 if (cm.__isset .statistics ) statistics = To (cm.statistics , rg_idx, col_idx);
983983
984+ // Create sub-objects before starting the builder (FlatBuffers requirement).
985+ flatbuffers::Offset<format3::BloomFilterInfo> bloom_filter;
986+ if (cm.__isset .bloom_filter_offset ) {
987+ bloom_filter = format3::CreateBloomFilterInfo (
988+ root, cm.bloom_filter_offset ,
989+ cm.__isset .bloom_filter_length ? cm.bloom_filter_length : 0 );
990+ }
991+
984992 // All offsets are relative to the row group.
985993 const auto & rg = md.row_groups [rg_idx];
986994
@@ -1000,9 +1008,6 @@ struct FlatbufferConverter {
10001008 if (statistics) b.add_statistics (*statistics);
10011009 b.add_is_fully_dict_encoded (To (cm));
10021010 if (cm.__isset .bloom_filter_offset ) {
1003- auto bloom_filter = format3::CreateBloomFilterInfo (
1004- root, cm.bloom_filter_offset ,
1005- cm.__isset .bloom_filter_length ? cm.bloom_filter_length : 0 );
10061011 b.add_bloom_filter (bloom_filter);
10071012 }
10081013
You can’t perform that action at this time.
0 commit comments