[HACKERS] Jsonb transform for pl/python

Поиск
Список
Период
Сортировка
Искать
От
Anthony Bykov
Тема
[HACKERS] Jsonb transform for pl/python
Дата
Msg-id
20171025145100.3a19933f@anthony-24-g082ur
Список
Дерево обсуждения
[HACKERS] Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: [HACKERS] Jsonb transform for pl/python David Fetter <david@fetter.org>
Re: [HACKERS] Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: [HACKERS] Jsonb transform for pl/python David Fetter <david@fetter.org>
Re: [HACKERS] Jsonb transform for pl/python Aleksander Alekseev <a.alekseev@postgrespro.ru>
Re: [HACKERS] Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: Jsonb transform for pl/python Aleksander Alekseev <a.alekseev@postgrespro.ru>
Re: Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: Jsonb transform for pl/python Aleksander Alekseev <a.alekseev@postgrespro.ru>
Re: Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Tom Lane <tgl@sss.pgh.pa.us>
Re: Jsonb transform for pl/python Thomas Munro <thomas.munro@enterprisedb.com>
Re: Jsonb transform for pl/python Anthony Bykov <a.bykov@postgrespro.ru>
Re: Jsonb transform for pl/python Aleksander Alekseev <a.alekseev@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Nikita Glukhov <n.gluhov@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Nikita Glukhov <n.gluhov@postgrespro.ru>
Re: Jsonb transform for pl/python Alexander Korotkov <a.korotkov@postgrespro.ru>
Re: Jsonb transform for pl/python Nikita Glukhov <n.gluhov@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Tom Lane <tgl@sss.pgh.pa.us>
Re: Jsonb transform for pl/python Alexander Korotkov <a.korotkov@postgrespro.ru>
Re: Jsonb transform for pl/python Nikita Glukhov <n.gluhov@postgrespro.ru>
Re: Jsonb transform for pl/python Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: Jsonb transform for pl/python Michael Paquier <michael.paquier@gmail.com>
Hi.
I've implemented jsonb transform
(https://www.postgresql.org/docs/9.5/static/sql-createtransform.html)
for pl/python. 

1. '{"1":1}'::jsonb is transformed into dict {"1"=>1}, while
'["1",2]'::jsonb is transformed into list(not tuple!) ["1", 2]

2. If there is a numeric value appear in jsonb, it will be transformed
to decimal through string (Numeric->String->Decimal). Not the best
solution, but as far as I understand this is usual practise in
postgresql to serialize Numerics and de-serialize them.

3. Decimal is transformed into jsonb through string
(Decimal->String->Numeric).

An example may also be helpful to understand extension. So, as an
example, function "test" transforms incoming jsonb into python,
transforms it back into jsonb and returns it.

create extension jsonb_plpython2u cascade;

create or replace function test(val jsonb)
returns jsonb
transform for type jsonb
language plpython2u
as $$
return (val);
$$;

select test('{"1":1,"example": null}'::jsonb);

--
Anthony Bykov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
В списке pgsql-hackers по дате отправления
От: Pavel Stehule
Дата:
От: Amit Kapila
Дата:
FAQ