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 ef4e64c5b01 [FLINK-40606][table-planner] Fix code generation for 
binary array casts
ef4e64c5b01 is described below

commit ef4e64c5b018a6f82888e4d07e4c7273d400a8ec
Author: dylanhz <[email protected]>
AuthorDate: Thu Sep 10 02:35:52 2026 +0800

    [FLINK-40606][table-planner] Fix code generation for binary array casts
---
 .../planner/functions/casting/CastRuleUtils.java   |  5 ++++-
 .../planner/functions/casting/CastRulesTest.java   | 25 ++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
 
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
index 1126492cfed..cda0bd3ddf3 100644
--- 
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
+++ 
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
@@ -72,7 +72,10 @@ final class CastRuleUtils {
     }
 
     static String newArray(String innerType, String arraySize) {
-        return "new " + innerType + "[" + arraySize + "]";
+        final int arrayIndex = innerType.indexOf('[');
+        final String baseType = arrayIndex < 0 ? innerType : 
innerType.substring(0, arrayIndex);
+        final String dimensions = arrayIndex < 0 ? "" : 
innerType.substring(arrayIndex);
+        return "new " + baseType + "[" + arraySize + "]" + dimensions;
     }
 
     static String stringConcat(Object... args) {
diff --git 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java
 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java
index 440ff8a5826..f5e98a0fc0a 100644
--- 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java
+++ 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java
@@ -1543,6 +1543,21 @@ class CastRulesTest {
                                             null,
                                             fromString("2021-09-24 
14:34:56.123456")
                                         })),
+                CastTestSpecBuilder.testCastTo(ARRAY(VARBINARY(1)))
+                        .fromCase(ARRAY(BYTES()), null, null)
+                        .fromCase(
+                                ARRAY(BYTES()),
+                                new GenericArrayData(new byte[][] {}),
+                                new GenericArrayData(new byte[][] {}))
+                        .fromCase(
+                                ARRAY(BYTES()),
+                                new GenericArrayData(new byte[][] {{1}, {2, 
3}, null, {}}),
+                                new GenericArrayData(new byte[][] {{1}, {2}, 
null, {}})),
+                CastTestSpecBuilder.testCastTo(ARRAY(BINARY(2).notNull()))
+                        .fromCase(
+                                ARRAY(BYTES().notNull()),
+                                new GenericArrayData(new byte[][] {{1}, {2, 3, 
4}}),
+                                new GenericArrayData(new byte[][] {{1, 0}, {2, 
3}})),
                 CastTestSpecBuilder.testCastTo(ARRAY(BIGINT().nullable()))
                         .fromCase(
                                 ARRAY(INT().nullable()),
@@ -2119,6 +2134,16 @@ class CastRulesTest {
                                 new GenericArrayData(new int[] {1, 2, 3}))
                         // a VARIANT null element fails a NOT NULL element type
                         .fail(VARIANT(), VARIANT_INT_ARRAY_WITH_NULL, 
TableRuntimeException.class),
+                CastTestSpecBuilder.testCastTo(ARRAY(BYTES()))
+                        .fromCase(
+                                VARIANT(),
+                                VARIANT_BUILDER
+                                        .array()
+                                        .add(VARIANT_BUILDER.of(new byte[] 
{1}))
+                                        .add(VARIANT_BUILDER.of(new byte[] {2, 
3}))
+                                        .add(VARIANT_BUILDER.ofNull())
+                                        .build(),
+                                new GenericArrayData(new byte[][] {{1}, {2, 
3}, null})),
                 CastTestSpecBuilder.testCastTo(ARRAY(STRING()))
                         // each element renders to string like the scalar cast
                         .fromCase(

Reply via email to