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

Commit4482c6a

Browse files
committed
BRIN revmap pages are not standard pages ...
... and therefore we ought not to tell XLogRegisterBuffer the opposite,when writing XLog for a brin update that moves the index tuple to adifferent page. Otherwise, xlog insertion would try to "compress thehole" when producing a full-page image for it; but since we don't updatepd_lower/upper, the hole covers the whole page. On WAL replay, therevmap page becomes empty and so the entire portion of the index isuseless and needs to be recomputed.This is low-probability: a BRIN update only moves an index tuple to adifferent page when the summary tuple is larger than the existing one,which doesn't happen with fixed-width datatypes. Also, the revmappage must be first after a checkpoint.Report and patch: Kuntal GhoshBug is alleged to have detected by a WAL-consistency-checking tool.Discussion:https://postgr.es/m/CAGz5QCJ=00UQjScSEFbV=0qO5ShTZB9WWz_Fm7+Wd83zPs9Geg@mail.gmail.comI posted a test case demonstrating the problem, but I'm refraining fromadding it to the test suite; if the WAL consistency tool makes it in,that will be a better way to catch this from regressing. (We shoulddefinitely have someting that causes not-same-page updates, though.)
1 parent8b1bf31 commit4482c6a

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

‎src/backend/access/brin/brin_pageops.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,
289289
XLogRegisterBufData(0, (char*)newtup,newsz);
290290

291291
/* revmap page */
292-
XLogRegisterBuffer(1,revmapbuf,REGBUF_STANDARD);
292+
XLogRegisterBuffer(1,revmapbuf,0);
293293

294294
/* old page */
295295
XLogRegisterBuffer(2,oldbuf,REGBUF_STANDARD);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp