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

Thomas D'Silva commented on CALCITE-5010:
-----------------------------------------

Sorry for not answering all your questions. My current approach modifies the 
convertCall implementation of RexBuilder, it does not introduce a new method. 
It does not allow users to customize which convertlets are applied, if a 
convertlet implements the new convertCall method it would be used to transform 
the RexCall being created. In order to use this approach existing convertlets 
would have to be refactored and implement the new convertCall method. I will 
test this approach with other functions including aggregate functions to see if 
this approach works and also try to come up with a better approach. Thanks for 
your response. 

> Modify RexBuilder to use convertlets to transform the RexCall when possible
> ---------------------------------------------------------------------------
>
>                 Key: CALCITE-5010
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5010
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Thomas D'Silva
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> SqlRexConvertlets are used to transform a SqlCall into a RexCall while 
> parsing a sql string. A RelNode that is created using RelBuilder does not use 
> the same transformations. This causes the following error while trying to use 
> RelBuilder to create a relnode that use  {{{}TIMESTAMPDIFF(){}}}.
> {code:java}
> Suppressed: java.lang.RuntimeException: cannot translate call 
> TIMESTAMPDIFF($t8, $t4, $t9)
> at 
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:1157)
> at 
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:98)
> {code}
> Modify RexBuilder to check if there is a convertlet that exists for the 
> operator being constructed and transform the RexCall using the convertlet.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to