<mailto:andrew@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?
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