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

Commit9f19842

Browse files
committed
Hmm, it seems nodeMaterial has been broken for a good long while;
closing a relcache entry more times than you open it is not cool.
1 parentbd2d098 commit9f19842

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

‎src/backend/executor/nodeMaterial.c

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.29 2000/01/26 05:56:23 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.30 2000/03/02 04:06:39 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -86,7 +86,7 @@ ExecMaterial(Material *node)
8686
estate->es_direction=ForwardScanDirection;
8787

8888
/* ----------------
89-
* if we couldn't create the tempor current relations then
89+
* if we couldn't create the temprelation then
9090
* we print a warning and return NULL.
9191
* ----------------
9292
*/
@@ -97,13 +97,6 @@ ExecMaterial(Material *node)
9797
returnNULL;
9898
}
9999

100-
currentRelation=matstate->csstate.css_currentRelation;
101-
if (currentRelation==NULL)
102-
{
103-
elog(DEBUG,"ExecMaterial: current relation is NULL! aborting...");
104-
returnNULL;
105-
}
106-
107100
/* ----------------
108101
* retrieve tuples from the subplan and
109102
* insert them in the temporary relation
@@ -121,7 +114,6 @@ ExecMaterial(Material *node)
121114

122115
ExecClearTuple(slot);
123116
}
124-
currentRelation=tempRelation;
125117

126118
/* ----------------
127119
* restore to user specified direction
@@ -134,6 +126,7 @@ ExecMaterial(Material *node)
134126
* sorted relation and update the sortstate information
135127
* ----------------
136128
*/
129+
currentRelation=tempRelation;
137130
currentScanDesc=heap_beginscan(currentRelation,/* relation */
138131
ScanDirectionIsBackward(dir),
139132
SnapshotSelf,/* seeself */
@@ -265,15 +258,14 @@ ExecInitMaterial(Material *node, EState *estate, Plan *parent)
265258
*create the temporary relation
266259
* ----------------
267260
*/
268-
/* len = ExecTargetListLength(node->plan.targetlist); */
269261
tempDesc=ExecCreatR(tupType,_NONAME_RELATION_ID_);
270262

271263
/* ----------------
272264
*save the relation descriptor in the sortstate
273265
* ----------------
274266
*/
275267
matstate->mat_TempRelation=tempDesc;
276-
matstate->csstate.css_currentRelation=tempDesc;
268+
matstate->csstate.css_currentRelation=NULL;
277269

278270
/* ----------------
279271
*return relation oid of temporary relation in a list
@@ -312,12 +304,11 @@ ExecEndMaterial(Material *node)
312304
matstate=node->matstate;
313305
tempRelation=matstate->mat_TempRelation;
314306

315-
heap_drop(tempRelation);
316-
317307
/* ----------------
318-
*closethetemp relation and shut downthescan.
308+
*shut downthescan, but don't closethetemp relation
319309
* ----------------
320310
*/
311+
matstate->csstate.css_currentRelation=NULL;
321312
ExecCloseR((Plan*)node);
322313

323314
/* ----------------
@@ -332,6 +323,13 @@ ExecEndMaterial(Material *node)
332323
* ----------------
333324
*/
334325
ExecClearTuple(matstate->csstate.css_ScanTupleSlot);
326+
327+
/* ----------------
328+
*delete the temp relation
329+
* ----------------
330+
*/
331+
if (tempRelation!=NULL)
332+
heap_drop(tempRelation);
335333
}
336334

337335
/* ----------------------------------------------------------------

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp