Обсуждение: BUG #13506: jsonb || operator does not work
The following bug has been logged on the website:
Bug reference: 13506
Logged by: Grégoire HUBERT
Email address: gregoire.hubert@pragmafabrik.com
PostgreSQL version: 9.5alpha1
Operating system: debian jessie
Description:
select val->'a'||val->'c' from (values ($j${"a": {"b": 2}, "c": {"d":
3}}$j$::jsonb)) a (val);
ââââââââââââ
â ?column? â
ââââââââââââ¤
â {"d": 3} â
ââââââââââââ
(1 row)
I think this should return '{"b": 2, "d": 3}'
gregoire.hubert@pragmafabrik.com writes:
> select val->'a'||val->'c' from (values ($j${"a": {"b": 2}, "c": {"d":
> 3}}$j$::jsonb)) a (val);
You're making unwarranted assumptions about the precedence of those
operators.
(val->'a')||(val->'c') does what you expect. Working out what the
expression does as-written is left as an exercise for the reader.
regards, tom lane
On Mon, Jul 20, 2015 at 7:44 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> gregoire.hubert@pragmafabrik.com writes:
>> select val->'a'||val->'c' from (values ($j${"a": {"b": 2}, "c": {"d":
>> 3}}$j$::jsonb)) a (val);
>
> You're making unwarranted assumptions about the precedence of those
> operators.
>
> (val->'a')||(val->'c') does what you expect. Working out what the
> expression does as-written is left as an exercise for the reader.
Ok, I got it: select (val->'a')||(val->'c') from…
Thank you for taking the time to reply.
Regards,
--
Grégoire HUBERT
Tel: 06.60.15.49.80
PragmaFabrik
http://www.pragmafabrik.com