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

Gustavo de Morais updated FLINK-37814:
--------------------------------------
    Description: 
The current FlinkJoinToMultiJoinRule is implemented and only used for join 
reordering.  We can use it as a base but we need a new set of optimizer rules 
for the multi way join operator:

 
 * Add FlinkLogicalMultiJoin with all parameters we need + 
FlinkJoinToFlinkMultiJoinRule to create it
 ** There are some parameters that calcite's MultiJoin does not contain as we 
require it. For example: we only have outerJoinConditions and we actually need 
all join conditions for each input level, including inner joins.
 * Add right join to left join rule - our operator only works with left joins
 * Check if the join chain respects the multi join common key restrictions
 ** If not, create one multi join for each group of joins that respect. That 
means 9 chained joins, 3 have one common key and 6 have another will generate 
two chained multi joins.

 

Update: I'll split all these optimizer changes into multiple smaller tickets to 
make it easier to iterate and review. That means, updating this ticket to 
implement the RIGHT JOIN to LEFT JOIN rule.

  was:
The current FlinkJoinToMultiJoinRule is implemented and only used for join 
reordering.  We can use it as a base but we need a new set of optimizer rules 
for the multi way join operator:

 
 * Add FlinkLogicalMultiJoin with all parameters we need + 
FlinkJoinToFlinkMultiJoinRule to create it
 ** There are some parameters that calcite's MultiJoin does not contain as we 
require it. For example: we only have outerJoinConditions and we actually need 
all join conditions for each input level, including inner joins.
 * Add right join to left join rule - our operator only works with left joins
 * Check if the join chain respects the multi join common key restrictions
 ** If not, create one multi join for each group of joins that respect. That 
means 9 chained joins, 3 have one common key and 6 have another will generate 
two chained multi joins.


> FLIP-516: Adjust FlinkJoinToMultiJoinRule for Multi Join Operator
> -----------------------------------------------------------------
>
>                 Key: FLINK-37814
>                 URL: https://issues.apache.org/jira/browse/FLINK-37814
>             Project: Flink
>          Issue Type: Sub-task
>            Reporter: Gustavo de Morais
>            Priority: Major
>
> The current FlinkJoinToMultiJoinRule is implemented and only used for join 
> reordering.  We can use it as a base but we need a new set of optimizer rules 
> for the multi way join operator:
>  
>  * Add FlinkLogicalMultiJoin with all parameters we need + 
> FlinkJoinToFlinkMultiJoinRule to create it
>  ** There are some parameters that calcite's MultiJoin does not contain as we 
> require it. For example: we only have outerJoinConditions and we actually 
> need all join conditions for each input level, including inner joins.
>  * Add right join to left join rule - our operator only works with left joins
>  * Check if the join chain respects the multi join common key restrictions
>  ** If not, create one multi join for each group of joins that respect. That 
> means 9 chained joins, 3 have one common key and 6 have another will generate 
> two chained multi joins.
>  
> Update: I'll split all these optimizer changes into multiple smaller tickets 
> to make it easier to iterate and review. That means, updating this ticket to 
> implement the RIGHT JOIN to LEFT JOIN rule.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to