Attached 44th version of the patches.
On 12.03.2020 16:41, Pavel Stehule wrote:
On 12.03.2020 00:09 Nikita Glukhov wrote:
Attached 43rd version of the patches.
The previous patch #4 ("Add function formats") was removed.
Instead, introduced new executor node JsonCtorExpr which is used to wrap
SQL/JSON constructor function calls (FuncExpr, Aggref, WindowFunc).
Also, JsonIsPredicate node began to be used as executor node.
This helped to remove unnecessary json[b]_is_valid() user functions.
It looks very well - all tests passed, code looks well.
Now, when there are special nodes, then the introduction of COERCE_INTERNAL_CAST is not necessary, and it is only my one and last objection again this patch's set.
I have removed patch #3 with COERCE_INTERNAL_CAST too.
Coercions in JsonValueExpr in JsonCtorExpr, which were previously hidden with
COERCE_INTERNAL_CAST and which were outputted as RETURNING or FORMAT JSON
clauses, now moved into separate expressions.
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.
The support for json type in jsonpath also seems to be immature, so I will try
to remove it in the next iteration.
--
Nikita Glukhov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company