diff --git a/src/backend/access/gin/ginbulk.c b/src/backend/access/gin/ginbulk.c index 2165428c54f4a4b1e2570b572e62c04c1e90de6b..b17e87cdb111e9bbf7e3086cf057c7fda9c3626b 100644 --- a/src/backend/access/gin/ginbulk.c +++ b/src/backend/access/gin/ginbulk.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.11 2008/01/01 19:45:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.12 2008/06/29 21:04:01 tgl Exp $ *------------------------------------------------------------------------- */ @@ -78,8 +78,8 @@ ginInsertData(BuildAccumulator *accum, EntryAccumulator *entry, ItemPointer heap } /* - * This is basically the same as datumCopy(), but we duplicate some code - * to avoid computing the datum size twice. + * This is basically the same as datumCopy(), but modified to count + * palloc'd space in accum. */ static Datum getDatumCopy(BuildAccumulator *accum, Datum value) @@ -91,16 +91,8 @@ getDatumCopy(BuildAccumulator *accum, Datum value) res = value; else { - Size realSize; - char *s; - - realSize = datumGetSize(value, false, att[0]->attlen); - - s = (char *) palloc(realSize); - accum->allocatedMemory += GetMemoryChunkSpace(s); - - memcpy(s, DatumGetPointer(value), realSize); - res = PointerGetDatum(s); + res = datumCopy(value, false, att[0]->attlen); + accum->allocatedMemory += GetMemoryChunkSpace(DatumGetPointer(res)); } return res; }