Re: mogrify and indent features for jsonb - Mailing list pgsql-hackers

From Thom Brown
Subject Re: mogrify and indent features for jsonb
Date
Msg-id CAA-aLv4J=1ew_Do1MRKjMQVQpnNMS=wspaWjHS2hymuaFeoxTg@mail.gmail.com
Whole thread Raw
In response to Re: mogrify and indent features for jsonb  (Josh Berkus <josh@agliodbs.com>)
List pgsql-hackers
On 24 February 2015 at 19:16, Josh Berkus <josh@agliodbs.com> wrote:

> Is there a way to take the json:
>
> '{"a": 1, "b": 2, "c": {"type": "json", "stuff": "test"}, "d":
> ["aa","bb","cc","dd"]}'
>
> and add "ee" to "d" without replacing it?  I can think of ways of
> currently doing it, but it's very convoluted just for pushing a value to
> an array.

Can you think of a reasonable syntax for doing that via operators?  I
can imagine that as a json_path function, i.e.:

jsonb_add_to_path(jsonb, text[], jsonb)

or where the end of the path is an array:

jsonb_add_to_path(jsonb, text[], text|int|float|bool)

But I simply can't imagine an operator syntax which would make it clear
what the user intended.

No, there probably isn't a sane operator syntax for such an operation.  A function would be nice.  I'd just want to avoid hacking away at arrays by exploding them, adding a value then re-arraying them and replacing the value.
 
--
Thom

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Merge compact/non compact commits, make aborts dynamically sized
Next
From: Michael Meskes
Date:
Subject: Re: Dereferenced pointer checks in data.c of ECPG