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

Mihai Budiu commented on CALCITE-7035:
--------------------------------------

It's not only Enumerable, people may have different compiler back-ends (we do).
These backends may need to handle these functions which never appeared before 
in the IR.

Even if we implement these rewrites using RexNodes, the users will have to 
invoke the corresponding visitor to get the rewrite applied. Maybe we can 
"hide" the rewrite as a CoreRule to make it easier to adopt.

> SQL calls without an implementor or convertlet (NULLIF, YEAR, ...) throw an 
> error when having a subquery as parameter
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-7035
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7035
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.40.0
>            Reporter: Aleksey Plekhanov
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.40.0
>
>
> After CALCITE-6978 {{SqlCall}}'s with subqueries are not rewritten during 
> validation even when {{withCallRewrite(true)}} property is set in the 
> configuration.
> Functions like {{NULLIF}}, {{YEAR}}, {{MONTH}}, etc don't have implementor or 
> convertlet, so, when used with subqueries, throw an error: Unable to 
> implement.
> Examples of problematic queries:
> {noformat}
> select nullif((select max(emps.age) from emps), 0);
> select year(select max(joinedat) from emps);
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to