Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit53b2e00

Browse files
author
Hiroshi Inoue
committed
Keep the contents of ItemPointerData not the pointers so that
per tuple memory context doesn't discard them.
1 parent793bcc6 commit53b2e00

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

‎src/backend/executor/nodeTidscan.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.18 2001/06/22 19:16:22 wieck Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.19 2001/09/29 07:57:06 inoue Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -29,11 +29,11 @@
2929
#include"access/heapam.h"
3030
#include"parser/parsetree.h"
3131

32-
staticintTidListCreate(List*,ExprContext*,ItemPointer*);
32+
staticintTidListCreate(List*,ExprContext*,ItemPointerData []);
3333
staticTupleTableSlot*TidNext(TidScan*node);
3434

3535
staticint
36-
TidListCreate(List*evalList,ExprContext*econtext,ItemPointer*tidList)
36+
TidListCreate(List*evalList,ExprContext*econtext,ItemPointerDatatidList[])
3737
{
3838
List*lst;
3939
ItemPointeritemptr;
@@ -49,7 +49,7 @@ TidListCreate(List *evalList, ExprContext *econtext, ItemPointer *tidList)
4949
NULL));
5050
if (!isNull&&itemptr&&ItemPointerIsValid(itemptr))
5151
{
52-
tidList[numTids]=itemptr;
52+
tidList[numTids]=*itemptr;
5353
numTids++;
5454
}
5555
}
@@ -80,8 +80,7 @@ TidNext(TidScan *node)
8080

8181
boolbBackward;
8282
inttidNumber;
83-
ItemPointer*tidList,
84-
itemptr;
83+
ItemPointerData*tidList;
8584

8685
/*
8786
* extract necessary information from tid scan node
@@ -146,14 +145,10 @@ TidNext(TidScan *node)
146145
{
147146
boolslot_is_valid= false;
148147

149-
itemptr=tidList[tidstate->tss_TidPtr];
150148
tuple->t_datamcxt=NULL;
151149
tuple->t_data=NULL;
152-
if (itemptr)
153-
{
154-
tuple->t_self=*(itemptr);
155-
heap_fetch(heapRelation,snapshot,tuple,&buffer,NULL);
156-
}
150+
tuple->t_self=tidList[tidstate->tss_TidPtr];
151+
heap_fetch(heapRelation,snapshot,tuple,&buffer,NULL);
157152
if (tuple->t_data!=NULL)
158153
{
159154
boolprev_matches= false;
@@ -187,7 +182,7 @@ TidNext(TidScan *node)
187182
for (prev_tid=0;prev_tid<tidstate->tss_TidPtr;
188183
prev_tid++)
189184
{
190-
if (ItemPointerEquals(tidList[prev_tid],&tuple->t_self))
185+
if (ItemPointerEquals(&tidList[prev_tid],&tuple->t_self))
191186
{
192187
prev_matches= true;
193188
break;
@@ -254,7 +249,7 @@ ExecTidReScan(TidScan *node, ExprContext *exprCtxt, Plan *parent)
254249
{
255250
EState*estate;
256251
TidScanState*tidstate;
257-
ItemPointer*tidList;
252+
ItemPointerData*tidList;
258253

259254
tidstate=node->tidstate;
260255
estate=node->scan.plan.state;
@@ -381,7 +376,7 @@ ExecInitTidScan(TidScan *node, EState *estate, Plan *parent)
381376
{
382377
TidScanState*tidstate;
383378
CommonScanState*scanstate;
384-
ItemPointer*tidList;
379+
ItemPointerData*tidList;
385380
intnumTids;
386381
inttidPtr;
387382
List*rangeTable;
@@ -436,7 +431,7 @@ ExecInitTidScan(TidScan *node, EState *estate, Plan *parent)
436431
/*
437432
* get the tid node information
438433
*/
439-
tidList= (ItemPointer*)palloc(length(node->tideval)*sizeof(ItemPointer));
434+
tidList= (ItemPointerData*)palloc(length(node->tideval)*sizeof(ItemPointerData));
440435
numTids=0;
441436
if (!node->needRescan)
442437
numTids=TidListCreate(node->tideval,scanstate->cstate.cs_ExprContext,tidList);

‎src/include/nodes/execnodes.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: execnodes.h,v 1.62 2001/07/16 05:07:00 tgl Exp $
10+
* $Id: execnodes.h,v 1.63 2001/09/2907:57:04 inoue Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -461,7 +461,7 @@ typedef struct TidScanState
461461
inttss_NumTids;
462462
inttss_TidPtr;
463463
inttss_MarkTidPtr;
464-
ItemPointer*tss_TidList;
464+
ItemPointerData*tss_TidList;
465465
HeapTupleDatatss_htup;
466466
}TidScanState;
467467

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp