[ https://issues.apache.org/jira/browse/CALCITE-3541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17115005#comment-17115005 ]
Xiening Dai commented on CALCITE-3541: -------------------------------------- Ok, I see. The base class does have a predicate in constructor. So we just need to expose it for fine grained control. > Avoid transformations to Enumerable nodes for custom SqlOperators > ----------------------------------------------------------------- > > Key: CALCITE-3541 > URL: https://issues.apache.org/jira/browse/CALCITE-3541 > Project: Calcite > Issue Type: Improvement > Components: core > Affects Versions: 1.21.0 > Reporter: Stamatis Zampetakis > Priority: Major > > Most Enumerable converter rules apply a transformation as soon as the > {{RelNode}} class and its convention match those defined by the rule. > However, there are use-cases that we would like to restrict the matches even > further to avoid generating unimplementable plans that will fail at runtime. > The most prominent example comes from extending the standard operator set > with new {{SqlOperator}} s that appear in filters and projections as part of > a row expression ({{RexNode}}). If we use the default instance of the > {{EnumerableCalcRule}} we might end-up with a plan that will fail at runtime > since the new operator is not handled by the Enumerable convention. Most > likely there is a {{RelNode}} in another convention that can handle this new > operator. > We could avoid such undesirable transformations by allowing instantiations of > the Enumerable converter rules with user-defined predicates. This also means > adding public constructors to the rules that currently they do not have one. -- This message was sent by Atlassian Jira (v8.3.4#803005)