Details
-
New Feature
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
None
-
Docs Required, Release Notes Required
Description
We may implement the feature the next way:
- For each row from left node consume whole dataset from right node
- Pass join condition as an argument of request() method of the right node
- In case a data source at right is an index scan
- If there is no cursor opened - create a new cursor using bounds from request
- If there is an existing cursor - just check the cursor was opened using the same condition as passed one.
- After the right node signals EOD consume a next row from left and repeat from p 2.
- In case a data source at right is a table scan with huge amount of rows
- If there is no cursor opened - create a new cursor ignoring passed condition
- If there is an existing cursor - just check the cursor was opened using the same condition as passed one.
- After the right node signals EOD consume a next row from left and repeat from p 2.
- In case a data source at right is remote / is a table scan with small number of rows/ is a filter node with good enough selectivity
- Create a hash index for a data source
- If there is no cursor opened - create a new cursor using bounds from request
- If there is an existing cursor - just check the cursor was opened using the same condition as passed one.
- After the right node signals EOD consume a next row from left and repeat from p 2.
Consider implementation specifics at optimization time, choose the cheapest variant
Attachments
Issue Links
- is part of
-
IGNITE-12248 Apache Calcite based query execution engine
- Open
- links to