Thanks for the clarification. I understand you worried. Yes, the effort/memory would be wasted or meaningless if hints are not used. This is just what a hint does, it is a “hint” and non-mandatory, but we should give the chance to let user see them, it is the use that decide if to use the hints and how to use them. For big queries I have no confidence to cover the corner cases. So can we mark this feature as experimental and used for simple queries(no decorrelation) first ?
For “reversible”, during the implementation, I try to make the modifications non-invasive with the current codes. That is why I made all the interfaces about the hint into one class named RelWithHInt. Different with trait, I didn’t force users to pass in the hints in the RelNode constructor. I think if is not a bigwork if we want to remove the API. Best, Danny Chan 在 2019年10月16日 +0800 AM11:14,Julian Hyde <jh...@apache.org>,写道: > By “skeptical” I mean that I think we can come up with a mechanism to copy > hints when applying planner rules, but even when we have implemented that > mechanism there will be many cases where people want a hint and that hint is > not copied to the RelNode where it is needed, and many other cases where we > spend the effort/memory of copying the hint to a RelNode and the hint is not > used. > > By “reversible” I mean if we come up with an API that does not work, how do > we change or remove that API without people complaining? > > Julian > > > > On Oct 15, 2019, at 7:11 PM, Danny Chan <yuzhao....@gmail.com> wrote: > > > > Thanks Julian > > > > > I am skeptical that RelWithHint will work for large queries. > > > > For “skeptical” do you mean how to transfer the hints during rule planning > > ? I’m also not that confident yet. > > > > > How do we introduce it in a reversible way > > Do you mean transform the RelWithHint back into the SqlHint ? I didn’t > > implement it in current patch, but I think we have the ability to do that > > because we have a inheritPath for each RelWithHint, we can collect all the > > hints together and merge them into the SqlHints, then propagate these > > SqlHints to the SqlNodes. > > > > > What are the other options? > > Do you mean the way to transfer hints during planning ? I have no other > > options yet. > > > > Best, > > Danny Chan > > 在 2019年10月16日 +0800 AM8:03,dev@calcite.apache.org,写道: > > > > > > I am skeptical that RelWithHint will work for large queries. >