[
https://issues.apache.org/jira/browse/FLINK-22354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17325823#comment-17325823
]
Timo Walther commented on FLINK-22354:
--------------------------------------
I'm fine with precision 3 if this is a well-chosen decision. Regarding the
configurable precision, if the functions would use the new built-in function
stack this change would be straight forward and consistent. We should aim to
support the configurable precious ideally in this release. We should not block
the release on this, but if we manage to get it in the story would definitely
be rounder. Because users are used to the semantics of those functions.
> Failed to define watermark on computed column of CURRENT_TIMESTAMP and
> LOCALTIMESTAMP
> -------------------------------------------------------------------------------------
>
> Key: FLINK-22354
> URL: https://issues.apache.org/jira/browse/FLINK-22354
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / API
> Reporter: Jark Wu
> Assignee: Leonard Xu
> Priority: Blocker
> Fix For: 1.13.0, 1.14.0
>
>
> It is very common to define watermarks on {{localtimestamp}} and
> {{current_tiemstamp}} to support *ingestion time*. However, the following
> DDLs failed in v1.13. I also tested the following DDLs can pass in v1.12.1,
> so this is a regression.
> The root cause may be introduced by FLINK-21435 which adds a [strict check to
> only allow precision =
> 3|https://github.com/apache/flink/blob/f51168041512b0473decabb2088c1ff4fa4f34bc/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/DefaultSchemaResolver.java#L225]
> (precision = 0 should also can be time attribute), however the precision of
> return type of {{current_timestamp}} and {{localtimestamp}} are 0 (another
> long-lived bug). We should fix them both.
> {code:sql}
> Flink SQL> create table datagen_source (
> > order_number BIGINT,
> > price int,
> > buyer string,
> > ts as current_timestamp,
> > proctime as proctime(),
> > watermark for ts as ts - interval '0.001' second
> > ) with (
> > 'connector' = 'datagen',
> > 'rows-per-second' = '1'
> > );
> [ERROR] Could not execute SQL statement. Reason:
> org.apache.flink.table.api.ValidationException: Invalid data type of time
> field for watermark definition. The field must be of type TIMESTAMP(3) or
> TIMESTAMP_LTZ(3).
> Flink SQL> create table datagen_source (
> > order_number BIGINT,
> > price int,
> > buyer string,
> > ts as cast(current_timestamp as timestamp_ltz(3)),
> > proctime as proctime(),
> > watermark for ts as ts - interval '0.001' second
> > ) with (
> > 'connector' = 'datagen',
> > 'rows-per-second' = '1'
> > );
> [INFO] Execute statement succeed.
> Flink SQL> create table datagen_source2 (
> > order_number BIGINT,
> > price int,
> > buyer string,
> > ts as localtimestamp,
> > proctime as proctime(),
> > watermark for ts as ts - interval '0.001' second
> > ) with (
> > 'connector' = 'datagen',
> > 'rows-per-second' = '1'
> > );
> [ERROR] Could not execute SQL statement. Reason:
> org.apache.flink.table.api.ValidationException: Invalid data type of time
> field for watermark definition. The field must be of type TIMESTAMP(3) or
> TIMESTAMP_LTZ(3).
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)