[ https://issues.apache.org/jira/browse/FLINK-22354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17325768#comment-17325768 ]
Jark Wu commented on FLINK-22354: --------------------------------- [~twalthr], I think we can't provide batch&streaming unified/consistent result for ingestion-time and processing-time. So I think {{CURRENT_ROW_TIMESTAMP}} or {{CURRENT_TIMESTAMP}} doesn't make big difference if using batch mode. Besides, we can't use {{PROCTIME()}} for this purpose, because it will be a processing-time window. The core differences between ingestion-time and processing-time is where the time is materialized. Ingestion-time is useful in some cases, for example, cascading window aggreation, because the second processing-time windows will re-calculate assigned windows according to wall-clock instead of the window rowtime/proctime. > 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)