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

Hongze Zhang commented on CALCITE-2854:
---------------------------------------

[~hhlai1990], I think I understand your point: UNARY_PLUS means nothing so it 
should be totally removed, so we don't need to consider that in the fix.

But what if user uses the planner without SQL? Which means, they may somehow 
(e.g. using the RelBuilder) create a 
REX_CALL:UNARY_PLUS(REX_LITERAL:BIG_DECIMAL) manually.

It is just kind of a possibility. And I agree with you that it is rare so I 
don't think it blocks the patch.

> code gen error for UNARY_MINUS operator call with decimal type operands
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-2854
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2854
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.18.0
>            Reporter: Lai Zhou
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> case:
> {code:java}
>   @Test public void test() throws Exception {
>     final String cr = "create table t (a DECIMAL)";
>     final String se = "select -a as aa from t";
>     Connection c = connect();
>     Statement s = c.createStatement();
>     s.execute(cr);
>     s.executeQuery(se);
>   }
> {code}
> error msg: 
> {code:java}
> Caused by: org.codehaus.commons.compiler.CompileException: Line 21, Column 
> 71: Object of type "java.math.BigDecimal" cannot be converted to a numeric 
> type
> {code}
> {code:java}
> public Object current() {
> final java.math.BigDecimal current = inputEnumerator.current() == null ? 
> (java.math.BigDecimal) null : 
> org.apache.calcite.runtime.SqlFunctions.toBigDecimal(inputEnumerator.current());
> return current == null ? (java.math.BigDecimal) null : - current;
> }
> {code}
> `- current` is not right ,we'd better constructor a new BigDecimal object to 
> to replace this code snippet,like 
> {code:java}
> return current == null ? (java.math.BigDecimal) null : 
> SqlFunctions.negativeDecimal(current);
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to