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

Commit4942ee6

Browse files
committed
Don't assume rd_smgr stays open across all of a rewriteheap operation;
doing so can result in crash if an sinval reset occurs meanwhile.I believe this explains intermittent buildfarm failures in cluster test.
1 parent6c2c668 commit4942ee6

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

‎src/backend/access/heap/rewriteheap.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
* Portions Copyright (c) 1994-5, Regents of the University of California
9797
*
9898
* IDENTIFICATION
99-
* $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.1 2007/04/08 01:26:27 tgl Exp $
99+
* $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.2 2007/04/17 20:49:39 tgl Exp $
100100
*
101101
*-------------------------------------------------------------------------
102102
*/
@@ -203,7 +203,6 @@ begin_heap_rewrite(Relation new_heap, TransactionId oldest_xmin,
203203
state->rs_buffer= (Page)palloc(BLCKSZ);
204204
/* new_heap needn't be empty, just locked */
205205
state->rs_blockno=RelationGetNumberOfBlocks(new_heap);
206-
/* Note: we assume RelationGetNumberOfBlocks did RelationOpenSmgr for us */
207206
state->rs_buffer_valid= false;
208207
state->rs_use_wal=use_wal;
209208
state->rs_oldest_xmin=oldest_xmin;
@@ -267,6 +266,7 @@ end_heap_rewrite(RewriteState state)
267266
log_newpage(&state->rs_new_rel->rd_node,
268267
state->rs_blockno,
269268
state->rs_buffer);
269+
RelationOpenSmgr(state->rs_new_rel);
270270
smgrextend(state->rs_new_rel->rd_smgr,state->rs_blockno,
271271
(char*)state->rs_buffer, true);
272272
}
@@ -586,6 +586,7 @@ raw_heap_insert(RewriteState state, HeapTuple tup)
586586
* temp table, because there's no need for smgr to schedule an
587587
* fsync for this write; we'll do it ourselves before committing.
588588
*/
589+
RelationOpenSmgr(state->rs_new_rel);
589590
smgrextend(state->rs_new_rel->rd_smgr,state->rs_blockno,
590591
(char*)page, true);
591592

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp