I'm not sure but I believe you have to leave the matched node in a new
shape that doesn't make the rule match again. Like at least collect the
node's information and put them into a new node, convert the matched node
to the new node and have a boolean flag in the newly created node marked as
true. And then let the rule matches look for that flag, if it's there and
it's true, then don't run the rule.

Having that said, converting the node into a new one, with a new type. The
rule matcher can check if the node is of that type, and if it is, then the
rule was applied once before. So you don't need to run it again.

Hopefully that helps.



Thanks,
Gelbana


On Tue, Nov 27, 2018 at 5:06 AM Hequn Cheng <chenghe...@gmail.com> wrote:

> Hi,
>
> Does Calcite provide a way to apply a rule for the same node only once with
> HepPlanner?
> I find that we can use `addMatchLimit()` to limit times for the whole plan,
> but it seems there is no way to limit times for a RelNode, similar to a
> ConvertRule.
> Any help would be appreciated!
>
> Best,
> Hequn
>

Reply via email to