]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Get rid of unnecessary memory allocation in jsonb_subscript_assign()
authorAlexander Korotkov <akorotkov@postgresql.org>
Mon, 1 Feb 2021 11:06:02 +0000 (14:06 +0300)
committerAlexander Korotkov <akorotkov@postgresql.org>
Mon, 1 Feb 2021 11:06:02 +0000 (14:06 +0300)
Current code allocates memory for JsonbValue, but it could be placed locally.

src/backend/utils/adt/jsonbsubs.c

index cfb923aaa35cdfa0371b3fa3d3500edd349451a1..5868aad0578f0bb016a9d49e40da87145ca40d1d 100644 (file)
@@ -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