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


##########
docs/content.zh/docs/sql/reference/data-types.md:
##########
@@ -1507,19 +1507,64 @@ 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 `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.
+
+The `PARSE_JSON` function produces only the kinds that JSON syntax can express:
+
+| JSON input                                          | Stored `VARIANT` kind  
                         |
+|-----------------------------------------------------|-------------------------------------------------|
+| `null`                                              | `NULL`                 
                         |
+| `true` / `false`                                    | `BOOLEAN`              
                         |
+| Integer within the 64-bit signed range              | smallest of 
`TINYINT`/`SMALLINT`/`INT`/`BIGINT` |
+| Integer beyond 64-bit, up to 38 significant digits  | `DECIMAL`              
                         |
+| Decimal in plain notation, up to precision/scale 38 | `DECIMAL`              
                         |
+| Number in scientific notation, e.g. `1.5e3`         | `DOUBLE`               
                         |
+| Number exceeding 38 digits of precision or scale    | `DOUBLE`               
                         |
+| String                                              | `STRING`               
                         |
+| Array                                               | array (elements 
encoded by the same rules)      |
+| Object                                              | object (values encoded 
by the same rules)       |
+
+Because JSON has no literal for float, date, timestamp, or binary values, 
`PARSE_JSON` never
+produces `FLOAT`, `DATE`, `TIMESTAMP`, `TIMESTAMP_LTZ`, or `BYTES`. A 
`VARIANT` can still hold
+those kinds when built by other producers, such as the programmatic 
`VariantBuilder` API or format
+conversions like Avro.
+
+The JSON specification has no `NaN` or infinity literals, so 
`PARSE_JSON('NaN')`,
+`PARSE_JSON('Infinity')`, and `PARSE_JSON('-Infinity')` fail, and 
`TRY_PARSE_JSON` returns `NULL`.

Review Comment:
   also include the `1e400` example here.



-- 
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