Thread: jsonb merge with update ... on conflict do

jsonb merge with update ... on conflict do

From
Eugene Pazhitnov
Date:
Hi guys!

Is it a bug or do I miss something?

$ psql xbox -X
psql (13.2 (Ubuntu 13.2-1.pgdg20.04+1))
Type "help" for help.

xbox=> create temp table test(id int primary key, price jsonb);
CREATE TABLE
xbox=> insert into test values(1,'{"RU":10}');
INSERT 0 1
xbox=> select * from test;
 id |   price
----+------------
  1 | {"RU": 10}
(1 row)

xbox=> insert into test values(1,'{"CA":20}') on conflict(id) do update set price=EXCLUDED.price || '{"CA":20}'::jsonb;
INSERT 0 1
xbox=> select * from test;
 id |   price
----+------------
  1 | {"CA": 20}
(1 row)

xbox=> \q
$

Expected:
{"CA":20,"RU":10}


--
Evgeny Pazhitnov

Re: jsonb merge with update ... on conflict do

From
Sergei Kornilov
Date:
Hello
You meant 

... do update set price=test.price || '{"CA":20}'::jsonb;

? Or possibly

... do update set price=test.price || EXCLUDED.price;

?
In other words, why did you expect the result {"CA":20,"RU":10} ?

regards, Sergei



Re: jsonb merge with update ... on conflict do

From
Eugene Pazhitnov
Date:
Thanks a lot, Sergei! My fault. Works like a charm now.

вт, 1 июн. 2021 г. в 14:58, Sergei Kornilov <sk@zsrv.org>:
Hello
You meant

... do update set price=test.price || '{"CA":20}'::jsonb;

? Or possibly

... do update set price=test.price || EXCLUDED.price;

?
In other words, why did you expect the result {"CA":20,"RU":10} ?

regards, Sergei


--
Evgeny Pazhitnov