[
https://issues.apache.org/jira/browse/BEAM-13286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17446079#comment-17446079
]
Brian Hulette commented on BEAM-13286:
--------------------------------------
Looking at Row.java, the internally stored value is supposed to be a
[ReadableInstant|https://github.com/apache/beam/blob/48984603fb74736be2887474b43990b150a87132/sdks/java/core/src/main/java/org/apache/beam/sdk/values/Row.java#L336],
so it's definitely not appropriate to cast this to a DateTime.
The behavior in ZetaSqlBeamTranslationUtils is correct.
> RowJson fails to serialize DATETIMEs produced by ZetaSQL
> --------------------------------------------------------
>
> Key: BEAM-13286
> URL: https://issues.apache.org/jira/browse/BEAM-13286
> Project: Beam
> Issue Type: Bug
> Components: dsl-sql
> Reporter: Brian Hulette
> Assignee: Brian Hulette
> Priority: P2
>
> [ZetaSqlBeamTranslationUtils|https://github.com/apache/beam/blob/48984603fb74736be2887474b43990b150a87132/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlBeamTranslationUtils.java#L254]
> creates joda.time.Instant instances for DATETIME fields. While
> [RowJson|https://github.com/apache/beam/blob/48984603fb74736be2887474b43990b150a87132/sdks/java/core/src/main/java/org/apache/beam/sdk/util/RowJson.java#L530]
> explicitly casts to DateTime when deserializing. This causes a
> ClassCastException for certain Beam SQL TableProviders (specifically any that
> use JsonPayloadSerializerProvider).
> {code}
> Caused by: java.lang.ClassCastException: org.joda.time.Instant
> cannot be cast to org.joda.time.DateTime
> at
> org.apache.beam.sdk.util.RowJson$RowJsonSerializer.writeValue(RowJson.java:530)
> at
> org.apache.beam.sdk.util.RowJson$RowJsonSerializer.writeRow(RowJson.java:495)
> at
> org.apache.beam.sdk.util.RowJson$RowJsonSerializer.serialize(RowJson.java:478)
> at
> org.apache.beam.sdk.util.RowJson$RowJsonSerializer.serialize(RowJson.java:453)
> at
> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
> ... 37 more
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)