Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Implemented
-
None
-
None
Description
The goal of this issue is to add support for inner equi-join on proc time streams to the SQL interface.
Queries similar to the following should be supported:
SELECT o.proctime, o.productId, o.orderId, s.proctime AS shipTime
FROM Orders AS o
JOIN Shipments AS s
ON o.orderId = s.orderId
AND o.proctime BETWEEN s.proctime AND s.proctime + INTERVAL '1' HOUR;
The following restrictions should initially apply:
- The join hint only support inner join
- The ON clause should include equi-join condition
- The time-condition o.proctime BETWEEN s.proctime AND s.proctime + INTERVAL '1' HOUR only can use proctime that is a system attribute, the time condition only support bounded time range like o.proctime BETWEEN s.proctime - INTERVAL '1' HOUR AND s.proctime + INTERVAL '1' HOUR, not support unbounded like o.proctime > s.protime, and should include both two stream's proctime attribute, o.proctime between proctime() and proctime() + 1 should also not be supported.
This issue includes:
- Design of the DataStream operator to deal with stream join
- Translation from Calcite's RelNode representation (LogicalJoin).