This is an automated email from the ASF dual-hosted git repository.
snuyanzin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 32afcef2ec3 [FLINK-40160][table] Fix casting `NaN` to `FLOAT` or
`DOUBLE`
32afcef2ec3 is described below
commit 32afcef2ec3cf7bdafb3f409683c475d4dade619
Author: Ramin Gharib <[email protected]>
AuthorDate: Fri Jul 17 15:07:58 2026 +0200
[FLINK-40160][table] Fix casting `NaN` to `FLOAT` or `DOUBLE`
---
.../org/apache/flink/table/planner/codegen/CodeGenUtils.scala | 4 ++++
.../apache/flink/table/planner/functions/CastFunctionITCase.java | 8 ++++++++
2 files changed, 12 insertions(+)
diff --git
a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/CodeGenUtils.scala
b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/CodeGenUtils.scala
index ff924fe0f30..aacb8db5a0d 100644
---
a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/CodeGenUtils.scala
+++
b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/CodeGenUtils.scala
@@ -233,12 +233,16 @@ object CodeGenUtils {
value match {
case JFloat.NEGATIVE_INFINITY => "java.lang.Float.NEGATIVE_INFINITY"
case JFloat.POSITIVE_INFINITY => "java.lang.Float.POSITIVE_INFINITY"
+ // NaN is not equal to itself, so it can't be matched by value like
the infinities above.
+ case f: JFloat if f.isNaN => "java.lang.Float.NaN"
case _ => value.toString + "f"
}
case _: JDouble =>
value match {
case JDouble.NEGATIVE_INFINITY => "java.lang.Double.NEGATIVE_INFINITY"
case JDouble.POSITIVE_INFINITY => "java.lang.Double.POSITIVE_INFINITY"
+ // NaN is not equal to itself, so it can't be matched by value like
the infinities above.
+ case d: JDouble if d.isNaN => "java.lang.Double.NaN"
case _ => value.toString + "d"
}
case sd: StringData =>
diff --git
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
index cb41ad083c7..6ad3ab7cb11 100644
---
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
+++
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
@@ -1415,6 +1415,14 @@ public class CastFunctionITCase extends
BuiltInFunctionTestBase {
.build(),
CastTestSpecBuilder.testCastTo(FLOAT())
.fromCase(DOUBLE(), -1.7976931348623157E308d,
Float.NEGATIVE_INFINITY)
+ .fromCase(STRING(), "NaN", Float.NaN)
+ .fromCase(STRING(), "Infinity",
Float.POSITIVE_INFINITY)
+ .fromCase(STRING(), "-Infinity",
Float.NEGATIVE_INFINITY)
+ .build(),
+ CastTestSpecBuilder.testCastTo(DOUBLE())
+ .fromCase(STRING(), "NaN", Double.NaN)
+ .fromCase(STRING(), "Infinity",
Double.POSITIVE_INFINITY)
+ .fromCase(STRING(), "-Infinity",
Double.NEGATIVE_INFINITY)
.build(),
CastTestSpecBuilder.testCastTo(DECIMAL(38, 0))
.fromCase(