laminar_core/serialization/
mod.rs1pub mod jsonb_tags;
8
9use arrow_array::RecordBatch;
10use arrow_ipc::reader::StreamReader;
11use arrow_ipc::writer::StreamWriter;
12
13pub fn serialize_batch_stream(batch: &RecordBatch) -> Result<Vec<u8>, arrow_schema::ArrowError> {
19 let mut buf = Vec::new();
20 {
21 let mut writer = StreamWriter::try_new(&mut buf, &batch.schema())?;
22 writer.write(batch)?;
23 writer.finish()?;
24 }
25 Ok(buf)
26}
27
28pub fn deserialize_batch_stream(bytes: &[u8]) -> Result<RecordBatch, arrow_schema::ArrowError> {
34 let cursor = std::io::Cursor::new(bytes);
35 let mut reader = StreamReader::try_new(cursor, None)?;
36 reader.next().ok_or_else(|| {
37 arrow_schema::ArrowError::IpcError("no record batch in IPC stream".to_string())
38 })?
39}