This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 9bcc10b [FLINK-24271][docs] Add document for special char in
JSON_VALUE
9bcc10b is described below
commit 9bcc10bd6360e816e093d251ec622d6f48cea553
Author: liliwei <[email protected]>
AuthorDate: Sun Sep 26 10:35:46 2021 +0800
[FLINK-24271][docs] Add document for special char in JSON_VALUE
This closes #17275
---
docs/data/sql_functions.yml | 15 +++++++++++----
docs/data/sql_functions_zh.yml | 15 +++++++++++----
flink-python/pyflink/table/expression.py | 2 ++
.../apache/flink/table/api/internal/BaseExpressions.java | 3 +++
4 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/docs/data/sql_functions.yml b/docs/data/sql_functions.yml
index a28f362..b3ddb15 100644
--- a/docs/data/sql_functions.yml
+++ b/docs/data/sql_functions.yml
@@ -666,19 +666,23 @@ json:
behavior for `ON EMPTY`, and raises an error for `ON ERROR`.
```
- // STRING: "true"
+ -- "true"
JSON_VALUE('{"a": true}', '$.a')
- // BOOLEAN: true
+ -- TRUE
JSON_VALUE('{"a": true}', '$.a' RETURNING BOOLEAN)
- // STRING: "false"
+ -- "false"
JSON_VALUE('{"a": true}', 'lax $.b'
DEFAULT FALSE ON EMPTY)
- // STRING: "false"
+ -- "false"
JSON_VALUE('{"a": true}', 'strict $.b'
DEFAULT FALSE ON ERROR)
+
+ -- 0.998D
+ JSON_VALUE('{"a.b": [0.998,0.996]}','$.["a.b"][0]'
+ RETURNING DOUBLE)
```
- sql: JSON_QUERY(jsonValue, path [ { WITHOUT | WITH CONDITIONAL | WITH
UNCONDITIONAL } [ ARRAY ] WRAPPER ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT |
ERROR } ON EMPTY ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT | ERROR } ON ERROR ])
table: STRING.jsonQuery(path [, JsonQueryWrapper [,
JsonQueryOnEmptyOrError, JsonQueryOnEmptyOrError ] ])
@@ -701,6 +705,9 @@ json:
JSON_QUERY('[1, 2]', '$')
-- NULL
JSON_QUERY(CAST(NULL AS STRING), '$')
+ -- '["c1","c2"]'
+ JSON_QUERY('{"a":[{"c":"c1"},{"c":"c2"}]}',
+ 'lax $.a[*].c')
-- Wrap result into an array
-- '[{}]'
diff --git a/docs/data/sql_functions_zh.yml b/docs/data/sql_functions_zh.yml
index ecf8b69..f0fa6b4 100644
--- a/docs/data/sql_functions_zh.yml
+++ b/docs/data/sql_functions_zh.yml
@@ -784,19 +784,23 @@ json:
behavior for `ON EMPTY`, and raises an error for `ON ERROR`.
```
- // STRING: "true"
+ -- "true"
JSON_VALUE('{"a": true}', '$.a')
- // BOOLEAN: true
+ -- TRUE
JSON_VALUE('{"a": true}', '$.a' RETURNING BOOLEAN)
- // STRING: "false"
+ -- "false"
JSON_VALUE('{"a": true}', 'lax $.b'
DEFAULT FALSE ON EMPTY)
- // STRING: "false"
+ -- "false"
JSON_VALUE('{"a": true}', 'strict $.b'
DEFAULT FALSE ON ERROR)
+
+ -- 0.998D
+ JSON_VALUE('{"a.b": [0.998,0.996]}','$.["a.b"][0]'
+ RETURNING DOUBLE)
```
- sql: JSON_QUERY(jsonValue, path [ { WITHOUT | WITH CONDITIONAL | WITH
UNCONDITIONAL } [ ARRAY ] WRAPPER ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT |
ERROR } ON EMPTY ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT | ERROR } ON ERROR ])
table: STRING.jsonQuery(path [, JsonQueryWrapper [,
JsonQueryOnEmptyOrError, JsonQueryOnEmptyOrError ] ])
@@ -819,6 +823,9 @@ json:
JSON_QUERY('[1, 2]', '$')
-- NULL
JSON_QUERY(CAST(NULL AS STRING), '$')
+ -- '["c1","c2"]'
+ JSON_QUERY('{"a":[{"c":"c1"},{"c":"c2"}]}',
+ 'lax $.a[*].c')
-- Wrap result into an array
-- '[{}]'
diff --git a/flink-python/pyflink/table/expression.py
b/flink-python/pyflink/table/expression.py
index 2f26233..aa3b3f3 100644
--- a/flink-python/pyflink/table/expression.py
+++ b/flink-python/pyflink/table/expression.py
@@ -1547,6 +1547,8 @@ class Expression(Generic[T]):
::
>>> lit('{"a": true}').json_value('$.a') # STRING: 'true'
+ >>> lit('{"a.b": [0.998,0.996]}').json_value("$.['a.b'][0]", \
+ DataTypes.DOUBLE()) # DOUBLE: 0.998
>>> lit('{"a": true}').json_value('$.a', DataTypes.BOOLEAN()) #
BOOLEAN: True
>>> lit('{"a": true}').json_value('lax $.b', \
JsonValueOnEmptyOrError.DEFAULT, False) # BOOLEAN: False
diff --git
a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/BaseExpressions.java
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/BaseExpressions.java
index cd8ea7c..4e2666e 100644
---
a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/BaseExpressions.java
+++
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/BaseExpressions.java
@@ -1426,6 +1426,9 @@ public abstract class BaseExpressions<InType, OutType> {
* // STRING: "true"
* lit("{\"a\": true}").jsonValue("$.a")
*
+ * // DOUBLE: 0.998
+ * lit("{\"a.b\": [0.998,0.996]}").jsonValue("$.['a.b'][0]",
DataTypes.DOUBLE())
+ *
* // BOOLEAN: true
* lit("{\"a\": true}").jsonValue("$.a", DataTypes.BOOLEAN())
*