Tomasz Gawęda created CALCITE-7633:
--------------------------------------

             Summary: RexLiteral.getValueAs assumes 1-character long Character
                 Key: CALCITE-7633
                 URL: https://issues.apache.org/jira/browse/CALCITE-7633
             Project: Calcite
          Issue Type: Bug
            Reporter: Tomasz Gawęda


RexLiteral of "" (blank string) if converted to Character breaks with:

```

Caused by: java.lang.StringIndexOutOfBoundsException: String index out of 
range: 0
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
    at java.base/java.lang.String.charAt(String.java:1517)
    at org.apache.calcite.rex.RexLiteral.getValueAs(RexLiteral.java:1094)

```

 

It's because the code assumes at least one character:

```java

return clazz.cast(((NlsString) value).getValue().charAt(0));

```

 

Where, in fact, `''` is a valid `Character` instance. 

 

A solution would be to check if String is empty and if it is, return `''`, 
otherwise - keep current implementation.

 

 



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

Reply via email to