[ 
https://issues.apache.org/jira/browse/FLINK-40207?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ramin Gharib updated FLINK-40207:
---------------------------------
    Description: 
Currently Flink only accepts case-sensitive \{{NaN. }}If we use nan, Nan, or 
NAN Flink will fail to parse it. For to reproduce simply write

 
{code:java}
SELECT CAST('nan' as FLOAT){code}
You will get
{code:java}
Caused by: java.lang.NumberFormatException: For input string: "nan"     at 
java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
  at 
java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
     at java.base/java.lang.Float.parseFloat(Float.java:476) at 
org.apache.flink.table.data.binary.BinaryStringDataUtil.toFloat(BinaryStringDataUtil.java:581)
       at BatchExecCalc$3.processElement(Unknown Source)       at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.pushToOperator(ChainingOutput.java:110)
      at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:79)
      at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:41)
 {code}
This is also applied for Infinity
{code:java}
Caused by: java.lang.NumberFormatException: For input string: "-infinity"       
{code}
Moreover, we can also allow {{{}-inf{}}}, {{inf}}

Other vendors like Snowflake and Databricks also define them as 
case-insensitive: 
[https://docs.snowflake.com/en/sql-reference/data-types-numeric#special-values]
[https://docs.databricks.com/aws/en/sql/language-manual/data-types/special-floating-point-values]

 

  was:
Currently Flink only accepts case-sensitive {{NaN. }}If we use nan, Nan, or NAN 
Flink will fail to parse it. For to reproduce simply write

 
{code:java}
SELECT CAST('Nan' as FLOAT){code}
You will get
{code:java}
Caused by: java.lang.NumberFormatException: For input string: "Nan"     at 
java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
  at 
java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
     at java.base/java.lang.Float.parseFloat(Float.java:476) at 
org.apache.flink.table.data.binary.BinaryStringDataUtil.toFloat(BinaryStringDataUtil.java:581)
       at BatchExecCalc$3.processElement(Unknown Source)       at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.pushToOperator(ChainingOutput.java:110)
      at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:79)
      at 
org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:41)
 {code}
This is also applied for Infinity
{code:java}
Caused by: java.lang.NumberFormatException: For input string: "-infinity"       
{code}

Moreover, we can also allow {{{}-inf{}}}, {{inf}}


Other vendors like Snowflake and Databricks also define them as 
case-insensitive: 
[https://docs.snowflake.com/en/sql-reference/data-types-numeric#special-values]
[https://docs.databricks.com/aws/en/sql/language-manual/data-types/special-floating-point-values]



 


> Make NaN and Infinity case-insensitive
> --------------------------------------
>
>                 Key: FLINK-40207
>                 URL: https://issues.apache.org/jira/browse/FLINK-40207
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>            Reporter: Ramin Gharib
>            Assignee: Ramin Gharib
>            Priority: Minor
>
> Currently Flink only accepts case-sensitive \{{NaN. }}If we use nan, Nan, or 
> NAN Flink will fail to parse it. For to reproduce simply write
>  
> {code:java}
> SELECT CAST('nan' as FLOAT){code}
> You will get
> {code:java}
> Caused by: java.lang.NumberFormatException: For input string: "nan"   at 
> java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
>   at 
> java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
>      at java.base/java.lang.Float.parseFloat(Float.java:476) at 
> org.apache.flink.table.data.binary.BinaryStringDataUtil.toFloat(BinaryStringDataUtil.java:581)
>        at BatchExecCalc$3.processElement(Unknown Source)       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.pushToOperator(ChainingOutput.java:110)
>       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:79)
>       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:41)
>  {code}
> This is also applied for Infinity
> {code:java}
> Caused by: java.lang.NumberFormatException: For input string: "-infinity"     
> {code}
> Moreover, we can also allow {{{}-inf{}}}, {{inf}}
> Other vendors like Snowflake and Databricks also define them as 
> case-insensitive: 
> [https://docs.snowflake.com/en/sql-reference/data-types-numeric#special-values]
> [https://docs.databricks.com/aws/en/sql/language-manual/data-types/special-floating-point-values]
>  



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

Reply via email to