ASF GitHub Bot commented on FLINK-7337:

Github user xccui commented on a diff in the pull request:

    --- Diff: 
    @@ -667,30 +719,62 @@ abstract class StreamTableEnvironment(
         // get CRow plan
         val plan: DataStream[CRow] = translateToCRow(logicalPlan, queryConfig)
    +    val rowtimeFields = logicalType
    +      .getFieldList.asScala
    +      .filter(f => FlinkTypeFactory.isRowtimeIndicatorType(f.getType))
    +    // convert the input type for the conversion mapper
    +    // the input will be changed in the OutputRowtimeProcessFunction later
    +    val convType = if (rowtimeFields.size > 1) {
    +      throw new TableException(
    --- End diff --
    I got an idea, but not sure if it's applicable. We allow multiple rowtime 
fields in a stream but only activate one in an operator. Since the timestamps 
are stored in records, the other inactive rowtime fields can just be taken as 
common fields. Any changes on the rowtime fields will render them invalid for 
rowtime use. IMO, there are not too many queries (maybe only over aggregate and 
join) depending on the rowtime, thus the optimizer may be able to deduce which 
rowtime field should be activated in an operator. However, some existing logics 
may be affected by that.

> Refactor handling of time indicator attributes
> ----------------------------------------------
>                 Key: FLINK-7337
>                 URL: https://issues.apache.org/jira/browse/FLINK-7337
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API & SQL
>    Affects Versions: 1.4.0
>            Reporter: Fabian Hueske
>            Assignee: Fabian Hueske
> After a [discussion on the dev mailing 
> list|https://lists.apache.org/thread.html/735d55f9022df8ff73566a9f1553e14be94f8443986ad46559b35869@%3Cdev.flink.apache.org%3E]
>  I propose the following changes to the current handling of time indicator 
> attributes:
> * Remove the separation of logical and physical row type.
> ** Hold the event-time timestamp as regular Long field in Row
> ** Represent the processing-time indicator type as a null-valued field in Row 
> (1 bit overhead)
> * Remove materialization of event-time timestamps because timestamp is 
> already accessible in Row.
> * Add {{ProcessFunction}} to set timestamp into the timestamp field of a 
> {{StreamRecord}}.

This message was sent by Atlassian JIRA

Reply via email to