From 8dbd277f90a7251806d90ccbe002b51954c63526 Mon Sep 17 00:00:00 2001 From: sundy-li <543950155@qq.com> Date: Mon, 2 Aug 2021 11:43:22 +0800 Subject: [PATCH] update tests --- common/datavalues/src/data_value.rs | 33 ++++++++++++++++++- common/datavalues/src/macros.rs | 4 ++- .../store/src/executor/action_handler.rs | 7 ++-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/common/datavalues/src/data_value.rs b/common/datavalues/src/data_value.rs index 9e9e2632ee477..197b8fb3c2144 100644 --- a/common/datavalues/src/data_value.rs +++ b/common/datavalues/src/data_value.rs @@ -15,8 +15,10 @@ use common_exception::ErrorCode; use common_exception::Result; use common_io::prelude::*; +use crate::arrays::ListBooleanArrayBuilder; use crate::arrays::ListBuilderTrait; use crate::arrays::ListPrimitiveArrayBuilder; +use crate::arrays::ListUtf8ArrayBuilder; use crate::data_type::*; use crate::prelude::*; use crate::series::IntoSeries; @@ -183,7 +185,36 @@ impl DataValue { DataType::Float32 => build_list_series! {Float32Type, values, size, data_type }, DataType::Float64 => build_list_series! {Float64Type, values, size, data_type }, - // DataType::Utf8 => Ok(Arc::new(build_list!(StringBuilder, Utf8, values, size))), + DataType::Boolean => { + let mut builder = ListBooleanArrayBuilder::with_capacity(0, size); + match values { + Some(v) => { + let series = DataValue::try_into_data_array(v, data_type)?; + (0..size).for_each(|_| { + builder.append_series(&series); + }); + } + None => (0..size).for_each(|_| { + builder.append_null(); + }), + } + Ok(builder.finish().into_series()) + } + DataType::Utf8 => { + let mut builder = ListUtf8ArrayBuilder::with_capacity(0, size); + match values { + Some(v) => { + let series = DataValue::try_into_data_array(v, data_type)?; + (0..size).for_each(|_| { + builder.append_series(&series); + }); + } + None => (0..size).for_each(|_| { + builder.append_null(); + }), + } + Ok(builder.finish().into_series()) + } other => Result::Err(ErrorCode::BadDataValueType(format!( "Unexpected type:{} for DataValue List", other diff --git a/common/datavalues/src/macros.rs b/common/datavalues/src/macros.rs index 4a3d0372ef44e..37065e1a09250 100644 --- a/common/datavalues/src/macros.rs +++ b/common/datavalues/src/macros.rs @@ -133,7 +133,9 @@ macro_rules! build_list_series { }), Some(v) => { let series = DataValue::try_into_data_array(&v, $D_TYPE)?; - builder.append_series(&series); + (0..$SIZE).for_each(|_| { + builder.append_series(&series); + }) } } Ok(builder.finish().into_series()) diff --git a/fusestore/store/src/executor/action_handler.rs b/fusestore/store/src/executor/action_handler.rs index cfc03c2c4160a..5a7a523748905 100644 --- a/fusestore/store/src/executor/action_handler.rs +++ b/fusestore/store/src/executor/action_handler.rs @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0. -use std::fs::File; +use std::io::Cursor; use std::pin::Pin; use std::sync::Arc; @@ -172,7 +172,10 @@ impl ActionHandler { let schema = plan.schema; let projection = (0..schema.fields().len()).collect::>(); - let reader = File::open(&part_file)?; + // TODO expose a reader from fs + let content = self.fs.read_all(&part_file).await?; + let reader = Cursor::new(content); + let reader = read::RecordReader::try_new( reader, Some(projection.to_vec()),