Mesclando valores JSONB no PostgreSQL?

Usando o|| O operador produz o seguinte resultado:

select '{"a":{"b":2}}'::jsonb || '{"a":{"c":3}}'::jsonb ;
    ?column?     
-----------------
 {"a": {"c": 3}}
(1 row)

Gostaria de conseguir o seguinte resultado (?? apenas um espaço reservado para o operador):

select '{"a":{"b":2}}'::jsonb ?? '{"a":{"c":3}}'::jsonb ;
    ?column?     
-----------------
 {"a": {"b": 2, "c": 3}}
(1 row)

Então, você pode ver o nível superiora chave tem seus valores filhos "mesclados", de modo que o resultado contenha ambosb ec.

Como você "profundamente" mescla doisJSONB valores no Postgres?

Isso é possível? Em caso afirmativo, como?

Um caso de teste mais complexo:

select '{"a":{"b":{"c":3},"z":true}}'::jsonb ?? '{"a":{"b":{"d":4},"z":false}}'::jsonb ;
    ?column?     
-----------------
 {"a": {"b": {"c": 3, "d": 4}, "z": false}}
(1 row)

Outro caso de teste em que um primitivo "mescla-se" e objeto:

select '{"a":{"b":{"c":3},"z":true}}'::jsonb ?? '{"a":{"b":false,"z":false}}'::jsonb ;
        ?column?         
-----------------
 {"a": {"b": false, "z": false}}
(1 row)

questionAnswers(3)

yourAnswerToTheQuestion