[ 
https://issues.apache.org/jira/browse/CALCITE-2884?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Forward Xu updated CALCITE-2884:
--------------------------------
    Issue Type: Sub-task  (was: New Feature)
        Parent: CALCITE-2867

> Add the JSON_INSERT function
> ----------------------------
>
>                 Key: CALCITE-2884
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2884
>             Project: Calcite
>          Issue Type: Sub-task
>            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)

Reply via email to