calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Hyde <jh...@apache.org>
Subject Re: Calcite returning multiple operator trees
Date Tue, 11 Aug 2015 18:24:39 GMT
You are correct. The strategy to obtain alternate plans from
HepPlanner is - don't use HepPlanner.  :)

On Tue, Aug 11, 2015 at 9:52 AM, Raajay <raajay.v@gmail.com> wrote:
> Okay got it. Thanks a lot!
>
> As a follow up, what would be the strategy to obtain multiple operator
> trees while using a HepPlanner ? I am interested in HepPlanner because it
> is used in Hive Extensively.
>
> My understanding from reading the code for HepPlanner is that obtaining
> alternate plans with higher cost might not be possible. Every node in the
> graph contains only one RelNode (not notion of "best") and thus any
> traversal will give only one plan.
>
> Thanks,
> Raajay
>
> On Mon, Aug 10, 2015 at 4:29 PM, Julian Hyde <jhyde@apache.org> wrote:
>
>> There isn’t an interface as such. But you could modify the code to achieve
>> that behavior.
>>
>> All of the various plans are held in the graph of the VolcanoPlanner
>> consisting of RelSet, RelSubset and RelNode objects.
>> RelSubset.CheapestPlanReplacer walks over that graph finding the cheapest.
>> It uses the RelSubset.best field but you could create a similar class that
>> return all plans within K of the best cost.
>>
>> A few words of caution. Each path through the graph is another plan, and
>> there is a huge number of combinations, and many of the combinations will
>> be very similar to each other. You should keep the threshold small, and
>> filter out plans that are not very different.
>>
>> Julian
>>
>>
>> > On Aug 7, 2015, at 11:42 PM, Raajay <raajay.v@gmail.com> wrote:
>> >
>> > Hello,
>> >
>> > I am just starting to explore Calcite, especially related to its
>> > application to Hive. As I understand it, Calcite takes as input the
>> > following:
>> >
>> > 1. An SQL operator tree
>> > 2. A set of rules (pattern based) that define alterations to the three
>> > 3. A cost model for basic operations.
>> >
>> >
>> > Given these, calcite explores the space of all possible alterations
>> (based
>> > on the rules) and returns the one with least cost. Is there an interface
>> > for Calcite to return multiple Operator trees, say for example, all trees
>> > with cost below a threshold ?
>> >
>> > If yes, pointers to it would be great.
>> >
>> > Thanks
>> > Raajay
>>
>>

Mime
View raw message