static Node *
transformJsonAggConstructor(ParseState *pstate, JsonAggConstructor *agg_ctor,
JsonReturning *returning, List *args,
- const char *aggfn, Oid aggtype,
+ Oid aggfnoid, Oid aggtype,
JsonConstructorType ctor_type,
bool unique, bool absent_on_null)
{
- Oid aggfnoid;
Node *node;
Expr *aggfilter;
transformWhereClause(pstate, agg_ctor->agg_filter,
EXPR_KIND_FILTER, "FILTER") : NULL;
- aggfnoid = DatumGetInt32(DirectFunctionCall1(regprocin,
- CStringGetDatum(aggfn)));
-
if (agg_ctor->over)
{
/* window function */
Node *key;
Node *val;
List *args;
- const char *aggfnname;
+ Oid aggfnoid;
Oid aggtype;
key = transformExprRecurse(pstate, (Node *) agg->arg->key);
{
if (agg->absent_on_null)
if (agg->unique)
- aggfnname = "pg_catalog.jsonb_object_agg_unique_strict";
+ aggfnoid = F_JSONB_OBJECT_AGG_UNIQUE_STRICT;
else
- aggfnname = "pg_catalog.jsonb_object_agg_strict";
+ aggfnoid = F_JSONB_OBJECT_AGG_STRICT;
else if (agg->unique)
- aggfnname = "pg_catalog.jsonb_object_agg_unique";
+ aggfnoid = F_JSONB_OBJECT_AGG_UNIQUE;
else
- aggfnname = "pg_catalog.jsonb_object_agg";
+ aggfnoid = F_JSONB_OBJECT_AGG;
aggtype = JSONBOID;
}
{
if (agg->absent_on_null)
if (agg->unique)
- aggfnname = "pg_catalog.json_object_agg_unique_strict";
+ aggfnoid = F_JSON_OBJECT_AGG_UNIQUE_STRICT;
else
- aggfnname = "pg_catalog.json_object_agg_strict";
+ aggfnoid = F_JSON_OBJECT_AGG_STRICT;
else if (agg->unique)
- aggfnname = "pg_catalog.json_object_agg_unique";
+ aggfnoid = F_JSON_OBJECT_AGG_UNIQUE;
else
- aggfnname = "pg_catalog.json_object_agg";
+ aggfnoid = F_JSON_OBJECT_AGG;
aggtype = JSONOID;
}
return transformJsonAggConstructor(pstate, agg->constructor, returning,
- args, aggfnname, aggtype,
+ args, aggfnoid, aggtype,
JSCTOR_JSON_OBJECTAGG,
agg->unique, agg->absent_on_null);
}
{
JsonReturning *returning;
Node *arg;
- const char *aggfnname;
+ Oid aggfnoid;
Oid aggtype;
arg = transformJsonValueExpr(pstate, agg->arg, JS_FORMAT_DEFAULT);
if (returning->format->format_type == JS_FORMAT_JSONB)
{
- aggfnname = agg->absent_on_null ?
- "pg_catalog.jsonb_agg_strict" : "pg_catalog.jsonb_agg";
+ aggfnoid = agg->absent_on_null ? F_JSONB_AGG_STRICT : F_JSONB_AGG;
aggtype = JSONBOID;
}
else
{
- aggfnname = agg->absent_on_null ?
- "pg_catalog.json_agg_strict" : "pg_catalog.json_agg";
+ aggfnoid = agg->absent_on_null ? F_JSON_AGG_STRICT : F_JSON_AGG;
aggtype = JSONOID;
}
return transformJsonAggConstructor(pstate, agg->constructor, returning,
- list_make1(arg), aggfnname, aggtype,
+ list_make1(arg), aggfnoid, aggtype,
JSCTOR_JSON_ARRAYAGG,
false, agg->absent_on_null);
}