> Is there a way to identify a node as being a root node during RelRule.match?

Not currently. One workaround would be to create 'class MyRoot extends
SingleRel', add it as the root of the tree, and write your rules to
match on it.

> Or more generally, is there a way to collect the parents of an arbitrary 
> RelNode?

By design, the only way to find the parents of a RelNode are to write
a rule that matches those parents. This ensures that rules will work
in the Volcano planner, where a RelNode can have many parents.

Julian

On Mon, May 3, 2021 at 12:52 PM Ian Bertolacci
<[email protected]> wrote:
>
> Hello,
> I am trying to write a rule that matches (among other things) the root of a 
> RelNode tree.
>
> Unfortunately, it seems that HepRuleCall.parents is only initialized and 
> populated if the rule extends CommonRelSubExpr, which doesn’t really apply in 
> my case.
> (see: 
> https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/plan/hep/HepPlanner.java#L526)
>
> Is there a way to identify a node as being a root node during RelRule.match? 
> Or more generally, is there a way to collect the parents of an arbitrary 
> RelNode?
>
> Thanks.

Reply via email to