Allow more than one planner to be applied to a given query. This mechanism would allow, for instance, you to try a quick-and-dirty planner with a limited rule set first, and fall back to a more complex planner for more complex queries.

When planner can't find a plan, throws a RelOptPlanner.CannotPlanException (a sub-type of RuntimeException) that contains a dump of the planner state.