[ 
https://issues.apache.org/jira/browse/FLINK-31835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17715466#comment-17715466
 ] 

Aitozi commented on FLINK-31835:
--------------------------------

When creating Array CollectionDataType it will use the array's element type to 
construct an array conversion class. But the conversionClass is {{Integer}} for 
both  {{INT NOT NULL}} and {{INT}}. So the conversion class for Array<INT NOT 
NULL> will become {{Integer[]}}


{code:java}
if (logicalType.getTypeRoot() == LogicalTypeRoot.ARRAY && clazz == null) {
    return Array.newInstance(elementDataType.getConversionClass(), 
0).getClass();
}
{code}




> DataTypeHint don't support Row<i Array<int>>
> --------------------------------------------
>
>                 Key: FLINK-31835
>                 URL: https://issues.apache.org/jira/browse/FLINK-31835
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / API
>    Affects Versions: 1.15.4
>            Reporter: jeff-zou
>            Priority: Major
>
> Using DataTypeHint("Row<t ARRAY<INT>>") in a UDF gives the following error:
>  
> {code:java}
> Caused by: java.lang.ClassCastException: class [I cannot be cast to class 
> [Ljava.lang.Object; ([I and [Ljava.lang.Object; are in module java.base of 
> loader 'bootstrap')
> org.apache.flink.table.data.conversion.ArrayObjectArrayConverter.toInternal(ArrayObjectArrayConverter.java:40)
> org.apache.flink.table.data.conversion.DataStructureConverter.toInternalOrNull(DataStructureConverter.java:61)
> org.apache.flink.table.data.conversion.RowRowConverter.toInternal(RowRowConverter.java:75)
> org.apache.flink.table.data.conversion.RowRowConverter.toInternal(RowRowConverter.java:37)
> org.apache.flink.table.data.conversion.DataStructureConverter.toInternalOrNull(DataStructureConverter.java:61)
> StreamExecCalc$251.processElement_split9(Unknown Source)
> StreamExecCalc$251.processElement(Unknown Source)
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:82)
>  {code}
>  
> The function is as follows:
> {code:java}
> @DataTypeHint("Row<t ARRAY<INT>>")
> public Row eval() {
> int[] i = new int[3];
> return Row.of(i);
> } {code}
>  
> This error is not reported when testing other simple types, so it is not an 
> environmental problem.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to