[
https://issues.apache.org/jira/browse/FLINK-17091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17105158#comment-17105158
]
Paul Lin commented on FLINK-17091:
----------------------------------
Regarding the bridging class mechanism, I agree that it should be fixed. I've
previously run into a related issue, FLINK-16693 FYI. IMHO, the root cause is
that currently `DescriptorProperties` does not carry the information about the
conversion class of DataType, so even if the source declares
`DataTypes.Timestamp().bridgedTo(long.class)`, the TableSourceFactory would get
`DataTypes.Timestamp()`.
But I think the bridging class mechanism is not closely related in this case.
Because now the valid conversion classes of Timestamp is LocalDateTime and
java.sql.Timestamp but not long, so we still need
AvroRow(De)SerializationSchema to do the LocalDateTime/java.sql.Timestamp to
long conversion. What do you think? [~dwysakowicz]
> AvroRow(De)SerializationSchema doesn't support new Timestamp conversion
> classes
> -------------------------------------------------------------------------------
>
> Key: FLINK-17091
> URL: https://issues.apache.org/jira/browse/FLINK-17091
> Project: Flink
> Issue Type: Bug
> Components: Formats (JSON, Avro, Parquet, ORC, SequenceFile)
> Affects Versions: 1.10.0
> Reporter: Paul Lin
> Priority: Major
>
> AvroRow(De)SerializationSchema doesn't know how to convert the new physical
> classes of Timestamp (eg. java.time.Date) to/from Avro's int/long based
> timestamp. Currently, when encountering objects of the new physical classes,
> AvroRow(De)SerializationSchema just ignores them and passes them to Avro's
> GenericDatumWriter/Reader, which leads to ClassCastException thrown by
> GenericDatumWriter/Reader. See
> [AvroRowSerializationSchema|https://github.com/apache/flink/blob/master/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/AvroRowSerializationSchema.java#L251].
> To fix this problem, we should support LocalTime/LocalDate/LocalDateTime
> conversion to int/long in AvroRowSerializationSchema, and support int/long
> conversion to LocalTime/LocalDate/LocalDateTime based on logical
> types(Types.LOCAL_TIME/Types.LOCAL_DATE/Types.LOCAL_DATE_TIME) in
> AvroRowDeserializationSchema.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)