[
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 right join to left join rule - our operator only works with left joins
* -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.-
* -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. This ticket will be used to address the
RIGHT JOIN to LEFT JOIN rule 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.
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.
> 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 right join to left join rule - our operator only works with left joins
> * -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.-
> * -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. This ticket will be used to address
> the RIGHT JOIN to LEFT JOIN rule rule.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)