You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "sunjincheng (JIRA)" <ji...@apache.org> on 2018/12/26 10:36:00 UTC

[jira] [Created] (FLINK-11220) Can not Select row time field in JOIN query

sunjincheng created FLINK-11220:
-----------------------------------

             Summary: Can not Select row time field in JOIN query
                 Key: FLINK-11220
                 URL: https://issues.apache.org/jira/browse/FLINK-11220
             Project: Flink
          Issue Type: Bug
          Components: Table API &amp; SQL
    Affects Versions: 1.8.0
            Reporter: sunjincheng


SQL:
{code:java}
Orders...toTable(tEnv, 'orderId, 'orderTime.rowtime)
Payment...toTable(tEnv, 'orderId, 'payTime.rowtime)

SELECT orderTime, o.orderId, payTime
  FROM Orders AS o JOIN Payment AS p
  ON o.orderId = p.orderId AND
     p.payTime BETWEEN orderTime AND orderTime + INTERVAL '1' HOUR

{code}

Execption:
{code:java}

org.apache.flink.table.api.TableException: Found more than one rowtime field: [orderTime, payTime] in the table that should be converted to a DataStream.
Please select the rowtime field that should be used as event-time timestamp for the DataStream by casting all other fields to TIMESTAMP.

at org.apache.flink.table.api.StreamTableEnvironment.translate(StreamTableEnvironment.scala:906)
{code}

The reason for the error is that we have 2 time fields `orderTime` and  `payTime`.  I think we do not  need throw the exception, and we can remove the logic of `plan.process(new OutputRowtimeProcessFunction[A](conversion, rowtimeFields.head.getIndex))`, if we want using the timestamp after toDataSteram, we should using `assignTimestampsAndWatermarks()`.

What do you think ? [~twalthr] [~fhueske] 
 




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)