raminqaf commented on code in PR #28758:
URL: https://github.com/apache/flink/pull/28758#discussion_r3621070903


##########
docs/content/docs/sql/reference/data-types.md:
##########
@@ -1515,19 +1515,62 @@ close to the semantics of JSON. Compared to `ROW` and 
`STRUCTURED` type, `VARIAN
 flexibility to support highly nested and evolving schema.
 
 `VARIANT` allows for deeply nested data structures, such as arrays within 
arrays, maps within maps, 
-or combinations of both.This capability makes `VARIANT` ideal for scenarios 
where data complexity 
+or combinations of both. This capability makes `VARIANT` ideal for scenarios 
where data complexity 
 and nesting are significant.
 
 `VARIANT` allows schema evolution, enabling the storage of data with changing 
or unknown schemas 
 without requiring upfront schema definition. For example, if a new field is 
added to the data, it 
 can be directly incorporated into the `VARIANT` data without modifying the 
table schema. This is 
 particularly useful in dynamic environments where schemas may evolve over time.
 
-A primitive-valued `VARIANT` can be converted to a scalar type with `CAST` or 
`TRY_CAST`. Numeric 
-targets are lenient: a variant holding any numeric value casts to any numeric 
type, so a JSON integer 
-such as `PARSE_JSON('42')` casts to `INT` or `BIGINT`. Other targets require 
the stored value to be of 
-the matching kind. When the value cannot be converted, `CAST` fails the job 
and `TRY_CAST` returns 
-`NULL`. Use the `JSON_STRING` function to obtain the JSON string 
representation of a `VARIANT`.
+A `VARIANT` stores a single value of one of the following kinds: `NULL`, 
`BOOLEAN`, `TINYINT`,
+`SMALLINT`, `INT`, `BIGINT`, `FLOAT`, `DOUBLE`, `DECIMAL` (up to precision 
38), `STRING`, `DATE`,
+`TIMESTAMP`, `TIMESTAMP_LTZ`, `BYTES`, or a nested array or object. 
`TIMESTAMP` and `TIMESTAMP_LTZ`
+are stored with microsecond precision and `DATE` as a day count. There is no 
`TIME` kind.

Review Comment:
   @davidradl This is how the implementation of the `BinaryVariant` defines it. 
   ```java
       @Override
       public Instant getInstant() throws VariantTypeException {
           checkType(Type.TIMESTAMP_LTZ, getType());
           return microsToInstant(BinaryVariantUtil.getLong(value, pos));
       }
   ```
   
   The implementation is done based on the [Encoding types defined in 
Parquet](https://parquet.apache.org/docs/file-format/types/variantencoding/). 
Flink implements the types from `0` (NULL) to `16` (STRING). The rest of the 
types: 17 (Time Macro),18 Timestamp (Nano),19 TimestampNTZ (Nano), 20 (UUID) 
are not implemented in Flink yet.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to