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)

Reply via email to