From bb513b364b4fe31574574c8d0afbb2255268b321 Mon Sep 17 00:00:00 2001 From: Alexander Korotkov Date: Mon, 1 Feb 2021 14:06:02 +0300 Subject: [PATCH] Get rid of unnecessary memory allocation in jsonb_subscript_assign() Current code allocates memory for JsonbValue, but it could be placed locally. --- src/backend/utils/adt/jsonbsubs.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/utils/adt/jsonbsubs.c b/src/backend/utils/adt/jsonbsubs.c index cfb923aaa3..5868aad057 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