aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeAgg.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1999-03-20 01:13:22 +0000
committerBruce Momjian <bruce@momjian.us>1999-03-20 01:13:22 +0000
commit7d0ab659acf5d6d410f6587f01f73cb842da2847 (patch)
tree07cceadb7f183820378ce537622256cc46306627 /src/backend/executor/nodeAgg.c
parent9ede8672815c0673bbbc15eaee736de80d5df675 (diff)
downloadpostgresql-7d0ab659acf5d6d410f6587f01f73cb842da2847.tar.gz
postgresql-7d0ab659acf5d6d410f6587f01f73cb842da2847.zip
Fix for aggregate memory leaks from Erik Riedel.
Diffstat (limited to 'src/backend/executor/nodeAgg.c')
-rw-r--r--src/backend/executor/nodeAgg.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index d379077af51..288e16555e7 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -110,6 +110,7 @@ ExecAgg(Agg *node)
isNull2 = FALSE;
bool qual_result;
+ Datum oldVal = (Datum) NULL; /* XXX - so that we can save and free on each iteration - er1p */
/* ---------------------
* get state info from node
@@ -372,8 +373,10 @@ ExecAgg(Agg *node)
*/
args[0] = value1[aggno];
args[1] = newVal;
+ oldVal = value1[aggno]; /* XXX - save so we can free later - er1p */
value1[aggno] = (Datum) fmgr_c(&aggfns->xfn1,
(FmgrValues *) args, &isNull1);
+ pfree(oldVal); /* XXX - new, let's free the old datum - er1p */
Assert(!isNull1);
}
}