]> granicus.if.org Git - postgresql/commitdiff
Fix memory overhelding while forming index' result:
authorVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 21 Nov 1996 06:13:43 +0000 (06:13 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 21 Nov 1996 06:13:43 +0000 (06:13 +0000)
memory allocation for ItemPointerData of heap' tuple is useless
because of FormRetrieveIndexResult makes neccessary palloc.

src/backend/access/nbtree/nbtsearch.c
src/backend/access/rtree/rtget.c

index d6658ea701e1fd8506d8f958b7cababd8a707879..b3c5e007cad68baa12a0a3f4a7f4a8d6f0f74820 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.9 1996/11/13 20:47:20 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.10 1996/11/21 06:10:55 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -535,7 +535,6 @@ _bt_next(IndexScanDesc scan, ScanDirection dir)
     RetrieveIndexResult res;
     BlockNumber blkno;
     ItemPointer current;
-    ItemPointer iptr;
     BTItem btitem;
     IndexTuple itup;
     BTScanOpaque so;
@@ -569,10 +568,7 @@ _bt_next(IndexScanDesc scan, ScanDirection dir)
     itup = &btitem->bti_itup;
     
     if (_bt_checkqual(scan, itup)) {
-       iptr = (ItemPointer) palloc(sizeof(ItemPointerData));
-       memmove((char *) iptr, (char *) &(itup->t_tid),
-               sizeof(ItemPointerData));
-       res = FormRetrieveIndexResult(current, iptr);
+       res = FormRetrieveIndexResult(current, &(itup->t_tid));
        
        /* remember which buffer we have pinned and locked */
        so->btso_curbuf = buf;
@@ -608,7 +604,6 @@ _bt_first(IndexScanDesc scan, ScanDirection dir)
     BTItem btitem;
     IndexTuple itup;
     ItemPointer current;
-    ItemPointer iptr;
     BlockNumber blkno;
     StrategyNumber strat;
     RetrieveIndexResult res;
@@ -764,11 +759,7 @@ _bt_first(IndexScanDesc scan, ScanDirection dir)
     itup = &btitem->bti_itup;
     
     if (_bt_checkqual(scan, itup)) {
-       iptr = (ItemPointer) palloc(sizeof(ItemPointerData));
-       memmove((char *) iptr, (char *) &(itup->t_tid),
-               sizeof(ItemPointerData));
-       res = FormRetrieveIndexResult(current, iptr);
-       pfree(iptr);
+       res = FormRetrieveIndexResult(current, &(itup->t_tid));
        
        /* remember which buffer we have pinned */
        so->btso_curbuf = buf;
@@ -1035,7 +1026,6 @@ _bt_endpoint(IndexScanDesc scan, ScanDirection dir)
     Page page;
     BTPageOpaque opaque;
     ItemPointer current;
-    ItemPointer iptr;
     OffsetNumber offnum, maxoff;
     OffsetNumber start = 0;
     BlockNumber blkno;
@@ -1132,10 +1122,7 @@ _bt_endpoint(IndexScanDesc scan, ScanDirection dir)
     
     /* see if we picked a winner */
     if (_bt_checkqual(scan, itup)) {
-       iptr = (ItemPointer) palloc(sizeof(ItemPointerData));
-       memmove((char *) iptr, (char *) &(itup->t_tid),
-               sizeof(ItemPointerData));
-       res = FormRetrieveIndexResult(current, iptr);
+       res = FormRetrieveIndexResult(current, &(itup->t_tid));
        
        /* remember which buffer we have pinned */
        so = (BTScanOpaque) scan->opaque;
index a21f29f67ce49f3009e3e2ca8b8bd6c22a00db4d..09f10f1aa981d83debd2d5a3f7e226e40b0c4eff 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtget.c,v 1.6 1996/11/05 10:54:16 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtget.c,v 1.7 1996/11/21 06:13:43 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -66,7 +66,6 @@ rtfirst(IndexScanDesc s, ScanDirection dir)
     RTSTACK *stk;
     BlockNumber blk;
     IndexTuple it;
-    ItemPointer ip;
     
     b = ReadBuffer(s->relation, P_ROOT);
     p = BufferGetPage(b);
@@ -106,13 +105,10 @@ rtfirst(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 = (RTSTACK *) palloc(sizeof(RTSTACK));
@@ -145,7 +141,6 @@ rtnext(IndexScanDesc s, ScanDirection dir)
     RTSTACK *stk;
     BlockNumber blk;
     IndexTuple it;
-    ItemPointer ip;
     
     blk = ItemPointerGetBlockNumber(&(s->currentItemData));
     n = ItemPointerGetOffsetNumber(&(s->currentItemData));
@@ -191,13 +186,10 @@ rtnext(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 = (RTSTACK *) palloc(sizeof(RTSTACK));
@@ -288,6 +280,8 @@ rtscancache(IndexScanDesc s, ScanDirection dir)
     else
        res = (RetrieveIndexResult) NULL;
     
+    pfree (ip);
+
     return (res);
 }