Hi Jacques, I have faced the same issue recently and I think it's a good idea to have a generic version of it and have RelShuttle be one of its concrete implementations.
Best regards, Alessandro Il Gio 2 Dic 2021, 06:02 Jacques Nadeau <[email protected]> ha scritto: > Right now, RelNode's accept method and RelShuttle forces a user to return > RelNodes. This makes tree traversal/conversion extra painful in main > circumstances (you want to have more specific relnode classes explicit, you > want to rewrite to non-relnodes, etc). I've worked around this for many > years but really think it should be resolved inside Calcite. I wanted to > get some feedback on introducing a more generic pattern (that RelShuttle > becomes a concrete variation of). If people are on board with the change, > I'll pull it through the codebase. > > You can see the rough idea in this wip patch: > https://github.com/apache/calcite/pull/2625 > > Basically, introduce a new parameterized visitor that people can use. This > doesn't change the existing behavior of RelShuttle (it's now just a > specific version of this generic version) but it does allow other rewrite > patterns. > > Thoughts? >
