diff --git a/datafusion/common/src/scalar.rs b/datafusion/common/src/scalar.rs index b837341c392e..b30238762a36 100644 --- a/datafusion/common/src/scalar.rs +++ b/datafusion/common/src/scalar.rs @@ -917,6 +917,11 @@ impl ScalarValue { ScalarValue::iter_to_decimal_array(scalars, precision, scale)?; Arc::new(decimal_array) } + DataType::Decimal256(_, _) => { + return Err(DataFusionError::Internal( + "Decimal256 is not supported for ScalarValue".to_string(), + )) + } DataType::Null => ScalarValue::iter_to_null_array(scalars), DataType::Boolean => build_array_primitive!(BooleanArray, Boolean), DataType::Float32 => build_array_primitive!(Float32Array, Float32), diff --git a/datafusion/core/src/physical_optimizer/pruning.rs b/datafusion/core/src/physical_optimizer/pruning.rs index 2265675b300b..b1242b15032f 100644 --- a/datafusion/core/src/physical_optimizer/pruning.rs +++ b/datafusion/core/src/physical_optimizer/pruning.rs @@ -800,7 +800,7 @@ mod tests { use crate::from_slice::FromSlice; use crate::logical_plan::{col, lit}; use crate::{assert_batches_eq, physical_optimizer::pruning::StatisticsType}; - use arrow::array::DecimalArray; + use arrow::array::Decimal128Array; use arrow::{ array::{BinaryArray, Int32Array, Int64Array, StringArray}, datatypes::{DataType, TimeUnit}, @@ -825,13 +825,13 @@ mod tests { Self { min: Arc::new( min.into_iter() - .collect::() + .collect::() .with_precision_and_scale(precision, scale) .unwrap(), ), max: Arc::new( max.into_iter() - .collect::() + .collect::() .with_precision_and_scale(precision, scale) .unwrap(), ), diff --git a/datafusion/core/tests/sql/mod.rs b/datafusion/core/tests/sql/mod.rs index 2a45b342f7b5..7f235b1ba622 100644 --- a/datafusion/core/tests/sql/mod.rs +++ b/datafusion/core/tests/sql/mod.rs @@ -571,25 +571,25 @@ async fn register_tpch_csv_data( match field.data_type() { DataType::Utf8 => { let sb = col.as_any_mut().downcast_mut::().unwrap(); - sb.append_value(val)?; + sb.append_value(val); } DataType::Date32 => { let sb = col.as_any_mut().downcast_mut::().unwrap(); let dt = NaiveDate::parse_from_str(val.trim(), "%Y-%m-%d").unwrap(); let dt = dt.sub(NaiveDate::from_ymd(1970, 1, 1)).num_days() as i32; - sb.append_value(dt)?; + sb.append_value(dt); } DataType::Int32 => { let sb = col.as_any_mut().downcast_mut::().unwrap(); - sb.append_value(val.trim().parse().unwrap())?; + sb.append_value(val.trim().parse().unwrap()); } DataType::Int64 => { let sb = col.as_any_mut().downcast_mut::().unwrap(); - sb.append_value(val.trim().parse().unwrap())?; + sb.append_value(val.trim().parse().unwrap()); } DataType::Float64 => { let sb = col.as_any_mut().downcast_mut::().unwrap(); - sb.append_value(val.trim().parse().unwrap())?; + sb.append_value(val.trim().parse().unwrap()); } _ => Err(DataFusionError::Plan(format!( "Not implemented: {}", diff --git a/datafusion/proto/src/to_proto.rs b/datafusion/proto/src/to_proto.rs index fd5276ca8bc9..60f4079da2ba 100644 --- a/datafusion/proto/src/to_proto.rs +++ b/datafusion/proto/src/to_proto.rs @@ -223,6 +223,9 @@ impl From<&DataType> for protobuf::arrow_type::ArrowTypeEnum { whole: *whole as u64, fractional: *fractional as u64, }), + DataType::Decimal256(_, _) => { + unimplemented!("The Decimal256 data type is not yet supported") + } DataType::Map(_, _) => { unimplemented!("The Map data type is not yet supported") } @@ -1237,7 +1240,8 @@ impl TryFrom<&DataType> for protobuf::scalar_type::Datatype { | DataType::Union(_, _, _) | DataType::Dictionary(_, _) | DataType::Map(_, _) - | DataType::Decimal(_, _) => { + | DataType::Decimal(_, _) + | DataType::Decimal256(_, _) => { return Err(Error::invalid_scalar_type(val)); } };