Ramin Gharib created FLINK-41345:
------------------------------------
Summary: Add VARIANT_OBJECT, VARIANT_ARRAY, VARIANT_NULL and
TO_VARIANT
Key: FLINK-41345
URL: https://issues.apache.org/jira/browse/FLINK-41345
Project: Flink
Issue Type: Sub-task
Components: Table SQL / API, Table SQL / Runtime
Reporter: Ramin Gharib
{code:sql}
VARIANT_OBJECT([key, value, ...]) -- VARIANT
VARIANT_ARRAY([value, ...]) -- VARIANT
VARIANT_NULL() -- VARIANT NOT NULL
TO_VARIANT(value) -- VARIANT NOT NULL
VARIANT_OBJECT('order_id', order_id, 'ts', ts) --
{"order_id":17,"ts":"2026-10-10T08:00:00"}
VARIANT_ARRAY(order_id, ts) -- [17,"2026-10-10T08:00:00"]
TO_VARIANT(v['gift']) -- null, a variant null,
because gift is missing
{code}
Scope:
* A value can be any type that CAST(x AS VARIANT) accepts, and keeps that type.
The values of VARIANT_ARRAY need no common type.
* In VARIANT_OBJECT and VARIANT_ARRAY, a SQL NULL value gives NULL. In
VARIANT_OBJECT, a NULL key or a duplicate key is an error.
* VARIANT_NULL() returns the same value as PARSE_JSON('null').
* TO_VARIANT is CAST(x AS VARIANT), except that SQL NULL gives a variant null.
A VARIANT comes back unchanged.
* Table API and PyFlink expressions, SQL and Table API tests, docs.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)