Remove "invalid concatenation of jsonb objects" error case.
authorTom Lane <[email protected]>
Mon, 21 Dec 2020 18:11:30 +0000 (13:11 -0500)
committerTom Lane <[email protected]>
Mon, 21 Dec 2020 18:11:30 +0000 (13:11 -0500)
commitedcdbc44eed2eae5c7b40a051998e32ecf4f8f12
treefcfa77dc67619fadc88969b3cb73d3b3745af265
parent7414a0517e82c66795929275899d66a24acd39a8
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
doc/src/sgml/func.sgml
src/backend/utils/adt/jsonfuncs.c
src/test/regress/expected/jsonb.out
src/test/regress/sql/jsonb.sql