From d52d1eb12217f01e8a46196be1bba3edf491a7ca Mon Sep 17 00:00:00 2001 From: evenyag Date: Fri, 9 Sep 2022 17:48:59 +0800 Subject: [PATCH] fix: Only convert LogicalTypeId to ConcreteDataType in tests (#241) LogicalTypeId to ConcreteDataType is only allowed in tests, since some additional info is not stored in LogicalTypeId now. It is just an id, or kind, not contains full type info. --- src/common/function/src/scalars/aggregate/diff.rs | 4 ++-- src/common/function/src/scalars/aggregate/polyval.rs | 2 +- src/datatypes/Cargo.toml | 4 ++++ src/datatypes/src/type_id.rs | 4 ++++ src/storage/Cargo.toml | 1 + src/table-engine/Cargo.toml | 1 - 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/common/function/src/scalars/aggregate/diff.rs b/src/common/function/src/scalars/aggregate/diff.rs index de23c39457..e414434a9c 100644 --- a/src/common/function/src/scalars/aggregate/diff.rs +++ b/src/common/function/src/scalars/aggregate/diff.rs @@ -168,7 +168,7 @@ impl AggregateFunctionCreator for DiffAccumulatorCreator { with_match_primitive_type_id!( input_types[0].logical_type_id(), |$S| { - Ok(ConcreteDataType::list_datatype(PrimitiveType::<<$S as Primitive>::LargestType>::default().logical_type_id().data_type())) + Ok(ConcreteDataType::list_datatype(PrimitiveType::<<$S as Primitive>::LargestType>::default().into())) }, { unreachable!() @@ -182,7 +182,7 @@ impl AggregateFunctionCreator for DiffAccumulatorCreator { with_match_primitive_type_id!( input_types[0].logical_type_id(), |$S| { - Ok(vec![ConcreteDataType::list_datatype(PrimitiveType::<$S>::default().logical_type_id().data_type())]) + Ok(vec![ConcreteDataType::list_datatype(PrimitiveType::<$S>::default().into())]) }, { unreachable!() diff --git a/src/common/function/src/scalars/aggregate/polyval.rs b/src/common/function/src/scalars/aggregate/polyval.rs index 6f0eef4992..d7b37ecbb4 100644 --- a/src/common/function/src/scalars/aggregate/polyval.rs +++ b/src/common/function/src/scalars/aggregate/polyval.rs @@ -237,7 +237,7 @@ impl AggregateFunctionCreator for PolyvalAccumulatorCreator { with_match_primitive_type_id!( input_type, |$S| { - Ok(PrimitiveType::<<$S as Primitive>::LargestType>::default().logical_type_id().data_type()) + Ok(PrimitiveType::<<$S as Primitive>::LargestType>::default().into()) }, { unreachable!() diff --git a/src/datatypes/Cargo.toml b/src/datatypes/Cargo.toml index 39ecbf682b..a022b1c6c5 100644 --- a/src/datatypes/Cargo.toml +++ b/src/datatypes/Cargo.toml @@ -3,6 +3,10 @@ name = "datatypes" version = "0.1.0" edition = "2021" +[features] +default = [] +test = [] + [dependencies.arrow] package = "arrow2" version = "0.10" diff --git a/src/datatypes/src/type_id.rs b/src/datatypes/src/type_id.rs index 5bd4e17463..28a81d13f3 100644 --- a/src/datatypes/src/type_id.rs +++ b/src/datatypes/src/type_id.rs @@ -36,8 +36,12 @@ pub enum LogicalTypeId { } impl LogicalTypeId { + /// Create ConcreteDataType based on this id. This method is for test only as it + /// would lost some info. + /// /// # Panics /// Panics if data type is not supported. + #[cfg(any(test, feature = "test"))] pub fn data_type(&self) -> ConcreteDataType { match self { LogicalTypeId::Null => ConcreteDataType::null_datatype(), diff --git a/src/storage/Cargo.toml b/src/storage/Cargo.toml index e61552e195..c80e6abef2 100644 --- a/src/storage/Cargo.toml +++ b/src/storage/Cargo.toml @@ -37,6 +37,7 @@ uuid = { version = "1.1" , features=["v4"]} [dev-dependencies] atomic_float="0.1" criterion = "0.3" +datatypes = { path = "../datatypes", features = ["test"] } rand = "0.8" tempdir = "0.3" diff --git a/src/table-engine/Cargo.toml b/src/table-engine/Cargo.toml index 5469e76ce8..635a1151bc 100644 --- a/src/table-engine/Cargo.toml +++ b/src/table-engine/Cargo.toml @@ -32,6 +32,5 @@ tempdir = { version = "0.3", optional = true } tokio = { version = "1.0", features = ["full"] } [dev-dependencies] -datatypes = { path = "../datatypes" } tempdir = { version = "0.3" } tokio = { version = "1.18", features = ["full"] }