Re: PATCH: Add hstore_to_json()

Поиск
Список
Период
Сортировка
От David E. Wheeler
Тема Re: PATCH: Add hstore_to_json()
Дата
Msg-id 9101DB53-68A9-4EC5-A8D9-EC4BECBBE4DF@kineticode.com
обсуждение исходный текст
Ответ на Re: PATCH: Add hstore_to_json()  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: PATCH: Add hstore_to_json()  (Hitoshi Harada <umi.tanuki@gmail.com>)
Список pgsql-hackers
On Jan 3, 2010, at 11:40 AM, Andrew Dunstan wrote:

> We allow composites as fields. The biggest mismatch in the type model is probably w.r.t arrays. JSON arrays can be
heterogenousand non-rectangular, AIUI. 

Cool, that sounds right.

> OK, but hstores are flat, unlike JSON. We need some way to do the equivalent of xpath along the child axis and
withoutpredicate tests. hstore has no real equivalent because it has no nesting. 

You mean so that you can fetch a nested value? Hrm. I agree that it's have to be XPath like. But perhaps we can use a
JavaScript-ysyntax for it? There could be an operator that returns records: 
   % SELECT '{"foo":{"bar":["a","b","c"]}}' -> '["foo"]';        bar    -------------    ("{a,b,c}")
   % SELECT '{"foo":{"bar":["a","b","c"]}}' -> '["foo"][1]';     1   -----    (b)

And another that returns values where possible and JSON where there are data structures.
   % SELECT '{"foo":{"bar":["a","b","c"]}}' => '["foo"]';      ?column?    ------------------    {"bar":{a,b,c}"}
   % SELECT '{"foo":{"bar":["a","b","c"]}}' => '["foo"][1]';    ?column?    ----------    b

Not sure if the same function can return different values, or if it's even appropriate. In addition to returning JSON
andTEXT as above, we'd also need to be able to return numbers: 
   % SELECT '{"foo":{"bar":[22,42]}}' => '["foo"][1]';    ?column?    ----------    42

Thoughts?

David





В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: invalid UTF-8 via pl/perl
Следующее
От: "David E. Wheeler"
Дата:
Сообщение: Re: invalid UTF-8 via pl/perl