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

Commitb107140

Browse files
committed
Fix page modification outside of critical section in GIN
By oversight52ac6cd makes ginDeletePage() sets pd_prune_xid of page to bedeleted before entering the critical section. It appears that only versions 11and later were affected by this oversight.Backpatch-through: 11
1 parent32ca32d commitb107140

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

‎src/backend/access/gin/ginvacuum.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,6 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
153153
page=BufferGetPage(dBuffer);
154154
rightlink=GinPageGetOpaque(page)->rightlink;
155155

156-
/* For deleted page remember last xid which could knew its address */
157-
GinPageSetDeleteXid(page,ReadNewTransactionId());
158-
159156
/*
160157
* Any insert which would have gone on the leaf block will now go to its
161158
* right sibling.
@@ -168,6 +165,9 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
168165
page=BufferGetPage(lBuffer);
169166
GinPageGetOpaque(page)->rightlink=rightlink;
170167

168+
/* For deleted page remember last xid which could knew its address */
169+
GinPageSetDeleteXid(page,ReadNewTransactionId());
170+
171171
/* Delete downlink from parent */
172172
parentPage=BufferGetPage(pBuffer);
173173
#ifdefUSE_ASSERT_CHECKING

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp