[
https://issues.apache.org/jira/browse/CALCITE-2884?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Forward Xu reassigned CALCITE-2884:
-----------------------------------
Assignee: Forward Xu
> Add the JSON_INSERT function
> ----------------------------
>
> Key: CALCITE-2884
> URL: https://issues.apache.org/jira/browse/CALCITE-2884
> Project: Calcite
> Issue Type: New Feature
> Reporter: Forward Xu
> Assignee: Forward Xu
> Priority: Major
>
> Inserts data into a JSON document and returns the result. Returns {{NULL}} if
> any argument is {{NULL}}. An error occurs if the _{{json_doc}}_ argument is
> not a valid JSON document or any _{{path}}_ argument is not a valid path
> expression or contains a {{*}} or {{**}} wildcard.
> The path-value pairs are evaluated left to right. The document produced by
> evaluating one pair becomes the new value against which the next pair is
> evaluated.
> A path-value pair for an existing path in the document is ignored and does
> not overwrite the existing document value. A path-value pair for a
> nonexisting path in the document adds the value to the document if the path
> identifies one of these types of values:
> * A member not present in an existing object. The member is added to the
> object and associated with the new value.
> * A position past the end of an existing array. The array is extended with
> the new value. If the existing value is not an array, it is autowrapped as an
> array, then extended with the new value.
> Otherwise, a path-value pair for a nonexisting path in the document is
> ignored and has no effect.
> For a comparison of
> [{{JSON_INSERT()}}|https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-insert],
>
> [{{JSON_REPLACE()}}|https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-replace],
> and
> [{{JSON_SET()}}|https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-set],
> see the discussion of
> [{{JSON_SET()}}|https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-set].
> Example SQL:
> SELECT JSON_INSERT(v, '$.a', 10, '$.c', '[true, false]') AS c1
> FROM (VALUES ('\{ "a": 1, "b": [2, 3]}')) AS t(v);
> Result:
>
> ||c1||
> |{"a": 1, "b": [2, 3], "c": "[true, false]"}|
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)