Re: Add jsonb_translate(jsonb, from, to)
От | Pavel Stehule |
---|---|
Тема | Re: Add jsonb_translate(jsonb, from, to) |
Дата | |
Msg-id | CAFj8pRDu6mNygXdkVjW5i+DFFEMgS1Kw8=NgFsnZsScG07cUvA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Add jsonb_translate(jsonb, from, to) (Florents Tselai <florents.tselai@gmail.com>) |
Ответы |
Re: Add jsonb_translate(jsonb, from, to)
|
Список | pgsql-hackers |
ne 28. 9. 2025 v 12:11 odesílatel Florents Tselai <florents.tselai@gmail.com> napsal:
Thanks for taking the time EvanOn Sun, Sep 28, 2025, 12:34 Chao Li <li.evan.chao@gmail.com> wrote:Hi Florents,Thanks for the patch. I once had the same pain on a similar task, I had to create a PL/SQL function at the time.I haven’t read the code change yet, but I think the function name jsonb_translate() sounds to generic. To make the name more meaningful, I would suggest a few candidates: jsonb_replace_text(), or jsonb_replace_value(), or jsonb_deep_replace().Also, I want to understand why do you decide to support only whole word matching?```evantest=# select jsonb_translate('{"message": "world"}', 'wor', 'earth');jsonb_translate----------------------{"message": "world"}(1 row)```With this patch, partial match will not result in a replacement.That is on purpose. My use case for this is to replace categorical/enum values scattered deep inside the json structure.Hence the name translate which usually means mapping from one key space to another.Partial replacement wasn't the case for me, and most importantly I guess I could achieve the same by casting to text replacing and casting back to jsonb.
Regards
Pavel
On Sep 28, 2025, at 01:16, Florents Tselai <florents.tselai@gmail.com> wrote:<v1-0001-Add-jsonb_translate-function.patch>This is a spur of the moment patch really,but while going through the process of translating some json data from Greek to English I found myself wishing for $subject.Inspired by the Unix tr utility.Here's a working v1If others find it useful as well,I'd go ahead with a json implementationAnd an additional parameter to make in-arrays replacement optional.Best regards,
В списке pgsql-hackers по дате отправления: