@@ -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