Stamatis > The default implementation instead of returning true it could
check that
Stamatis > all operands are in the same convention

As I said, it does not solve Filter(Join(..)) case.
We do want to write rules in a generic way like operand(Filter.class,
operand(Join.class, ...)) while we do want that rule to fire for Drill
nodes only in case Drill reuses the rule.
That is why I think it is not enough to enforce "single convention only".

Certain rules take both Class<...> and RelBuilderFactory in constructors,
however that is error prone (see
https://docs.google.com/spreadsheets/d/1m2RmazGwplnu-y3uUjxMAecIS-P9TI7wS1wSBI7GFkM/edit?usp=sharing
 ). I think we should refrain from Class arguments unless the rule is very
generic one like AbstractMaterialized... (it has lots of distinct derived
implementations).

Vladimir

Reply via email to