You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Max Gekk (Jira)" <ji...@apache.org> on 2026/06/15 07:51:00 UTC
[jira] [Created] (SPARK-57461) Cast between nanosecond-precision timestamp types with different fractional precision
Max Gekk created SPARK-57461:
--------------------------------
Summary: Cast between nanosecond-precision timestamp types with different fractional precision
Key: SPARK-57461
URL: https://issues.apache.org/jira/browse/SPARK-57461
Project: Spark
Issue Type: Sub-task
Components: SQL
Affects Versions: 5.0.0
Reporter: Max Gekk
Umbrella: SPARK-56822 (Timestamps with nanosecond precision).
Support casting a nanosecond-precision timestamp to the same family with a different fractional precision, i.e. TIMESTAMP_NTZ(p1) -> TIMESTAMP_NTZ(p2) and TIMESTAMP_LTZ(p1) -> TIMESTAMP_LTZ(p2) for p1 != p2 (p in 7-9).
Today Cast.scala has no canCast / canAnsiCast rule for an already-nanosecond source to a nanosecond target with a different precision, and the runtime helpers castToTimestampNTZNanos / castToTimestampLTZNanos only handle String / microsecond / DATE sources - their precision parameter is used only for string parsing. As a result CAST(ts7 AS TIMESTAMP_NTZ(9)) (and narrowing CAST(ts9 AS TIMESTAMP_NTZ(7))) fails the type check.
Scope:
- Add canCast / canAnsiCast rules for nanos(p1) -> nanos(p2) within the same family (NTZ->NTZ, LTZ->LTZ).
- Implement interpreted and codegen runtime: widening keeps the value; narrowing truncates (or rounds per FSP rules, aligned with microsecond cast behavior) the sub-microsecond nanos component to the target precision.
- Decide store-assignment / up-cast behavior (coordinate with SPARK-57303): widening p1<p2 as up-cast vs narrowing requiring explicit cast.
- Tests in CastSuite / AnsiCastSuite covering all 7-9 combinations, NTZ and LTZ, ANSI and non-ANSI, including boundary nanos values.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org