[
https://issues.apache.org/jira/browse/FLINK-26039?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timo Walther closed FLINK-26039.
--------------------------------
Fix Version/s: 1.13.6
1.14.4
Assignee: Han
Resolution: Fixed
Fixed in master: a8ba755da86c9e5429056c83045384e836dd010a
Fixed in 1.14: ca9edeb8bcf6b5108bbef231b296403ac25016c0
Fixed in 1.13: ace49aa807f831e209dacf0129240137fff266f1
> Incorrect value getter in map unnest table function
> ---------------------------------------------------
>
> Key: FLINK-26039
> URL: https://issues.apache.org/jira/browse/FLINK-26039
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Runtime
> Affects Versions: 1.14.3
> Reporter: Han
> Assignee: Han
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.15.0, 1.13.6, 1.14.4
>
>
> Suppose we have a map field that needs to be expanded.
>
> {code:java}
> CREATE TABLE t (
> id INT,
> map_field MAP<STRING, INT>
> ) WITH (
> -- ...
> );
> SELECT id, k, v FROM t, unnest(map_field) as A(k, v);{code}
>
>
> We will get the following runtime exception:
> {code:java}
> Caused by: java.lang.ClassCastException:
> org.apache.flink.table.data.binary.BinaryStringData cannot be cast to
> java.lang.Integer
> at
> org.apache.flink.table.data.GenericRowData.getInt(GenericRowData.java:149)
> at
> org.apache.flink.table.data.utils.JoinedRowData.getInt(JoinedRowData.java:149)
> at
> org.apache.flink.table.data.RowData.lambda$createFieldGetter$245ca7d1$6(RowData.java:245)
> at
> org.apache.flink.table.data.RowData.lambda$createFieldGetter$25774257$1(RowData.java:296)
> at
> org.apache.flink.table.runtime.typeutils.RowDataSerializer.copyRowData(RowDataSerializer.java:170)
> at
> org.apache.flink.table.runtime.typeutils.RowDataSerializer.copy(RowDataSerializer.java:131)
> at
> org.apache.flink.table.runtime.typeutils.RowDataSerializer.copy(RowDataSerializer.java:48)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:80)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:57)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:29)
> at
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:56)
> at
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:29)
> at
> org.apache.flink.table.runtime.util.StreamRecordCollector.collect(StreamRecordCollector.java:44)
> at
> org.apache.flink.table.runtime.collector.TableFunctionCollector.outputResult(TableFunctionCollector.java:68)
> at StreamExecCorrelate$10$TableFunctionCollector$4.collect(Unknown Source)
> at
> org.apache.flink.table.runtime.collector.WrappingCollector.outputResult(WrappingCollector.java:39)
> at
> StreamExecCorrelate$10$TableFunctionResultConverterCollector$8.collect(Unknown
> Source)
> at
> org.apache.flink.table.functions.TableFunction.collect(TableFunction.java:197)
> at
> org.apache.flink.table.runtime.functions.SqlUnnestUtils$MapUnnestTableFunction.eval(SqlUnnestUtils.java:169)
> at StreamExecCorrelate$10.processElement(Unknown Source)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:82)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:57)
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:29)
> at
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:56)
> at
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:29)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)