Hi everyone, I'd like to propose FLIP-516: Multi-Way Join Operator [1] for discussion.
Chained non-temporal joins in Flink SQL often cause a "big state issue" due to large intermediate results, impacting performance and stability. This FLIP introduces a StreamingMultiJoinOperator to tackle this by joining multiple inputs (that need to share a common key) simultaneously within one operator. The main goal is achieving zero intermediate state for these common join patterns, significantly reducing state size. This initial version requires a common partitioning key and focuses on INNER/LEFT joins, with plans for future expansion. The operator is opt-in via table.optimizer.multi-join.enabled (default false). PR with the initial version of the operator is available [2]. Happy to be contributing to this community, and looking forward to your feedback and thoughts. Kind regards, Gustavo de Morais [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-516%3A+Multi-Way+Join+Operator [2] https://github.com/apache/flink/pull/26313