From: Alexander Korotkov Date: Mon, 1 Feb 2021 11:06:02 +0000 (+0300) Subject: Get rid of unnecessary memory allocation in jsonb_subscript_assign() X-Git-Tag: REL_14_BETA1~832 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=bb513b364b4fe31574574c8d0afbb2255268b321;p=postgresql.git Get rid of unnecessary memory allocation in jsonb_subscript_assign() Current code allocates memory for JsonbValue, but it could be placed locally. --- diff --git a/src/backend/utils/adt/jsonbsubs.c b/src/backend/utils/adt/jsonbsubs.c index cfb923aaa35..5868aad0578 100644 --- a/src/backend/utils/adt/jsonbsubs.c +++ b/src/backend/utils/adt/jsonbsubs.c @@ -283,7 +283,7 @@ jsonb_subscript_assign(ExprState *state, */ if (*op->resnull) { - JsonbValue *newSource = (JsonbValue *) palloc(sizeof(JsonbValue)); + JsonbValue newSource; /* * To avoid any surprising results, set up an empty jsonb array in @@ -292,17 +292,17 @@ jsonb_subscript_assign(ExprState *state, */ if (workspace->expectArray) { - newSource->type = jbvArray; - newSource->val.array.nElems = 0; - newSource->val.array.rawScalar = false; + newSource.type = jbvArray; + newSource.val.array.nElems = 0; + newSource.val.array.rawScalar = false; } else { - newSource->type = jbvObject; - newSource->val.object.nPairs = 0; + newSource.type = jbvObject; + newSource.val.object.nPairs = 0; } - jsonbSource = JsonbValueToJsonb(newSource); + jsonbSource = JsonbValueToJsonb(&newSource); *op->resnull = false; } else