Hi, I'm presently working on optimizing the ordering of joins for queries and had a few questions about the optimal way to do that with Calcite.
I watched this meetup video (https://www.youtube.com/watch?v=5wQojihyJDs) and spent some time experimenting with JoinAssociateRule, JoinCommuteRule, and the rules related to MultiJoins. We're utilizing the volcano planner for optimization at the present moment but also have the freedom to customize the order and phases for the planner phases. 1. Is MultiJoin generally suggested over JoinAssociate and JoinCommute rules? Or are JoinAssociate and JoinCommute still recommended as the standard way to handle reordering of joins? 2. Our system only supports performing the join over two inputs and we can't support MultiJoin as a physical operation. My understanding is that the LoptOptimizeJoinRule and MultiJoinOptimizeBushyRule will rearrange the join but will still produce a MultiJoin. What's the appropriate way to convert a MultiJoin back to a set of joins? 3. My understanding is that MultiJoin rules aren't compatible with the volcano planner and should be run as part of a stage using the heuristic planner. Is this understanding correct? Thank you for any help. --Jonathan Sternberg
