This is an automated email from the ASF dual-hosted git repository.
lincoln 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 e3456e35855 [FLINK-38824][table] Fix incorrect default values for
primitive types
e3456e35855 is described below
commit e3456e35855a0e885007811f57e598869057f642
Author: dylanhz <[email protected]>
AuthorDate: Mon Dec 22 20:55:03 2025 +0800
[FLINK-38824][table] Fix incorrect default values for primitive types
[FLINK-38824][table] Fix incorrect default values for primitive types
This closes #27354.
---
.../flink/table/planner/codegen/CodeGenUtils.scala | 4 +++-
.../table/planner/codegen/CodeGenUtilsTest.scala | 8 ++++----
.../planner/runtime/stream/sql/CalcITCase.scala | 22 ++++++++++++++++++++++
3 files changed, 29 insertions(+), 5 deletions(-)
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 537adb07466..c4fac018710 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
@@ -301,7 +301,9 @@ object CodeGenUtils {
// ordered by type root definition
case CHAR | VARCHAR => s"$BINARY_STRING.EMPTY_UTF8"
case BOOLEAN => "false"
- case TINYINT | SMALLINT | INTEGER | DATE | TIME_WITHOUT_TIME_ZONE |
INTERVAL_YEAR_MONTH => "-1"
+ case TINYINT => "((byte) -1)"
+ case SMALLINT => "((short) -1)"
+ case INTEGER | DATE | TIME_WITHOUT_TIME_ZONE | INTERVAL_YEAR_MONTH => "-1"
case BIGINT | INTERVAL_DAY_TIME => "-1L"
case FLOAT => "-1.0f"
case DOUBLE => "-1.0d"
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/codegen/CodeGenUtilsTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/codegen/CodeGenUtilsTest.scala
index 1df21ef523c..ae1f6075c6a 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/codegen/CodeGenUtilsTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/codegen/CodeGenUtilsTest.scala
@@ -91,8 +91,8 @@ object CodeGenUtilsTest {
java.util.stream.Stream.of(
// Basic primitive types
Arguments.of(new BooleanType(), "false"),
- Arguments.of(new TinyIntType(), "-1"),
- Arguments.of(new SmallIntType(), "-1"),
+ Arguments.of(new TinyIntType(), "((byte) -1)"),
+ Arguments.of(new SmallIntType(), "((short) -1)"),
Arguments.of(new IntType(), "-1"),
Arguments.of(new BigIntType(), "-1L"),
Arguments.of(new FloatType(), "-1.0f"),
@@ -141,12 +141,12 @@ object CodeGenUtilsTest {
DistinctType
.newBuilder(objectIdentifier, new SmallIntType())
.build(),
- "-1"),
+ "((short) -1)"),
Arguments.of(
DistinctType
.newBuilder(objectIdentifier, new TinyIntType())
.build(),
- "-1"),
+ "((byte) -1)"),
Arguments.of(
DistinctType
.newBuilder(objectIdentifier, new BigIntType())
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/runtime/stream/sql/CalcITCase.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/runtime/stream/sql/CalcITCase.scala
index 7d08df3ba55..f5649f552fa 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/runtime/stream/sql/CalcITCase.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/runtime/stream/sql/CalcITCase.scala
@@ -926,4 +926,26 @@ class CalcITCase extends StreamingTestBase {
assertThat(arr.apply(1).get("nested2").asInstanceOf[Array[String]])
.isEqualTo(Array("Test2", "False"))
}
+
+ @Test
+ def testPrimitiveDefaultValues(): Unit = {
+ val sql =
+ """
+ |SELECT
+ | a[1]
+ | ,b[1]
+ |FROM (
+ | VALUES (CAST(ARRAY[1,2] AS ARRAY<SMALLINT>), CAST(ARRAY[2,3] AS
ARRAY<TINYINT>))
+ |) t(a, b)
+ |""".stripMargin
+
+ val result = tEnv
+ .executeSql(sql)
+ .collect()
+ .asScala
+ .toList
+ .map(_.toString)
+ val expected = List("1,2")
+ assertThat(result).isEqualTo(expected)
+ }
}