From 7ea9b997ef07672d45278ab1c5b0634eaa090966 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 29 Jun 2008 21:04:01 +0000 Subject: [PATCH] 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. --- src/backend/access/gin/ginbulk.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) 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; } -- 2.40.0