[
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)