Re: SQL/JSON: functions - Mailing list pgsql-hackers

From Nikita Glukhov
Subject Re: SQL/JSON: functions
Date
Msg-id 7d7ca51d-517e-c560-2ee1-ddb4aeb164ef@postgrespro.ru
Whole thread Raw
In response to Re: SQL/JSON: functions  (Pavel Stehule <pavel.stehule@gmail.com>)
Responses Re: SQL/JSON: functions
Re: SQL/JSON: functions
List pgsql-hackers

Attached 47th version of the patches.

On 21.03.2020 22:38, Pavel Stehule wrote:

On 21. 3. 2020 v 11:07 Nikita Glukhov <n.gluhov@postgrespro.ru> wrote:

Attached 46th version of the patches.

On 20.03.2020 22:34, Pavel Stehule wrote:

On 19.03.2020 23:57 Nikita Glukhov <n.gluhov@postgrespro.ru> wrote:
Attached 45th version of the patches.

Nodes JsonFormat, JsonReturning, JsonPassing, JsonBehavior were fixed.

On 17.03.2020 21:35, Pavel Stehule wrote:
User functions json[b]_build_object_ext() and json[b]_build_array_ext() also 
can be easily removed.   But it seems harder to remove new aggregate functions 
json[b]_objectagg() and json[b]_agg_strict(), because they can't be called 
directly from JsonCtorExpr node.

I don't see reasons for another reduction now. Can be great if you can finalize work what you plan for pg13.

I have removed json[b]_build_object_ext() and json[b]_build_array_ext().

But json[b]_objectagg() and json[b]_agg_strict() are still present.
It seems that removing them requires majors refactoring of the execution
of Aggref and WindowFunc nodes.
I have replaced aggregate function

json[b]_objectagg(key any, val any, absent_on_null boolean, unique_keys boolean)

with three separate functions:

json[b]_object_agg_strict(any, any) 
json[b]_object_agg_unique(any, any) 
json[b]_object_agg_unique_strict(any, any)


This should be more correct than single aggregate with additional parameters.

--
Nikita Glukhov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Attachment

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Assert() failures during RI checks
Next
From: Nikita Glukhov
Date:
Subject: Re: SQL/JSON: JSON_TABLE