Re: BUG #11207: empty path will segfault jsonb #>

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #11207: empty path will segfault jsonb #>
Дата
Msg-id 5738.1408568221@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #11207: empty path will segfault jsonb #>  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: BUG #11207: empty path will segfault jsonb #>  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Andrew Dunstan <andrew@dunslane.net> writes:
> On 08/20/2014 03:06 PM, Tom Lane wrote:
>> Peter Geoghegan <pg@heroku.com> writes:
>>> Andrew argued it was
>>> preferable to stick to the historic behavior of json operators. IMV,
>>> we should have both operators return NULL. They should be consistent,
>>> which implies changing the behavior of the existing json variants too,
>>> but I don't think that's a big problem.

>> None of these operators existed before 9.3, so I don't put a lot of stock
>> in the idea that their corner-case behaviors should be considered
>> sacrosanct already.  But that will become the case pretty soon; if we
>> don't get it right in 9.4 it will arguably be too late.

> I'm not terribly dogmatic about it. If the consensus is to change it
> then let's do it.

Well, if the preference is to make jsonb conform to the historical
behavior of json, we have work to do anyway.  I noted this inconsistency
while drawing up some test cases:

regression=# SELECT '42'::json #> array['f2'];
 ?column?
----------

(1 row)

regression=# SELECT '42'::jsonb #> array['f2'];
ERROR:  cannot extract path from a scalar

In this particular case the json code is self-inconsistent, since ->
throws an error:

regression=# SELECT '42'::json -> 'f2';
ERROR:  cannot extract element from a scalar
regression=# SELECT '42'::jsonb -> 'f2';
ERROR:  cannot call jsonb_object_field (jsonb -> text) on a scalar

I think returning NULL is the right thing here, really.  Aside from being
arguably more convenient for indexing, we will get less push-back if we
make some operators go from throwing errors to returning null than if
we make some other operators go the other way.

            regards, tom lane

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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: BUG #11207: empty path will segfault jsonb #>
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #11207: empty path will segfault jsonb #>