Re: json_strip_nulls()

Поиск
Список
Период
Сортировка
От Erwin Brandstetter
Тема Re: json_strip_nulls()
Дата
Msg-id CAGHENJ6i2_M0KWvN_=SfRCtzpfFFQxpeBjSPjcO6X9qV=rXt6w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: json_strip_nulls()  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-docs


On Sat, 22 Jan 2022 at 22:00, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Erwin Brandstetter <brsaweda@gmail.com> writes:
> On Sat, 22 Jan 2022 at 20:31, David G. Johnston <david.g.johnston@gmail.com>
> wrote:
>> json_strip_nulls doesn't make any promise regarding its output json other
>> than that it is valid.  Since we are munging the json we are arguably
>> within our rights to output whatever transformed version we want.  The
>> format should not be documented.

> Within our rights, maybe. The manual makes related promises[1]:
>> Because the json type stores an exact copy of the input text, it will
>> preserve semantically-insignificant white space between tokens
> And[2]:
>> As previously stated, when a JSON value is input and then printed without
>> any additional processing, json outputs the same text that was input,

"Without any additional processing" is the key restriction there.

> Not strictly contradicting, but the current behavior of json_strip_nulls()
> is still surprising. Either the input should be preserved as far as
> possible or, failing that, the actual behavior documented.

It is documented --- you just quoted the text that does so.

I don't have a lot of sympathy for "JSON-reading" code that fails to
conform to the JSON RFC, so I'm disinclined to work harder than that.


I suggest to clarify the behavior of json_strip_nulls() in the manual: that it also strips insignificant white space. If that may change in future versions, also say so. People are starting to use json_strip_nulls() for the purpose (and may regret it later):
https://stackoverflow.com/questions/27505181/fetching-compact-version-of-jsonb-in-postgresql/56842519#56842519

If (like I assume) json_strip_nulls() should not be relied upon to strip whitespace, it would be great to have a separate, dedicated function for that.  That's independent from the first suggestion.

Regards
Erwin

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: json_strip_nulls()
Следующее
От: Eric Mutta
Дата:
Сообщение: Re: Typo in "27.2.8. Synchronous Replication"