[ 
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)

Reply via email to