in crates/core/src/file_group/log_file/content.rs [80:108]
fn decode_avro_record_content(
&self,
mut reader: impl Read,
writer_schema: &AvroSchema,
) -> Result<Vec<RecordBatch>> {
let mut format_version = [0u8; 4];
reader.read_exact(&mut format_version)?;
let format_version = u32::from_be_bytes(format_version);
if format_version != 3 {
return Err(CoreError::LogBlockError(format!(
"Unsupported delete record format version: {format_version}"
)));
}
let mut record_count = [0u8; 4];
reader.read_exact(&mut record_count)?;
let record_count = u32::from_be_bytes(record_count);
let record_content_reader =
AvroDataBlockContentReader::new(reader, writer_schema, record_count);
let mut avro_arrow_array_reader =
AvroArrowArrayReader::try_new(record_content_reader, writer_schema, None)?;
let mut batches = Vec::new();
while let Some(batch) = avro_arrow_array_reader.next_batch(self.batch_size) {
let batch = batch.map_err(CoreError::ArrowError)?;
batches.push(batch);
}
Ok(batches)
}