git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fe61df7)
Get rid of unnecessary memory allocation in jsonb_subscript_assign()
Mon, 1 Feb 2021 11:06:02 +0000 (14:06 +0300)
Mon, 1 Feb 2021 11:06:02 +0000 (14:06 +0300)
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 cfb923aaa35cdfa0371b3fa3d3500edd349451a1..5868aad0578f0bb016a9d49e40da87145ca40d1d 100644 (file)
--- 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
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /