From: Tom Lane Date: Sun, 29 Jun 2008 21:04:01 +0000 (+0000) Subject: Remove unnecessary coziness of GIN code with datum copying. Now that X-Git-Tag: REL8_4_BETA1~1228 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ea9b997ef07672d45278ab1c5b0634eaa090966;p=postgresql Remove unnecessary coziness of GIN code with datum copying. Now that space is tracked via GetMemoryChunkSpace, there's really no advantage to duplicating datumCopy's innards here. This is one bit of my toast indirection patch that should go in anyway. --- diff --git a/src/backend/access/gin/ginbulk.c b/src/backend/access/gin/ginbulk.c index 2165428c54..b17e87cdb1 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; }