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

Function WriteFeatherV1

cpp/src/arrow/ipc/feather.cc:671–705  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

669}
670
671Status WriteFeatherV1(const Table& table, io::OutputStream* dst) {
672 // Preamble
673 int64_t bytes_written;
674 RETURN_NOT_OK(WritePadded(dst, reinterpret_cast<const uint8_t*>(kFeatherV1MagicBytes),
675 strlen(kFeatherV1MagicBytes), &bytes_written));
676
677 // Write columns
678 flatbuffers::FlatBufferBuilder fbb;
679 std::vector<flatbuffers::Offset<fbs::Column>> fb_columns;
680 for (int i = 0; i < table.num_columns(); ++i) {
681 ColumnMetadata col;
682 RETURN_NOT_OK(WriteColumnV1(*table.column(i), dst, &col));
683 auto fb_column = fbs::CreateColumn(
684 fbb, fbb.CreateString(table.field(i)->name()), GetPrimitiveArray(fbb, col.values),
685 ToFlatbufferEnum(col.meta_type), col.WriteMetadata(fbb),
686 /*user_metadata=*/0);
687 fb_columns.push_back(fb_column);
688 }
689
690 // Finalize file footer
691 auto root = fbs::CreateCTable(fbb, /*description=*/0, table.num_rows(),
692 fbb.CreateVector(fb_columns), kFeatherV1Version,
693 /*metadata=*/0);
694 fbb.Finish(root);
695 auto buffer = std::make_shared<Buffer>(fbb.GetBufferPointer(),
696 static_cast<int64_t>(fbb.GetSize()));
697
698 // Writer metadata
699 RETURN_NOT_OK(WritePadded(dst, buffer->data(), buffer->size(), &bytes_written));
700 uint32_t metadata_size = static_cast<uint32_t>(bytes_written);
701
702 // Footer: metadata length, magic bytes
703 RETURN_NOT_OK(dst->Write(&metadata_size, sizeof(uint32_t)));
704 return dst->Write(kFeatherV1MagicBytes, strlen(kFeatherV1MagicBytes));
705}
706
707// ----------------------------------------------------------------------
708// Reader V2

Callers 1

WriteTableFunction · 0.85

Calls 15

WritePaddedFunction · 0.85
WriteColumnV1Function · 0.85
CreateColumnFunction · 0.85
GetPrimitiveArrayFunction · 0.85
ToFlatbufferEnumFunction · 0.85
CreateCTableFunction · 0.85
push_backMethod · 0.80
num_columnsMethod · 0.45
columnMethod · 0.45
nameMethod · 0.45
fieldMethod · 0.45
WriteMetadataMethod · 0.45

Tested by

no test coverage detected