@@ -3611,21 +3611,17 @@ transformJsonArrayQueryConstructor(ParseState *pstate,
36113611static Node *
36123612transformJsonAggConstructor (ParseState * pstate ,JsonAggConstructor * agg_ctor ,
36133613JsonReturning * returning ,List * args ,
3614- const char * aggfn ,Oid aggtype ,
3614+ Oid aggfnoid ,Oid aggtype ,
36153615JsonConstructorType ctor_type ,
36163616bool unique ,bool absent_on_null )
36173617{
3618- Oid aggfnoid ;
36193618Node * node ;
36203619Expr * aggfilter ;
36213620
36223621aggfilter = agg_ctor -> agg_filter ? (Expr * )
36233622transformWhereClause (pstate ,agg_ctor -> agg_filter ,
36243623EXPR_KIND_FILTER ,"FILTER" ) :NULL ;
36253624
3626- aggfnoid = DatumGetInt32 (DirectFunctionCall1 (regprocin ,
3627- CStringGetDatum (aggfn )));
3628-
36293625if (agg_ctor -> over )
36303626{
36313627/* window function */
@@ -3703,7 +3699,7 @@ transformJsonObjectAgg(ParseState *pstate, JsonObjectAgg *agg)
37033699Node * key ;
37043700Node * val ;
37053701List * args ;
3706- const char * aggfnname ;
3702+ Oid aggfnoid ;
37073703Oid aggtype ;
37083704
37093705key = transformExprRecurse (pstate , (Node * )agg -> arg -> key );
@@ -3717,33 +3713,33 @@ transformJsonObjectAgg(ParseState *pstate, JsonObjectAgg *agg)
37173713{
37183714if (agg -> absent_on_null )
37193715if (agg -> unique )
3720- aggfnname = "pg_catalog.jsonb_object_agg_unique_strict" ;
3716+ aggfnoid = F_JSONB_OBJECT_AGG_UNIQUE_STRICT ;
37213717else
3722- aggfnname = "pg_catalog.jsonb_object_agg_strict" ;
3718+ aggfnoid = F_JSONB_OBJECT_AGG_STRICT ;
37233719else if (agg -> unique )
3724- aggfnname = "pg_catalog.jsonb_object_agg_unique" ;
3720+ aggfnoid = F_JSONB_OBJECT_AGG_UNIQUE ;
37253721else
3726- aggfnname = "pg_catalog.jsonb_object_agg" ;
3722+ aggfnoid = F_JSONB_OBJECT_AGG ;
37273723
37283724aggtype = JSONBOID ;
37293725}
37303726else
37313727{
37323728if (agg -> absent_on_null )
37333729if (agg -> unique )
3734- aggfnname = "pg_catalog.json_object_agg_unique_strict" ;
3730+ aggfnoid = F_JSON_OBJECT_AGG_UNIQUE_STRICT ;
37353731else
3736- aggfnname = "pg_catalog.json_object_agg_strict" ;
3732+ aggfnoid = F_JSON_OBJECT_AGG_STRICT ;
37373733else if (agg -> unique )
3738- aggfnname = "pg_catalog.json_object_agg_unique" ;
3734+ aggfnoid = F_JSON_OBJECT_AGG_UNIQUE ;
37393735else
3740- aggfnname = "pg_catalog.json_object_agg" ;
3736+ aggfnoid = F_JSON_OBJECT_AGG ;
37413737
37423738aggtype = JSONOID ;
37433739}
37443740
37453741return transformJsonAggConstructor (pstate ,agg -> constructor ,returning ,
3746- args ,aggfnname ,aggtype ,
3742+ args ,aggfnoid ,aggtype ,
37473743JSCTOR_JSON_OBJECTAGG ,
37483744agg -> unique ,agg -> absent_on_null );
37493745}
@@ -3760,7 +3756,7 @@ transformJsonArrayAgg(ParseState *pstate, JsonArrayAgg *agg)
37603756{
37613757JsonReturning * returning ;
37623758Node * arg ;
3763- const char * aggfnname ;
3759+ Oid aggfnoid ;
37643760Oid aggtype ;
37653761
37663762arg = transformJsonValueExpr (pstate ,agg -> arg ,JS_FORMAT_DEFAULT );
@@ -3770,19 +3766,17 @@ transformJsonArrayAgg(ParseState *pstate, JsonArrayAgg *agg)
37703766
37713767if (returning -> format -> format_type == JS_FORMAT_JSONB )
37723768{
3773- aggfnname = agg -> absent_on_null ?
3774- "pg_catalog.jsonb_agg_strict" :"pg_catalog.jsonb_agg" ;
3769+ aggfnoid = agg -> absent_on_null ?F_JSONB_AGG_STRICT :F_JSONB_AGG ;
37753770aggtype = JSONBOID ;
37763771}
37773772else
37783773{
3779- aggfnname = agg -> absent_on_null ?
3780- "pg_catalog.json_agg_strict" :"pg_catalog.json_agg" ;
3774+ aggfnoid = agg -> absent_on_null ?F_JSON_AGG_STRICT :F_JSON_AGG ;
37813775aggtype = JSONOID ;
37823776}
37833777
37843778return transformJsonAggConstructor (pstate ,agg -> constructor ,returning ,
3785- list_make1 (arg ),aggfnname ,aggtype ,
3779+ list_make1 (arg ),aggfnoid ,aggtype ,
37863780JSCTOR_JSON_ARRAYAGG ,
37873781 false,agg -> absent_on_null );
37883782}