PengFei Li created FLINK-35275: ---------------------------------- Summary: ArrayContainsFunction uses wrong DataType to create element getter Key: FLINK-35275 URL: https://issues.apache.org/jira/browse/FLINK-35275 Project: Flink Issue Type: Bug Components: Table SQL / Runtime Affects Versions: 1.16.0 Reporter: PengFei Li
In `ArrayContainsFunction`, `elementGetter` is used to get elements of an array, but it's created from the needle data type rather than the element data type which will lead to wrong results. {code:java} public ArrayContainsFunction(SpecializedContext context) { super(BuiltInFunctionDefinitions.ARRAY_CONTAINS, context); final DataType needleDataType = context.getCallContext().getArgumentDataTypes().get(1); elementGetter = ArrayData.createElementGetter(needleDataType.getLogicalType()); } {code} For example, the following sql returns true, but the expected is false. The element type is nullable int, and the needle type is non-nullable int. Using the needle type to create element getter will convert the NULL element to 0, so the result returns true. {code:java} SELECT ARRAY_CONTAINS(ARRAY[1, NULL], 0){code} -- This message was sent by Atlassian Jira (v8.20.10#820010)