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

Sergey Nuyanzin commented on CALCITE-5607:
------------------------------------------

>Is it possible for you to interactive rebase and swap out the existing merged 
>commit for this one? 

technically it is possible however the main issue is that it will lead to huge 
inconveniences for  others.
The merge commit was created in November and if we do like that all the commits 
after this will be rebased.
Then everyone should  forcibly sync their fork and branches with PRs 
Thus I tend to think that the impact of such approach will be huge... 

> Datetime MINUS throws ArrayIndexOutOfBounds error when serializing toRex
> ------------------------------------------------------------------------
>
>                 Key: CALCITE-5607
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5607
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Oliver Lee
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.37.0
>
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> We found a bug in {{RelJson#toRex}} for the {{TIMESTAMP_DIFF}} call for Big 
> Query dialect.
> {{TIMESTAMP_DIFF}} is translated to the {{MINUS_DATE}} 
> [operator|https://github.com/apache/calcite/blob/c28d1dcbc34e748b7bea9712ef6bcf43793a91e8/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java#L2113-L2116]
>  with a return type explicitly declared as the interval.
> {{MINUS_DATE}} uses an 
> {{[ARG2_NULLABLE|https://github.com/apache/calcite/blob/c28d1dcbc34e748b7bea9712ef6bcf43793a91e8/core/src/main/java/org/apache/calcite/sql/type/ReturnTypes.java#L241]}}
>  return type inference which requires 3 operands. This is fine in most cases 
> where the RexCall is then used to generate SQL or for native implementations.
> However, in {{{}RelJson#toRex{}}}, when it tries to reconstruct the entire 
> call to a RexNode, it attempts to derive the return type of the 
> {{MINUS_DATE}} operator using the {{ARG2_NULLABLE}} inference. This throws an 
> error as there are only 2 operands given to the {{MINUS_DATE}} operator.
>  
> The solution here is to do something similar to how we handle {{CAST}} and to 
> add in "type" when serializing to JSON in {{RelJson.toJson(RexNode node)}} 
> for {{SqlKind.MINUS}} so that 
> {{[jsonType|https://github.com/apache/calcite/blob/c28d1dcbc34e748b7bea9712ef6bcf43793a91e8/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java#L712]}}
>  will be defined in {{{}toRex{}}}.
>  



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

Reply via email to