Yes, I guess you could keep the tree generated at each step in HepPlanner. Try it, and let us know what you come up with.
> On Aug 11, 2015, at 11:36 AM, Raajay <[email protected]> wrote: > > Ah! Okay, good to know :) I was thinking it perhaps would be possible by > changing the "GarbageCollection" in HepPlanner. > > Thanks again, > Raajay > > On Tue, Aug 11, 2015 at 1:24 PM, Julian Hyde <[email protected]> wrote: > >> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 >>>> >>>> >>
