fn decode_avro_record_content()

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)
    }