Vladimir> 3) the rule creates invalid rel hierarchies. For instance, a rule Vladimir> should not create LogicalFilter(EnumerableProject(...)) kind of Vladimir> expression trees.
In fact, org.apache.calcite.prepare.RelOptTableImpl#toRel produces EnumerableTableScan. So it is one of the primary sources for Logical*(input=EnumerableTableScan). At this point I'm a bit puzzled on validity of LogicalFilter(EnumerableFilter(LogicalProject(...))) kind of nodes. Those plans look weird, so I'm inclined to refrain from creating plans like that. Any thoughts? Vladimir
