[ https://issues.apache.org/jira/browse/FLINK-31377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17698372#comment-17698372 ]
Timo Walther commented on FLINK-31377: -------------------------------------- Thanks for reporting this [~jackylau]. Actually it should not make a difference if element or needle data type are used. The important piece is that the input type strategy has inserted casts to the needle, such that needle and element type are identical. > BinaryArrayData getArray/getMap should Handle null correctly AssertionError: > valueArraySize (-6) should >= 0 > ------------------------------------------------------------------------------------------------------------- > > Key: FLINK-31377 > URL: https://issues.apache.org/jira/browse/FLINK-31377 > Project: Flink > Issue Type: Bug > Affects Versions: 1.18.0 > Reporter: jackylau > Priority: Major > > you can reproduce this error below. and reason is in ARRAY_CONTAINS > {code:java} > if the needle is a Map NOT NULL,and the array has null element. > this bellowing will cause getElementOrNull(ArrayData array, int pos) only can > handle not null. so it throw exception > /*elementGetter = > ArrayData.createElementGetter(needleDataType.getLogicalType());*/, > {code} > > {code:java} > // code placeholder > Stream<TestSetSpec> getTestSetSpecs() { > return Stream.of( > TestSetSpec.forFunction(BuiltInFunctionDefinitions.ARRAY_CONTAINS) > .onFieldsWithData( > new Map[] { > null, > CollectionUtil.map(entry(1, "a"), entry(2, > "b")), > CollectionUtil.map(entry(3, "c"), entry(4, > "d")), > }, > null) > .andDataTypes( > DataTypes.ARRAY(DataTypes.MAP(DataTypes.INT(), > DataTypes.STRING())), > DataTypes.STRING()) > .testResult( > $("f0").arrayContains( > CollectionUtil.map(entry(3, "c"), > entry(4, "d"))), > "ARRAY_CONTAINS(f0, MAP[3, 'c', 4, 'd'])", > true, > DataTypes.BOOLEAN())); > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)