[
https://issues.apache.org/jira/browse/FLINK-40936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-40936:
-----------------------------------
Labels: pull-request-available (was: )
> Built-in functions compare VARIANT array elements and map keys by their
> binary encoding
> ---------------------------------------------------------------------------------------
>
> Key: FLINK-40936
> URL: https://issues.apache.org/jira/browse/FLINK-40936
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Planner, Table SQL / Runtime
> Reporter: Ramin Gharib
> Assignee: Ramin Gharib
> Priority: Major
> Labels: pull-request-available
>
> Functions that compare array elements or map keys compare VARIANT values by
> their binary encoding. One VARIANT value has many valid encodings. Object
> keys can be stored in any order, a field read from an object keeps the key
> dictionary of its parent, and a number keeps its storage width. So these
> functions treat equal values as different and return wrong results, without
> an error.
> {code:sql}
> -- t(s STRING) has three rows: \{"a":1,"b":2}, \{"b":2,"a":1}, \{"a":1,"c":3}
> SELECT ARRAY_CONTAINS(ARRAY[PARSE_JSON(s)['a']], PARSE_JSON('1')) FROM t;
> -- returns false
> {code}
> Affected functions: ARRAY_CONTAINS, ARRAY_DISTINCT, ARRAY_POSITION,
> ARRAY_REMOVE, ARRAY_UNION, ARRAY_EXCEPT, ARRAY_INTERSECT, MAP_CONTAINS_KEY
> and MAP_UNION. GREATEST, LEAST and MAP_FROM_ENTRIES also accept VARIANT
> during type inference.
> FLINK-40910 rejects VARIANT in GROUP BY, DISTINCT, joins, set operations and
> comparison operators. This issue rejects VARIANT, also when nested in a ROW
> or structured type, as the element or key that these functions compare.
> LogicalTypeChecks.areComparable rejects types that are not comparable key
> types, and the functions above check element or key equality in their input
> type strategy. Users cast the value to a concrete type first.
> Compatibility: these functions build their equality check again during code
> generation. A job restored from a compiled plan that calls one of them on
> VARIANT elements or keys fails when it is executed, before the job is
> submitted.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)