From ea40616cfe2f5d2071ec29750f87d29aa062b0aa Mon Sep 17 00:00:00 2001 From: Jiachun Feng Date: Fri, 12 Aug 2022 10:09:23 +0800 Subject: [PATCH] chore: avoid clone column names (#161) --- src/storage/src/write_batch.rs | 43 +++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/storage/src/write_batch.rs b/src/storage/src/write_batch.rs index 4e3002e662..5176169eba 100644 --- a/src/storage/src/write_batch.rs +++ b/src/storage/src/write_batch.rs @@ -627,28 +627,33 @@ pub mod codec { .map( |(ext, mtn)| match MutationType::from_i32(ext.mutation_type) { Some(MutationType::Put) => { - let valid_column_names = if ext.column_null_mask.is_empty() { - column_names.clone() - } else { - bit_vec::BitVec::from_slice(&ext.column_null_mask) - .into_iter() - .zip(column_names.iter()) - .filter(|(is_null, _)| !*is_null) - .map(|(_, column_name)| column_name.clone()) - .collect::>() + let gen_mutation_put = |valid_columns: &[String]| { + let mut put_data = PutData::with_num_columns(valid_columns.len()); + + let res = valid_columns + .iter() + .zip(mtn) + .map(|(name, vector)| { + put_data.add_column_by_name(name, vector.clone()) + }) + .collect::>>(); + + res.map(|_| Mutation::Put(put_data)) }; - let mut put_data = PutData::with_num_columns(valid_column_names.len()); + if ext.column_null_mask.is_empty() { + gen_mutation_put(&column_names) + } else { + let valid_columns = + bit_vec::BitVec::from_slice(&ext.column_null_mask) + .into_iter() + .zip(column_names.iter()) + .filter(|(is_null, _)| !*is_null) + .map(|(_, column_name)| column_name.clone()) + .collect::>(); - let res = valid_column_names - .iter() - .zip(mtn) - .map(|(name, vector)| { - put_data.add_column_by_name(name, vector.clone()) - }) - .collect::>>(); - - res.map(|_| Mutation::Put(put_data)) + gen_mutation_put(&valid_columns) + } } Some(MutationType::Delete) => { todo!("delete mutation")