[ 
https://issues.apache.org/jira/browse/FLINK-19076?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonard Xu updated FLINK-19076:
-------------------------------
    Description: 
Temporal join is a correlate, the right of correlate is a *Snapshot*, the 
*period* of *snapshot* comes from left table's time attribute column. 

the time attribute column may be pruned if the downstream `RelNode` did not 
reference it any more, so I need to keep the necessary  condition(e.g., left 
time attribute, right primary key) for temporal join node in join condition.

Given an example:
{code:java}
SELECT o.order_id, o.currency, o.amount, r.rate,r.rowtime 
 FROM orders_proctime AS o JOIN 
 versioned_currency 
 FOR SYSTEM_TIME AS OF o.rowtime as r 
 ON o.currency = r.currency{code}
The select clause did not use `o.rowtime` and thus the column `o.rowtime` will 
be removed later, but we need the `o.rowtime` in temporal join node, so I keep 
the `o.rowtime` in temporal join condition just like[1].

[1] 
[https://github.com/apache/flink/blob/c601cfd662c2839f8ebc81b80879ecce55a8cbaf/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/utils/TemporalJoinUtil.scala]
 

 

> Import rule to deal Temporal Join condition
> -------------------------------------------
>
>                 Key: FLINK-19076
>                 URL: https://issues.apache.org/jira/browse/FLINK-19076
>             Project: Flink
>          Issue Type: Sub-task
>            Reporter: Leonard Xu
>            Priority: Major
>
> Temporal join is a correlate, the right of correlate is a *Snapshot*, the 
> *period* of *snapshot* comes from left table's time attribute column. 
> the time attribute column may be pruned if the downstream `RelNode` did not 
> reference it any more, so I need to keep the necessary  condition(e.g., left 
> time attribute, right primary key) for temporal join node in join condition.
> Given an example:
> {code:java}
> SELECT o.order_id, o.currency, o.amount, r.rate,r.rowtime 
>  FROM orders_proctime AS o JOIN 
>  versioned_currency 
>  FOR SYSTEM_TIME AS OF o.rowtime as r 
>  ON o.currency = r.currency{code}
> The select clause did not use `o.rowtime` and thus the column `o.rowtime` 
> will be removed later, but we need the `o.rowtime` in temporal join node, so 
> I keep the `o.rowtime` in temporal join condition just like[1].
> [1] 
> [https://github.com/apache/flink/blob/c601cfd662c2839f8ebc81b80879ecce55a8cbaf/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/utils/TemporalJoinUtil.scala]
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to