From b5a9b0991ef91ea8d692441f0dea32099089ed0c Mon Sep 17 00:00:00 2001 From: Yijie Shen Date: Tue, 21 Sep 2021 15:32:43 +0800 Subject: [PATCH] remove buffer --- examples/extension.rs | 4 ++-- src/io/ipc/write/writer.rs | 11 +++++------ tests/it/io/ipc/write/file.rs | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/examples/extension.rs b/examples/extension.rs index 8462dd6c79f..e6efd061853 100644 --- a/examples/extension.rs +++ b/examples/extension.rs @@ -41,9 +41,9 @@ fn write_ipc(writer: W, array: impl Array + 'static) -> Result< let batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(array)])?; - writer.write(&batch); + writer.write(&batch)?; - writer.into_inner() + Ok(writer.into_inner()) } fn read_ipc(reader: &[u8]) -> Result { diff --git a/src/io/ipc/write/writer.rs b/src/io/ipc/write/writer.rs index 6946cb02d75..76811dc12a1 100644 --- a/src/io/ipc/write/writer.rs +++ b/src/io/ipc/write/writer.rs @@ -20,7 +20,7 @@ //! The `FileWriter` and `StreamWriter` have similar interfaces, //! however the `FileWriter` expects a reader that supports `Seek`ing -use std::io::{Error, Write, BufWriter}; +use std::io::Write; use super::super::ARROW_MAGIC; use super::{ @@ -39,7 +39,7 @@ use crate::record_batch::RecordBatch; pub struct FileWriter { /// The object to write to - writer: BufWriter, + writer: W, /// IPC write options write_options: IpcWriteOptions, /// A reference to the schema, used in validating record batches @@ -65,11 +65,10 @@ impl FileWriter { /// Try create a new writer with IpcWriteOptions pub fn try_new_with_options( - writer: W, + mut writer: W, schema: &Schema, write_options: IpcWriteOptions, ) -> Result { - let mut writer = BufWriter::new(writer); // write magic to header writer.write_all(&ARROW_MAGIC[..])?; // create an 8-byte boundary after the header @@ -92,8 +91,8 @@ impl FileWriter { }) } - pub fn into_inner(self) -> Result { - self.writer.into_inner().map_err(|e| Error::from(e).into()) + pub fn into_inner(self) -> W { + self.writer } /// Write a record batch to the file diff --git a/tests/it/io/ipc/write/file.rs b/tests/it/io/ipc/write/file.rs index f821d31fc35..005b51403ae 100644 --- a/tests/it/io/ipc/write/file.rs +++ b/tests/it/io/ipc/write/file.rs @@ -17,7 +17,7 @@ fn round_trip(batch: RecordBatch) -> Result<()> { let mut writer = FileWriter::try_new_with_options(result, batch.schema(), options)?; writer.write(&batch)?; writer.finish()?; - writer.into_inner()? + writer.into_inner() }; let mut reader = Cursor::new(written_result); let metadata = read_file_metadata(&mut reader)?; @@ -49,7 +49,7 @@ fn test_file(version: &str, file_name: &str) -> Result<()> { writer.write(&batch)?; } writer.finish()?; - writer.into_inner()? + writer.into_inner() }; let mut reader = Cursor::new(written_result); let metadata = read_file_metadata(&mut reader)?;