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

Function WriteFeatherV1

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

Source from the content-addressed store, hash-verified

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