From 63a1595969078173060d541154fe6deaaf645ac0 Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Tue, 21 Mar 2023 08:56:06 +0100 Subject: [PATCH 1/2] feat: async ipc writer: don't accept &schema if we clone --- src/io/ipc/write/file_async.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/io/ipc/write/file_async.rs b/src/io/ipc/write/file_async.rs index 3ee7e7ee893..4e115a26942 100644 --- a/src/io/ipc/write/file_async.rs +++ b/src/io/ipc/write/file_async.rs @@ -78,13 +78,13 @@ where /// Create a new file writer. pub fn new( writer: W, - schema: &Schema, + schema: Schema, ipc_fields: Option>, options: WriteOptions, ) -> Self { let fields = ipc_fields.unwrap_or_else(|| default_ipc_fields(&schema.fields)); let encoded = EncodedData { - ipc_message: schema_to_bytes(schema, &fields), + ipc_message: schema_to_bytes(&schema, &fields), arrow_data: vec![], }; let task = Some(Self::start(writer, encoded).boxed()); @@ -94,7 +94,7 @@ where options, fields, offset: 0, - schema: schema.clone(), + schema, dictionary_tracker: DictionaryTracker { dictionaries: Default::default(), cannot_replace: true, From a49944d269448a74223e97ddeeca4e01e3dfeed9 Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Tue, 21 Mar 2023 09:05:57 +0100 Subject: [PATCH 2/2] fix signatures --- src/io/ipc/write/file_async.rs | 2 +- tests/it/io/ipc/write_file_async.rs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/io/ipc/write/file_async.rs b/src/io/ipc/write/file_async.rs index 4e115a26942..02dd5a4c7f8 100644 --- a/src/io/ipc/write/file_async.rs +++ b/src/io/ipc/write/file_async.rs @@ -37,7 +37,7 @@ type WriteOutput = (usize, Option, Vec, Option); /// let mut buffer = Cursor::new(vec![]); /// let mut sink = FileSink::new( /// &mut buffer, -/// &schema, +/// schema, /// None, /// Default::default(), /// ); diff --git a/tests/it/io/ipc/write_file_async.rs b/tests/it/io/ipc/write_file_async.rs index d1963184da3..d510f20ba25 100644 --- a/tests/it/io/ipc/write_file_async.rs +++ b/tests/it/io/ipc/write_file_async.rs @@ -22,7 +22,12 @@ async fn write_( let mut result = AsyncCursor::new(vec![]); let options = WriteOptions { compression: None }; - let mut sink = FileSink::new(&mut result, schema, Some(ipc_fields.to_vec()), options); + let mut sink = FileSink::new( + &mut result, + schema.clone(), + Some(ipc_fields.to_vec()), + options, + ); for batch in batches { sink.feed((batch, Some(ipc_fields)).into()).await?; }