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
