@@ -562,18 +562,20 @@ namespace sparrow_ipc
562562 return buffers;
563563 }
564564
565- flatbuffers::FlatBufferBuilder get_record_batch_message_builder (const sparrow::record_batch& record_batch, std::optional<org::apache::arrow::flatbuf::CompressionType> compression, std::optional<std:: int64_t > body_size_override, const std::vector<org::apache::arrow::flatbuf::Buffer>* compressed_buffers )
565+ flatbuffers::FlatBufferBuilder get_record_batch_message_builder (const sparrow::record_batch& record_batch, std::optional<org::apache::arrow::flatbuf::CompressionType> compression)
566566 {
567- const std::vector<org::apache::arrow::flatbuf::FieldNode> nodes = create_fieldnodes (record_batch);
568- const std::vector<org::apache::arrow::flatbuf::Buffer>& buffers = compressed_buffers ? *compressed_buffers : get_buffers (record_batch);
569567 flatbuffers::FlatBufferBuilder record_batch_builder;
570- auto nodes_offset = record_batch_builder.CreateVectorOfStructs (nodes);
571- auto buffers_offset = record_batch_builder.CreateVectorOfStructs (buffers);
572568 flatbuffers::Offset<org::apache::arrow::flatbuf::BodyCompression> compression_offset = 0 ;
569+ std::optional<std::vector<org::apache::arrow::flatbuf::Buffer>> compressed_buffers;
573570 if (compression)
574571 {
572+ compressed_buffers = generate_compressed_buffers (record_batch, compression.value ());
575573 compression_offset = org::apache::arrow::flatbuf::CreateBodyCompression (record_batch_builder, compression.value (), org::apache::arrow::flatbuf::BodyCompressionMethod::BUFFER);
576574 }
575+ const auto & buffers = compressed_buffers ? *compressed_buffers : get_buffers (record_batch);
576+ const std::vector<org::apache::arrow::flatbuf::FieldNode> nodes = create_fieldnodes (record_batch);
577+ auto nodes_offset = record_batch_builder.CreateVectorOfStructs (nodes);
578+ auto buffers_offset = record_batch_builder.CreateVectorOfStructs (buffers);
577579 const auto record_batch_offset = org::apache::arrow::flatbuf::CreateRecordBatch (
578580 record_batch_builder,
579581 static_cast <int64_t >(record_batch.nb_rows ()),
@@ -583,7 +585,7 @@ namespace sparrow_ipc
583585 0 // TODO :variadic buffer Counts
584586 );
585587
586- const int64_t body_size = body_size_override. value_or ( calculate_body_size (record_batch, compression) );
588+ const int64_t body_size = calculate_body_size (record_batch, compression);
587589 const auto record_batch_message_offset = org::apache::arrow::flatbuf::CreateMessage (
588590 record_batch_builder,
589591 org::apache::arrow::flatbuf::MetadataVersion::V5,
0 commit comments