Hi Danny,

Thank you very much for making this happen. Query hints are a very valuable
addition to the product.

Regards,
Vladimir.

вс, 10 нояб. 2019 г. в 05:58, Danny Chan <yuzhao....@gmail.com>:

> Hi, fellows, I’m planning to merge the hints PR in the following week, I’m
> very appreciated if you have other more review comment address. [1]
>
> Or if you have other thoughts, please address it here :)
>
> [1] https://github.com/apache/calcite/pull/1354
>
> Best,
> Danny Chan
> 在 2019年10月30日 +0800 AM1:42,Julian Hyde <jh...@apache.org>,写道:
> > Sure, we can make sure something gets into 1.22. There is consensus
> about the parser extensions, whereas the extensions to RelNode and the
> planner engine are a little more experimental. So let’s go forward with
> that, stating which parts we think are likely to change.
> >
> > Julian
> >
> >
> > > On Oct 29, 2019, at 2:09 AM, Seliverstov Igor <gvvinbl...@gmail.com>
> wrote:
> > >
> > > Colleagues,
> > >
> > > Not only Hazelcast and Apache Flink are interested in SQL hints.
> Apache Ignite community is working on Calcite integration too, it’s
> important for us to have appropriate API at current development stage. This
> case we’ll be able to adapt our solution for SQL hints usage, probably
> determining additional approach weaknesses or inconveniences.
> > >
> > > Regards,
> > > Igor
> > >
> > > > 29 окт. 2019 г., в 11:51, Danny Chan <yuzhao....@gmail.com>
> написал(а):
> > > >
> > > > Julian, can we make some effort to push this feature into release
> 1.22, there are users like Vladimir Ozerov from Hazelcast that are
> interesting on this feature, also the Apache Flink.
> > > >
> > > > I agree that this internal design is not that perfect, at this
> moment, we may hardly to conclude a perfect solution, but at least, the
> syntax would remain unchanged in the future.
> > > >
> > > > So can we mark this feature as experimental and we can promote the
> internal design when accept more feedbacks from the Calcite uses (from
> Apache Flink or from users like Vladimir).
> > > >
> > > > Best,
> > > > Danny Chan
> > > > 在 2019年10月18日 +0800 AM4:55,Julian Hyde <jh...@apache.org>,写道:
> > > > > I wonder whether it is possible to add some kind of “action
> handler” to the planner engine, called, for example, when a rule has fired
> and is registering the RelNode created by the rule. People can write their
> own action handlers to copy hints around. Since the action handlers are the
> user’s code, they can iterate faster to find a hint-propagation strategy
> that works in practice.
> > > > >
> > > > > Another idea is to use VolcanoPlanner.Provenance[1]. A RelNode can
> find its ancestor RelNodes, and the rules that fired to create it. So it
> can grab hints from those ancestors. It does not need to copy those hints
> onto itself.
> > > > >
> > > > > Julian
> > > > >
> > > > > [1]
> https://calcite.apache.org/apidocs/org/apache/calcite/plan/volcano/VolcanoPlanner.Provenance.html
> <
> https://calcite.apache.org/apidocs/org/apache/calcite/plan/volcano/VolcanoPlanner.Provenance.html
> >
> > > > >
> > > > > > On Oct 16, 2019, at 8:38 PM, Haisheng Yuan <
> h.y...@alibaba-inc.com> wrote:
> > > > > >
> > > > > > Julian,
> > > > > > Your concern is very valid, and that is also our main concern.
> > > > > > I was thinking whether we can put hint into the MEMO group, so
> that both logical and physical expression in the same group can share the
> same hint, without copying the hint explicitly. But for newly generated
> expression that doesn't belong to the original group, we still need to copy
> hints. What's worse, in HepPlanner, there is no such concept, we may still
> need to copy hints explicity in planner rules, if we want to keep the hint,
> which is burdensome.
> > > > > >
> > > > > > - Haisheng
> > > > > >
> > > > > >
> ------------------------------------------------------------------
> > > > > > 发件人:Danny Chan<yuzhao....@gmail.com>
> > > > > > 日 期:2019年10月16日 14:54:46
> > > > > > 收件人:<dev@calcite.apache.org>
> > > > > > 主 题:Re: [DISCUSS] Support Sql Hint for Calcite
> > > > > >
> > > > > > 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.
> > > > > > >
> > > > > >
> > > > >
> > >
> >
>

Reply via email to