2015-08-29 19:11 GMT+02:00 Andrew Dunstan <and...@dunslane.net>:

>
>
> On 08/29/2015 12:02 PM, Pavel Stehule wrote:
>
>>
>>
>> 2015-08-29 15:43 GMT+02:00 Shulgin, Oleksandr <
>> oleksandr.shul...@zalando.de <mailto:oleksandr.shul...@zalando.de>>:
>>
>>     On Sat, Aug 29, 2015 at 3:39 PM, Tom Lane <t...@sss.pgh.pa.us
>>     <mailto:t...@sss.pgh.pa.us>> wrote:
>>
>>         Andrew Dunstan <and...@dunslane.net
>>         <mailto:and...@dunslane.net>> writes:
>>         > On 08/29/2015 08:47 AM, Shulgin, Oleksandr wrote:
>>         >> Given there were no loud complaints about this, the current
>> behavior
>>         >> is appropriate for most users, the rest can still work
>>         around using
>>         >> coalesce(to_json(...), json 'null').
>>
>>         > I don't think it's necessarily more correct. But I do agree
>>         that it's
>>         > not a good idea to change the behaviour unless there is major
>>         > unhappiness with it.
>>
>>         I'm not entirely convinced that JSON NULL and SQL NULL should
>>         be treated
>>         as the same concept, so I would say that the current behavior
>>         is fine ---
>>         at least when you think about it in isolation.  However,
>>         haven't we
>>         already bought into that equivalence in these examples?
>>
>>         regression=# select row_to_json(row(1,null,2));
>>                 row_to_json
>>         ---------------------------
>>          {"f1":1,"f2":null,"f3":2}
>>         (1 row)
>>
>>         regression=# select array_to_json(array[1,null,2]);
>>          array_to_json
>>         ---------------
>>          [1,null,2]
>>         (1 row)
>>
>>         or even in to_json itself:
>>
>>         regression=# select to_json(array[1,null,2]);
>>           to_json
>>         ------------
>>          [1,null,2]
>>         (1 row)
>>
>>         The scalar case is definitely failing to be consistent with these.
>>
>>
>>     Yes, that's my argument for correctness also: to_json() on a
>>     composite object should behave like distribution of to_json()
>>     calls over object/array elements.
>>
>>         Is consistency a sufficient reason to change it?
>>
>>
>>     Not for me.
>>
>>
>> It is bug - and it should be fixed. I agree, so this change is too strong
>> for fixing in minor version - but we can change it in unreleased major
>> versions - 9.5 and master.
>>
>
>
>
>
> No, frankly that's being far too free with the word bug. It's not even
> unambiguously incorrect.
>
> Note that all the to_json functions are strict. In this sense it's quite
> consistent. If we change it to being called on null input, what should we
> return if a null non-scalar is passed in?
>

what is correct from JSON perspective? All fields with NULL

Pavel


>
> cheers
>
> andrew
>
>

Reply via email to