summaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistget.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1996-11-21 06:02:56 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1996-11-21 06:02:56 +0000
commit05b3b8613db1482157c5d2b218f4d96b48cb6d2b (patch)
tree91dec2dfd4e103ba3b3f89a8426a33a31e7794de /src/backend/access/gist/gistget.c
parent58802bf39a016324e374bc39d1df5572e56c55cf (diff)
downloadpostgresql-05b3b8613db1482157c5d2b218f4d96b48cb6d2b.tar.gz
Fix memory overhelding while forming index' result:
memory allocation for ItemPointerData of heap' tuple is useless because of FormRetrieveIndexResult makes neccessary palloc.
Diffstat (limited to 'src/backend/access/gist/gistget.c')
-rw-r--r--src/backend/access/gist/gistget.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 1a9a01a6a8..afd34be144 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
- * /usr/local/devel/pglite/cvs/src/backend/access/gisr/gistget.c,v 1.9 1995/08/01 20:16:02 jolly Exp
+ * /usr/local/devel/pglite/cvs/src/backend/access/gisr/gistget.c,v 1.9.1 1996/11/21 01:00:00 vadim Exp
*
*-------------------------------------------------------------------------
*/
@@ -67,7 +67,6 @@ gistfirst(IndexScanDesc s, ScanDirection dir)
GISTSTACK *stk;
BlockNumber blk;
IndexTuple it;
- ItemPointer ip;
b = ReadBuffer(s->relation, GISTP_ROOT);
p = BufferGetPage(b);
@@ -107,13 +106,10 @@ gistfirst(IndexScanDesc s, ScanDirection dir)
ItemPointerSet(&(s->currentItemData), BufferGetBlockNumber(b), n);
it = (IndexTuple) PageGetItem(p, PageGetItemId(p, n));
- ip = (ItemPointer) palloc(sizeof(ItemPointerData));
- memmove((char *) ip, (char *) &(it->t_tid),
- sizeof(ItemPointerData));
- ReleaseBuffer(b);
-
- res = FormRetrieveIndexResult(&(s->currentItemData), ip);
+
+ res = FormRetrieveIndexResult(&(s->currentItemData), &(it->t_tid));
+ ReleaseBuffer(b);
return (res);
} else {
stk = (GISTSTACK *) palloc(sizeof(GISTSTACK));
@@ -146,7 +142,6 @@ gistnext(IndexScanDesc s, ScanDirection dir)
GISTSTACK *stk;
BlockNumber blk;
IndexTuple it;
- ItemPointer ip;
blk = ItemPointerGetBlockNumber(&(s->currentItemData));
n = ItemPointerGetOffsetNumber(&(s->currentItemData));
@@ -192,13 +187,10 @@ gistnext(IndexScanDesc s, ScanDirection dir)
ItemPointerSet(&(s->currentItemData), BufferGetBlockNumber(b), n);
it = (IndexTuple) PageGetItem(p, PageGetItemId(p, n));
- ip = (ItemPointer) palloc(sizeof(ItemPointerData));
- memmove((char *) ip, (char *) &(it->t_tid),
- sizeof(ItemPointerData));
- ReleaseBuffer(b);
- res = FormRetrieveIndexResult(&(s->currentItemData), ip);
+ res = FormRetrieveIndexResult(&(s->currentItemData), &(it->t_tid));
+ ReleaseBuffer(b);
return (res);
} else {
stk = (GISTSTACK *) palloc(sizeof(GISTSTACK));
@@ -340,6 +332,8 @@ gistscancache(IndexScanDesc s, ScanDirection dir)
res = FormRetrieveIndexResult(&(s->currentItemData), ip);
else
res = (RetrieveIndexResult) NULL;
+
+ pfree (ip);
return (res);
}