@@ -4088,7 +4088,7 @@ transformJsonAggCtor(ParseState *pstate, JsonAggCtor *agg_ctor,
4088
4088
jsctor = makeNode (JsonCtorExpr );
4089
4089
jsctor -> func = (Expr * )node ;
4090
4090
jsctor -> type = ctor_type ;
4091
- jsctor -> returning = * returning ;
4091
+ jsctor -> returning = returning ;
4092
4092
jsctor -> unique = unique ;
4093
4093
jsctor -> absent_on_null = absent_on_null ;
4094
4094
jsctor -> location = agg_ctor -> location ;
@@ -4107,15 +4107,13 @@ transformJsonAggCtor(ParseState *pstate, JsonAggCtor *agg_ctor,
4107
4107
static Node *
4108
4108
transformJsonObjectAgg (ParseState * pstate ,JsonObjectAgg * agg )
4109
4109
{
4110
- JsonReturning returning ;
4110
+ JsonReturning * returning ;
4111
4111
Node * key ;
4112
4112
Node * val ;
4113
4113
List * args ;
4114
4114
const char * aggfnname ;
4115
4115
Oid aggtype ;
4116
4116
4117
- transformJsonOutput (pstate ,agg -> ctor .output , true,& returning );
4118
-
4119
4117
key = transformExprRecurse (pstate , (Node * )agg -> arg -> key );
4120
4118
val = transformJsonValueExpr (pstate ,agg -> arg -> value ,JS_FORMAT_DEFAULT );
4121
4119
@@ -4124,7 +4122,9 @@ transformJsonObjectAgg(ParseState *pstate, JsonObjectAgg *agg)
4124
4122
makeBoolConst (agg -> absent_on_null , false),
4125
4123
makeBoolConst (agg -> unique , false));
4126
4124
4127
- if (returning .format .type == JS_FORMAT_JSONB )
4125
+ returning = transformJsonCtorOutput (pstate ,agg -> ctor .output ,args );
4126
+
4127
+ if (returning -> format -> format == JS_FORMAT_JSONB )
4128
4128
{
4129
4129
aggfnname = "pg_catalog.jsonb_objectagg" ;/* F_JSONB_OBJECTAGG */
4130
4130
aggtype = JSONBOID ;
@@ -4135,7 +4135,7 @@ transformJsonObjectAgg(ParseState *pstate, JsonObjectAgg *agg)
4135
4135
aggtype = JSONOID ;
4136
4136
}
4137
4137
4138
- return transformJsonAggCtor (pstate ,& agg -> ctor ,& returning ,args ,aggfnname ,
4138
+ return transformJsonAggCtor (pstate ,& agg -> ctor ,returning ,args ,aggfnname ,
4139
4139
aggtype ,JSCTOR_JSON_OBJECTAGG ,
4140
4140
agg -> unique ,agg -> absent_on_null );
4141
4141
}
@@ -4150,16 +4150,17 @@ transformJsonObjectAgg(ParseState *pstate, JsonObjectAgg *agg)
4150
4150
static Node *
4151
4151
transformJsonArrayAgg (ParseState * pstate ,JsonArrayAgg * agg )
4152
4152
{
4153
- JsonReturning returning ;
4153
+ JsonReturning * returning ;
4154
4154
Node * arg ;
4155
4155
const char * aggfnname ;
4156
4156
Oid aggtype ;
4157
4157
4158
- transformJsonOutput (pstate ,agg -> ctor .output , true,& returning );
4159
-
4160
4158
arg = transformJsonValueExpr (pstate ,agg -> arg ,JS_FORMAT_DEFAULT );
4161
4159
4162
- if (returning .format .type == JS_FORMAT_JSONB )
4160
+ returning = transformJsonCtorOutput (pstate ,agg -> ctor .output ,
4161
+ list_make1 (arg ));
4162
+
4163
+ if (returning -> format -> format == JS_FORMAT_JSONB )
4163
4164
{
4164
4165
aggfnname = agg -> absent_on_null ?
4165
4166
"pg_catalog.jsonb_agg_strict" :"pg_catalog.jsonb_agg" ;
@@ -4172,7 +4173,7 @@ transformJsonArrayAgg(ParseState *pstate, JsonArrayAgg *agg)
4172
4173
aggtype = JSONOID ;
4173
4174
}
4174
4175
4175
- return transformJsonAggCtor (pstate ,& agg -> ctor ,& returning ,list_make1 (arg ),
4176
+ return transformJsonAggCtor (pstate ,& agg -> ctor ,returning ,list_make1 (arg ),
4176
4177
aggfnname ,aggtype ,JSCTOR_JSON_ARRAYAGG ,
4177
4178
false,agg -> absent_on_null );
4178
4179
}