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

Reply via email to