Skip to content

Commit 1b6a382

Browse files
authored
Simplify try cast expr evaluation (#16834)
* Simplify try cast expr evaluation * Remove unused imports
1 parent c74fcaf commit 1b6a382

File tree

1 file changed

+3
-14
lines changed

1 file changed

+3
-14
lines changed

datafusion/physical-expr/src/expressions/try_cast.rs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ use std::sync::Arc;
2222

2323
use crate::PhysicalExpr;
2424
use arrow::compute;
25-
use arrow::compute::{cast_with_options, CastOptions};
25+
use arrow::compute::CastOptions;
2626
use arrow::datatypes::{DataType, FieldRef, Schema};
2727
use arrow::record_batch::RecordBatch;
2828
use compute::can_cast_types;
2929
use datafusion_common::format::DEFAULT_FORMAT_OPTIONS;
30-
use datafusion_common::{not_impl_err, Result, ScalarValue};
30+
use datafusion_common::{not_impl_err, Result};
3131
use datafusion_expr::ColumnarValue;
3232

3333
/// TRY_CAST expression casts an expression to a specific data type and returns NULL on invalid cast
@@ -96,18 +96,7 @@ impl PhysicalExpr for TryCastExpr {
9696
safe: true,
9797
format_options: DEFAULT_FORMAT_OPTIONS,
9898
};
99-
match value {
100-
ColumnarValue::Array(array) => {
101-
let cast = cast_with_options(&array, &self.cast_type, &options)?;
102-
Ok(ColumnarValue::Array(cast))
103-
}
104-
ColumnarValue::Scalar(scalar) => {
105-
let array = scalar.to_array()?;
106-
let cast_array = cast_with_options(&array, &self.cast_type, &options)?;
107-
let cast_scalar = ScalarValue::try_from_array(&cast_array, 0)?;
108-
Ok(ColumnarValue::Scalar(cast_scalar))
109-
}
110-
}
99+
value.cast_to(&self.cast_type, Some(&options))
111100
}
112101

113102
fn return_field(&self, input_schema: &Schema) -> Result<FieldRef> {

0 commit comments

Comments
 (0)