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

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: BUG #11207: empty path will segfault jsonb #>
Дата
Msg-id 53F5645E.1020000@dunslane.net
обсуждение исходный текст
Ответ на Re: BUG #11207: empty path will segfault jsonb #>  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: BUG #11207: empty path will segfault jsonb #>  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On 08/20/2014 10:50 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> On 08/20/2014 07:30 PM, Tom Lane wrote:
>>> 1. #> now returns the input object if the RHS array is empty;
>> So will
>>       val #>> '{}'
>> now return a dequoted bare scalar string? I think that's where the OP
>> actually came into this.
> Hm ... as the patch stands, you get the same thing from either operator:
>
> regression=# select '"foo"'::json #> '{}';
>   ?column?
> ----------
>   "foo"
> (1 row)
>
> regression=# select '"foo"'::json #>> '{}';
>   ?column?
> ----------
>   "foo"
> (1 row)
>
> If you think the latter should be dequoted, we can probably make it so.
> I'm not entirely convinced that's right though: you could argue that
> dequoting is a function of the -> operator and we applied zero such
> operators.  (I'm not wedded to that argument, just raising it as food
> for thought.)  Comments?
>
>


This seems backwards. -> and #> return legal json. ->> and #>> return
text, which is dequoted if the result is a scalar string:

    andrew=# select '{"a":"b"}'::json #> '{a}' as j, '{"a":"b"}'::json
    #>> '{a}' as t;
       j  | t
    -----+---
      "b" | b
    (1 row)


cheers

andrew

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

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