Re: Add jsonb_compact(...) for whitespace-free jsonb to text

Поиск
Список
Период
Сортировка
От Oleksandr Shulgin
Тема Re: Add jsonb_compact(...) for whitespace-free jsonb to text
Дата
Msg-id CACACo5Rkf3n3LnvB74FUB4nDNdUaGWeQG+e3=Go6gg2FjM9EiA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Add jsonb_compact(...) for whitespace-free jsonb to text  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers
On Mon, May 2, 2016 at 4:04 PM, Andrew Dunstan <andrew@dunslane.net> wrote:

On 05/02/2016 04:56 AM, Shulgin, Oleksandr wrote:
On Sun, May 1, 2016 at 3:22 AM, Andrew Dunstan <andrew@dunslane.net <mailto:andrew@dunslane.net>> wrote:

    On 04/29/2016 06:11 PM, Merlin Moncure wrote:

        This is a simple matter of removing spaces in the occasional C
        string
        literal in the serialization routines and adding a json_pretty
        function.


    I spent a few hours on this. See
    <https://bitbucket.org/adunstan/pgdevel/commits/branch/jsonformat>
    for WIP - there are three commits. No regression tests yet for the
    two new functions (json_squash and json_pretty), Otherwise fairly
    complete. Removing whitespace generation was pretty simple for
    both json and jsonb.


Looks good, thank you!

It would make sense IMO to rename FormatState's `indent' field as `pretty': it's being used to add whitespace between the punctuation, not only at start of a line.  I'd also move the "if (indent)" check out of add_indent(): just don't call it if no indent is needed.

I'll try to play with the patch to produce some regression tests for the new functions.


It was done the way it was to be as consistent as possible with how it's done for jsonb (c.f. jsonb.c:JsonbToCStringWorker and jsonb.c::add_indent).

Ah, I see.

Simply taking regression tests for jsonb_pretty() and using them against json_pretty() revealed a bug with extra indent being added before every array/object start.  Attached patch fixes that and adds the regression tests.

For json_squash() I've taken the same three test values, for lack of a better idea at the moment.  At least we are testing key order stability and that no whitespace is spit out.

Regards,
--
Alex

Вложения

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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: 9.6 and fsync=off
Следующее
От: Robert Haas
Дата:
Сообщение: Re: [sqlsmith] Failed assertion in BecomeLockGroupLeader