summaryrefslogtreecommitdiff
path: root/doc/src/sgml
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-12-21 13:11:30 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2020-12-21 13:11:30 -0500
commit1d5f3f976b26271b51a619f02436ec5c263db9f3 (patch)
tree4f47c7cb0a95d9b308a9006a2e009a5358d1f872 /doc/src/sgml
parentc336e90b266bb92a7c782eaefbeb038522e41c4b (diff)
Remove "invalid concatenation of jsonb objects" error case.
The jsonb || jsonb operator arbitrarily rejected certain combinations of scalar and non-scalar inputs, while being willing to concatenate other combinations. This was of course quite undocumented. Rather than trying to document it, let's just remove the restriction, creating a uniform rule that unless we are handling an object-to-object concatenation, non-array inputs are converted to one-element arrays, resulting in an array-to-array concatenation. (This does not change the behavior for any case that didn't throw an error before.) Per complaint from Joel Jacobson. Back-patch to all supported branches. Discussion: https://postgr.es/m/163099.1608312033@sss.pgh.pa.us
Diffstat (limited to 'doc/src/sgml')
-rw-r--r--doc/src/sgml/func.sgml11
1 files changed, 7 insertions, 4 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 2890f0e2c4d..5feb23c9371 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -10896,10 +10896,13 @@ table2-mapping
<note>
<para>
- The <literal>||</> operator concatenates the elements at the top level of
- each of its operands. It does not operate recursively. For example, if
- both operands are objects with a common key field name, the value of the
- field in the result will just be the value from the right hand operand.
+ The <literal>||</literal> operator concatenates two JSON objects by
+ generating an object containing the union of their keys, taking the
+ second object's value when there are duplicate keys. All other cases
+ produce a JSON array: first, any non-array input is converted into a
+ single-element array, and then the two arrays are concatenated.
+ It does not operate recursively; only the top-level array or object
+ structure is merged.
</para>
</note>