Re: BUG #8218: Error when querying an JSON data, 9.3beta

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: BUG #8218: Error when querying an JSON data, 9.3beta
Дата
Msg-id 20140124163409.GB3199@momjian.us
обсуждение исходный текст
Ответ на Re: BUG #8218: Error when querying an JSON data, 9.3beta  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-bugs
On Thu, Jan 23, 2014 at 11:32:25PM -0500, Andrew Dunstan wrote:
>
> On 01/23/2014 10:05 PM, Bruce Momjian wrote:
> >On Sun, Jun  9, 2013 at 01:24:26PM -0400, Tom Lane wrote:
> >>daniel.zlatev@gmail.com writes:
> >>>CREATE TABLE products (
> >>>     data JSON
> >>>);
> >>>INSERT INTO products(data) VALUES('{"id": 1, "name": "shoes", "in_stock": 5}');
> >>>INSERT INTO products(data) VALUES('[1,2,3,4,5]');
> >>>SELECT * FROM products WHERE (data->>'in_stock')::integer > 0
> >>>Output was:
> >>>[Err] ERROR: cannot extract field from a non-object
> >>>I can understand the reason behind this error(JSON array don't has fields),
> >>>but for me it is very logical postgres to exclude this row from the
> >>>returning set, rather to throw an error.
> >>Hm.  In principle we could allow ->> to return NULL rather than failing
> >>when there's no such field, but I'm not sure that would represent good
> >>language design.  However, this example definitely shows there are some
> >>holes in the current set of JSON manipulation functions.  The only way
> >>to avoid a failure here would be to write something like
> >>
> >>    WHERE (CASE WHEN json_has_field(data, 'in_stock') THEN
> >>           (data->>'in_stock')::integer ELSE NULL::integer END) > 0
> >>
> >>but there is no "json_has_field" test function, nor any nice way to
> >>build one from the provided functions.
> >>
> >>It's probably too late to address this for 9.3, but we ought to put it
> >>on the to-do list for 9.4.
> >Was this addressed for 9.4 because I don't see it?
> >
>
> 9.4 does have json_typeof(), which should let you construct an
> adequate test along the lines Tom suggests.

Ah, I didn't catch that.  Thank you!

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Re: PostgreSQL 6.2.5 Visual Studio Build does not pass the regression tests.
Следующее
От: Moshe Jacobson
Дата:
Сообщение: Rounding error on extract(epoch ..)