Attached is a patch to provide a number of very useful facilities to jsonb that people have asked for. These are based on work by Dmitry Dolgov in his jsonbx extension, but I take responsibility for any bugs.
The facilities are:
new operations:
concatenation: jsonb || jsonb -> jsonb deletion: jsonb - text -> jsonb deletion: jsonb - int -> text
new functions:
produce indented text: jsonb_indent(jsonb) -> text change an element at a path: jsonb_replace(jsonb, text[], jsonb) -> jsonb.
It would be relatively trivial to add:
delete an element at a path: jsonb_delete(jsonb, text[]) -> json
Would this support deleting "type" and the value 'dd' from the following?:
and I think we should do that for the sake of completeness.
The docs might need a little extra work, and the indent code definitely needs work, which I hope to complete in the next day or two, but I wanted to put a stake in the ground.
This is high on my wanted list, so thanks for working on this.