[ 
https://issues.apache.org/jira/browse/CALCITE-4775?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17414981#comment-17414981
 ] 

Julian Hyde commented on CALCITE-4775:
--------------------------------------

Yes, it would be OK to add fine-grained configuration. But I don’t think it 
would be. Validator config - I believe the rewrite happens during 
SqlToRelConverter or later. 

> Fine grained tuning of call rewrite behaviour 
> ----------------------------------------------
>
>                 Key: CALCITE-4775
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4775
>             Project: Calcite
>          Issue Type: New Feature
>    Affects Versions: 1.26.0
>         Environment: Calcite 1.26
>            Reporter: Francesco Guardiani
>            Priority: Trivial
>
> In a Flink SQL PR [https://github.com/apache/flink/pull/17256] I've tried to 
> disable the call rewrite feature of Calcite parser to disable the rewrite of 
> COALESCE. The problem with this is that it creates a regression in other 
> components, since we rely on call rewrite for other sql features.
> Would it be possible to modify the sql call rewrite feature to pick (or 
> alternatively disable) which sql operator should be rewritten?
> For example, the SqlValidator.Config could take as parameter a list of 
> excludeCallRewrite
> SqlOperator classes, which can be checked later by the SqlValidatorImpl to 
> enable or disable a rewrite of a specific class:
> {code:java}
> SqlValidator.Config.DEFAULT
>      .withCallRewrite(true)
>      .withExcludedCallRewrite(SqlCoalesceFunction.class)
> {code}
> And then in SqlValidatorImpl:
> {code:java}
> if (config.callRewrite() && 
> !config.isCallRewriteExcluded(call.getOperator().getClass())) {
>     node = call.getOperator().rewriteCall(this, call);
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to