Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/sail-execution/proto/sail/plan/physical.proto
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ message TimestampNowUdf {
message SparkTimestampUdf {
optional string timezone = 1;
bool is_try = 2;
bool ansi_mode = 3;
}

message SparkDateUdf {
Expand Down
20 changes: 12 additions & 8 deletions crates/sail-execution/src/codec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ use sail_function::scalar::datetime::spark_time_diff::SparkTimeDiff;
use sail_function::scalar::datetime::spark_time_trunc::SparkTimeTrunc;
use sail_function::scalar::datetime::spark_timestamp::SparkTimestamp;
use sail_function::scalar::datetime::spark_to_chrono_fmt::SparkToChronoFmt;
use sail_function::scalar::datetime::spark_try_to_timestamp::SparkTryToTimestamp;
use sail_function::scalar::datetime::spark_unix_timestamp::SparkUnixTimestamp;
use sail_function::scalar::datetime::spark_window_buckets::SparkWindowBuckets;
use sail_function::scalar::datetime::spark_year::SparkYear;
Expand Down Expand Up @@ -2222,8 +2221,12 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec {
let udf = TimestampNow::new(Arc::from(timezone), time_unit);
return Ok(Arc::new(ScalarUDF::from(udf)));
}
UdfKind::SparkTimestamp(gen::SparkTimestampUdf { timezone, is_try }) => {
let udf = SparkTimestamp::try_new(timezone.map(Arc::from), is_try)?;
UdfKind::SparkTimestamp(gen::SparkTimestampUdf {
timezone,
is_try,
ansi_mode,
}) => {
let udf = SparkTimestamp::try_new(timezone.map(Arc::from), ansi_mode, is_try)?;
return Ok(Arc::new(ScalarUDF::from(udf)));
}
UdfKind::SparkDate(gen::SparkDateUdf { is_try }) => {
Expand Down Expand Up @@ -2441,9 +2444,6 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec {
Ok(Arc::new(ScalarUDF::from(SparkCalendarInterval::new())))
}
"spark_to_chrono_fmt" => Ok(Arc::new(ScalarUDF::from(SparkToChronoFmt::new()))),
"spark_try_to_timestamp" | "try_to_timestamp" => {
Ok(Arc::new(ScalarUDF::from(SparkTryToTimestamp::new())))
}
"spark_expm1" | "expm1" => Ok(Arc::new(ScalarUDF::from(SparkExpm1::new()))),
"spark_ceil" | "ceil" => Ok(Arc::new(ScalarUDF::from(SparkCeil::new()))),
"spark_floor" | "floor" => Ok(Arc::new(ScalarUDF::from(SparkFloor::new()))),
Expand Down Expand Up @@ -2576,7 +2576,6 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec {
|| node_inner.is::<SparkTryParseUrl>()
|| node_inner.is::<SparkTrySubtract>()
|| node_inner.is::<SparkTryToBinary>()
|| node_inner.is::<SparkTryToTimestamp>()
|| node_inner.is::<HllSketchEstimateFunction>()
|| node_inner.is::<HllUnionFunction>()
|| node_inner.is::<ThetaDifferenceFunction>()
Expand Down Expand Up @@ -2680,7 +2679,12 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec {
} else if let Some(func) = node.inner().downcast_ref::<SparkTimestamp>() {
let timezone = func.timezone().map(|x| x.to_string());
let is_try = func.is_try();
UdfKind::SparkTimestamp(gen::SparkTimestampUdf { timezone, is_try })
let ansi_mode = func.ansi_mode();
UdfKind::SparkTimestamp(gen::SparkTimestampUdf {
timezone,
is_try,
ansi_mode,
})
} else if let Some(func) = node.inner().downcast_ref::<SparkDate>() {
let is_try = func.is_try();
UdfKind::SparkDate(gen::SparkDateUdf { is_try })
Expand Down
1 change: 0 additions & 1 deletion crates/sail-function/src/scalar/datetime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ pub mod spark_time_diff;
pub mod spark_time_trunc;
pub mod spark_timestamp;
pub mod spark_to_chrono_fmt;
pub mod spark_try_to_timestamp;
pub mod spark_unix_timestamp;
pub mod spark_window_buckets;
pub mod spark_year;
Expand Down
Loading
Loading