[
https://issues.apache.org/jira/browse/SPARK-57552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18091237#comment-18091237
]
Max Gekk commented on SPARK-57552:
----------------------------------
Closing as a duplicate of SPARK-57618, which implements bidirectional casts
between TIME(p) and the corresponding TIMESTAMP type for q in [6, 9] in a
single change — covering both the microsecond member (q=6) and the nanosecond
members (q in [7, 9]) that this ticket scoped separately.
> Support cast between TIME and TIMESTAMP_NTZ(p) for p in [7, 9]
> --------------------------------------------------------------
>
> Key: SPARK-57552
> URL: https://issues.apache.org/jira/browse/SPARK-57552
> Project: Spark
> Issue Type: Sub-task
> Components: SQL
> Affects Versions: 4.3.0
> Reporter: Max Gekk
> Priority: Major
>
> h2. What
> Support {{CAST}} in both directions between {{TIME}} and the nanosecond
> timestamp type
> {{TIMESTAMP_NTZ(p)}} ({{TimestampNTZNanosType}}, p in 7..9).
> h2. Why
> ANSI SQL requires TIME <-> TIMESTAMP to be a valid cast (6.13 <cast
> specification>).
> SPARK-52617 covers the microsecond {{TimestampNTZType}}; this ticket adds the
> nanosecond-precision {{TimestampNTZNanosType}} target/source. Depends on the
> TIME
> precision-9 extension.
> h2. Semantics (ANSI)
> * {{CAST(time AS TIMESTAMP_NTZ(p))}}: combine the time-of-day with
> {{CURRENT_DATE}} to form
> the local date-time; fractional seconds carried at the target precision p.
> * {{CAST(ts AS TIME(q))}}: drop the date, keep the time-of-day,
> truncate/round fractional
> seconds to q.
> h2. Scope
> * Add the {{canCast}}/{{canAnsiCast}} entries in {{Cast.scala}} and the
> runtime + codegen
> cast paths.
> * Reuse the existing same-family nanos cross-precision floor helpers in
> {{SparkDateTimeUtils}} ({{truncateNanosWithinMicroToPrecision}} / the
> {{TimestampNanosVal}} floor). {{TIME}} stores nanos-of-day ({{Long}});
> {{TimestampNTZNanosType}} stores epoch-micros ({{Long}}) +
> nanos-within-micro ({{Short}}).
> * Handle precision narrowing/widening between TIME(q) and TIMESTAMP_NTZ(p).
> h2. Acceptance criteria
> * Both cast directions work for all precision combinations of TIME(0..9) and
> TIMESTAMP_NTZ(7..9), with correct truncation.
> * ANSI and non-ANSI modes covered; tests added to {{CastSuiteBase}} and the
> SQL golden files.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]