Skip to content

Commit 0e3551c

Browse files
committed
Add cast_options accessor to CastColumnExpr
Expose configured cast options via a new accessor on CastColumnExpr for consumers like proto serialization. Update cast-column serialization to utilize the actual options for safe, format_options, and cast_options fields instead of relying on defaults.
1 parent 2bb629b commit 0e3551c

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ impl CastColumnExpr {
108108
pub fn target_field(&self) -> &FieldRef {
109109
&self.target_field
110110
}
111+
112+
/// Options forwarded to [`cast_column`].
113+
pub fn cast_options(&self) -> &CastOptions<'static> {
114+
&self.cast_options
115+
}
111116
}
112117

113118
impl Display for CastColumnExpr {

datafusion/proto/src/physical_plan/to_proto.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use arrow::compute::CastOptions;
2222
use arrow::datatypes::Schema;
2323
use arrow::ipc::writer::StreamWriter;
2424
use arrow::util::display::{DurationFormat, FormatOptions as ArrowFormatOptions};
25-
use datafusion_common::format::DEFAULT_CAST_OPTIONS;
2625
use datafusion_common::{
2726
DataFusionError, Result, internal_datafusion_err, internal_err, not_impl_err,
2827
};
@@ -375,7 +374,7 @@ pub fn serialize_physical_expr(
375374
))),
376375
})
377376
} else if let Some(cast_column) = expr.downcast_ref::<CastColumnExpr>() {
378-
let cast_options = serialize_cast_options(&DEFAULT_CAST_OPTIONS)?;
377+
let cast_options = serialize_cast_options(cast_column.cast_options())?;
379378
let format_options = cast_options
380379
.format_options
381380
.clone()
@@ -391,7 +390,7 @@ pub fn serialize_physical_expr(
391390
)?)),
392391
input_field: Some(cast_column.input_field().as_ref().try_into()?),
393392
target_field: Some(cast_column.target_field().as_ref().try_into()?),
394-
safe: DEFAULT_CAST_OPTIONS.safe,
393+
safe: cast_column.cast_options().safe,
395394
format_options: Some(format_options),
396395
cast_options: Some(cast_options),
397396
}),

0 commit comments

Comments
 (0)