By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE t
("id" int, "details" jsonb)
;
INSERT INTO t
("id", "details")
VALUES
(1, '{"name": "my_name", "phone": "1234", "address": "my address"}'),
(2, '{"name": "his_name", "phone": "4321", "address": "his address"}')
;
2 rows affected
select jsonb_build_object ( 'tags',
jsonb_build_object( 'name', details->>'name', 'phone',details->>'phone')
) || details as details
from t;
details |
---|
{"name": "my_name", "tags": {"name": "my_name", "phone": "1234"}, "phone": "1234", "address": "my address"} |
{"name": "his_name", "tags": {"name": "his_name", "phone": "4321"}, "phone": "4321", "address": "his address"} |
update t set details = jsonb_build_object ( 'tags',
jsonb_build_object( 'name', details->>'name', 'phone',details->>'phone')
) || details
2 rows affected
select * from t;
id | details |
---|---|
1 | {"name": "my_name", "tags": {"name": "my_name", "phone": "1234"}, "phone": "1234", "address": "my address"} |
2 | {"name": "his_name", "tags": {"name": "his_name", "phone": "4321"}, "phone": "4321", "address": "his address"} |