This is an automated email from the ASF dual-hosted git repository.
snuyanzin pushed a commit to branch release-1.17
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.17 by this push:
new ac77023c090 [FLINK-32296][table] Support cast of collections with row
element types
ac77023c090 is described below
commit ac77023c09002728c15da564a88039e638dd412d
Author: Sergey Nuyanzin <[email protected]>
AuthorDate: Wed Aug 23 20:53:54 2023 +0200
[FLINK-32296][table] Support cast of collections with row element types
---
.../table/planner/functions/casting/RowToRowCastRule.java | 3 ++-
.../flink/table/planner/functions/CastFunctionITCase.java | 12 ++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToRowCastRule.java
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToRowCastRule.java
index 323bd7a4712..a4682529404 100644
---
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToRowCastRule.java
+++
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToRowCastRule.java
@@ -221,7 +221,8 @@ class RowToRowCastRule extends
AbstractNullAwareCodeGeneratorCastRule<RowData, R
elseBodyWriter.stmt(writeNull));
}
- writer.stmt(methodCall(writerTerm,
"complete")).assignStmt(returnVariable, rowTerm);
+ writer.stmt(methodCall(writerTerm, "complete"))
+ .assignStmt(returnVariable, methodCall(rowTerm, "copy"));
return writer.toString();
}
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 82ea5c5d024..6c87e3c97b1 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
@@ -1206,6 +1206,18 @@ public class CastFunctionITCase extends
BuiltInFunctionTestBase {
CastTestSpecBuilder.testCastTo(ARRAY(BIGINT().notNull()))
.fromCase(ARRAY(INT().notNull()), new Integer[] {1,
2}, new Long[] {1L, 2L})
.build(),
+ CastTestSpecBuilder.testCastTo(ARRAY(ROW(INT(),
STRING()).notNull()))
+ .fromCase(
+ ARRAY(ROW(INT(), VARCHAR(4)).notNull()),
+ new Row[] {Row.of(1, "two"), Row.of(3,
"four")},
+ new Row[] {Row.of(1, "two"), Row.of(3,
"four")})
+ .build(),
+ CastTestSpecBuilder.testCastTo(MAP(ROW(INT()), STRING()))
+ .fromCase(
+ MAP(ROW(INT()), VARCHAR(4)),
+ map(entry(Row.of(1), "two"), entry(Row.of(3),
"four")),
+ map(entry(Row.of(1), "two"), entry(Row.of(3),
"four")))
+ .build(),
CastTestSpecBuilder.testCastTo(ROW(BIGINT(), BIGINT(),
STRING(), ARRAY(STRING())))
.fromCase(
ROW(INT(), INT(), TIME(), ARRAY(CHAR(1))),