MCPcopy Create free account
hub / github.com/apache/arrow / WriteFileFooter

Function WriteFileFooter

cpp/src/arrow/ipc/metadata_internal.cc:1405–1442  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1403}
1404
1405Status WriteFileFooter(const Schema& schema, const std::vector<FileBlock>& dictionaries,
1406 const std::vector<FileBlock>& record_batches,
1407 const std::shared_ptr<const KeyValueMetadata>& metadata,
1408 io::OutputStream* out) {
1409 FBB fbb;
1410
1411 flatbuffers::Offset<flatbuf::Schema> fb_schema;
1412 DictionaryFieldMapper mapper(schema);
1413 RETURN_NOT_OK(SchemaToFlatbuffer(fbb, schema, mapper, &fb_schema));
1414
1415#ifndef NDEBUG
1416 for (size_t i = 0; i < dictionaries.size(); ++i) {
1417 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].offset)) << i;
1418 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].metadata_length)) << i;
1419 DCHECK(bit_util::IsMultipleOf8(dictionaries[i].body_length)) << i;
1420 }
1421
1422 for (size_t i = 0; i < record_batches.size(); ++i) {
1423 DCHECK(bit_util::IsMultipleOf8(record_batches[i].offset)) << i;
1424 DCHECK(bit_util::IsMultipleOf8(record_batches[i].metadata_length)) << i;
1425 DCHECK(bit_util::IsMultipleOf8(record_batches[i].body_length)) << i;
1426 }
1427#endif
1428
1429 auto fb_dictionaries = FileBlocksToFlatbuffer(fbb, dictionaries);
1430 auto fb_record_batches = FileBlocksToFlatbuffer(fbb, record_batches);
1431
1432 auto fb_custom_metadata = SerializeCustomMetadata(fbb, metadata);
1433
1434 auto footer =
1435 flatbuf::CreateFooter(fbb, kCurrentMetadataVersion, fb_schema, fb_dictionaries,
1436 fb_record_batches, fb_custom_metadata);
1437 fbb.Finish(footer);
1438
1439 int32_t size = fbb.GetSize();
1440
1441 return out->Write(fbb.GetBufferPointer(), size);
1442}
1443
1444// ----------------------------------------------------------------------
1445

Callers 1

CloseMethod · 0.85

Calls 9

SchemaToFlatbufferFunction · 0.85
IsMultipleOf8Function · 0.85
FileBlocksToFlatbufferFunction · 0.85
SerializeCustomMetadataFunction · 0.85
CreateFooterFunction · 0.85
sizeMethod · 0.45
FinishMethod · 0.45
GetSizeMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected