diff --git a/src/query/expression/src/schema.rs b/src/query/expression/src/schema.rs index e7f1904c132df..17c439ce43223 100644 --- a/src/query/expression/src/schema.rs +++ b/src/query/expression/src/schema.rs @@ -1330,14 +1330,12 @@ impl From<&DataType> for ArrowDataType { DataType::Number(ty) => with_number_type!(|TYPE| match ty { NumberDataType::TYPE => ArrowDataType::TYPE, }), - DataType::Decimal(ty) => match ty { - DecimalDataType::Decimal128(s) => { - ArrowDataType::Decimal(s.precision.into(), s.scale.into()) - } - DecimalDataType::Decimal256(s) => { - ArrowDataType::Decimal256(s.precision.into(), s.scale.into()) - } - }, + DataType::Decimal(DecimalDataType::Decimal128(s)) => { + ArrowDataType::Decimal(s.precision.into(), s.scale.into()) + } + DataType::Decimal(DecimalDataType::Decimal256(s)) => { + ArrowDataType::Decimal256(s.precision.into(), s.scale.into()) + } DataType::Timestamp => ArrowDataType::Timestamp(TimeUnit::Microsecond, None), DataType::Date => ArrowDataType::Date32, DataType::Nullable(ty) => ty.as_ref().into(), @@ -1374,12 +1372,6 @@ impl From<&DataType> for ArrowDataType { Box::new(ArrowDataType::LargeBinary), None, ), - DataType::Decimal(DecimalDataType::Decimal128(s)) => { - ArrowDataType::Decimal(s.precision as usize, s.scale as usize) - } - DataType::Decimal(DecimalDataType::Decimal256(s)) => { - ArrowDataType::Decimal256(s.precision as usize, s.scale as usize) - } _ => unreachable!(), } diff --git a/src/query/expression/src/types.rs b/src/query/expression/src/types.rs index 75244d4e24693..2c98853c35725 100755 --- a/src/query/expression/src/types.rs +++ b/src/query/expression/src/types.rs @@ -299,12 +299,6 @@ impl DataType { Scalar::Tuple(tys.iter().map(|ty| ty.default_value()).collect()) } DataType::Variant => Scalar::Variant(vec![]), - DataType::Decimal(DecimalDataType::Decimal128(s)) => { - Scalar::Decimal(DecimalScalar::Decimal128(0.into(), *s)) - } - DataType::Decimal(DecimalDataType::Decimal256(s)) => { - Scalar::Decimal(DecimalScalar::Decimal256(0.into(), *s)) - } _ => unimplemented!(), } diff --git a/src/query/expression/src/values.rs b/src/query/expression/src/values.rs index 86e9402ad42c3..1868be849d613 100755 --- a/src/query/expression/src/values.rs +++ b/src/query/expression/src/values.rs @@ -1503,6 +1503,7 @@ impl ColumnBuilder { (ColumnBuilder::Null { len }, ScalarRef::Null) => *len += 1, (ColumnBuilder::EmptyArray { len }, ScalarRef::EmptyArray) => *len += 1, (ColumnBuilder::Number(builder), ScalarRef::Number(value)) => builder.push(value), + (ColumnBuilder::Decimal(builder), ScalarRef::Decimal(value)) => builder.push(value), (ColumnBuilder::Boolean(builder), ScalarRef::Boolean(value)) => builder.push(value), (ColumnBuilder::String(builder), ScalarRef::String(value)) => { builder.put_slice(value); diff --git a/tests/sqllogictests/suites/base/11_data_type/11_0006_data_type_decimal b/tests/sqllogictests/suites/base/11_data_type/11_0006_data_type_decimal index 7ca3473253cd3..71d9cc1e744f8 100644 --- a/tests/sqllogictests/suites/base/11_data_type/11_0006_data_type_decimal +++ b/tests/sqllogictests/suites/base/11_data_type/11_0006_data_type_decimal @@ -314,6 +314,9 @@ drop table if exists t statement ok drop table if exists t1 +statement ok +drop table if exists t2 + statement ok create table t(c1 decimal(38,2)) @@ -361,8 +364,26 @@ select * from t order by c1 statement error 1002 select * from t1 order by c1 +statement ok +create table t2(c1 decimal(6,2) null) + +statement ok +insert into t2 values(1.23) + +statement ok +insert into t2 values(null); + +query T +select * from t2 order by c1 asc +---- +1.23 +NULL + statement ok drop table if exists t statement ok drop table if exists t1 + +statement ok +drop table if exists t2