[ https://issues.apache.org/jira/browse/FLINK-26039?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konstantin Knauf updated FLINK-26039: ------------------------------------- Fix Version/s: 1.13.7 (was: 1.13.6) > 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.14.4, 1.13.7 > > > 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)