diff options
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/brin/brin_pageops.c | 4 | ||||
-rw-r--r-- | src/backend/access/brin/brin_revmap.c | 4 | ||||
-rw-r--r-- | src/backend/access/brin/brin_xlog.c | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c index f876f62cbbd..b627e3b34e8 100644 --- a/src/backend/access/brin/brin_pageops.c +++ b/src/backend/access/brin/brin_pageops.c @@ -179,8 +179,8 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, START_CRIT_SECTION(); PageIndexDeleteNoCompact(oldpage, &oldoff, 1); - if (PageAddItem(oldpage, (Item) newtup, newsz, oldoff, true, - false) == InvalidOffsetNumber) + if (PageAddItemExtended(oldpage, (Item) newtup, newsz, oldoff, + PAI_OVERWRITE | PAI_ALLOW_FAR_OFFSET) == InvalidOffsetNumber) elog(ERROR, "failed to add BRIN tuple"); MarkBufferDirty(oldbuf); diff --git a/src/backend/access/brin/brin_revmap.c b/src/backend/access/brin/brin_revmap.c index 6ddcfda0a6c..d16d87b9af7 100644 --- a/src/backend/access/brin/brin_revmap.c +++ b/src/backend/access/brin/brin_revmap.c @@ -266,6 +266,10 @@ brinGetTupleForHeapBlock(BrinRevmap *revmap, BlockNumber heapBlk, /* If we land on a revmap page, start over */ if (BRIN_IS_REGULAR_PAGE(page)) { + if (*off > PageGetMaxOffsetNumber(page)) + ereport(ERROR, + (errcode(ERRCODE_INDEX_CORRUPTED), + errmsg_internal("corrupted BRIN index: inconsistent range map"))); lp = PageGetItemId(page, *off); if (ItemIdIsUsed(lp)) { diff --git a/src/backend/access/brin/brin_xlog.c b/src/backend/access/brin/brin_xlog.c index 760f0daf024..1ebeec78ace 100644 --- a/src/backend/access/brin/brin_xlog.c +++ b/src/backend/access/brin/brin_xlog.c @@ -193,7 +193,8 @@ brin_xlog_samepage_update(XLogReaderState *record) elog(PANIC, "brin_xlog_samepage_update: invalid max offset number"); PageIndexDeleteNoCompact(page, &offnum, 1); - offnum = PageAddItem(page, (Item) brintuple, tuplen, offnum, true, false); + offnum = PageAddItemExtended(page, (Item) brintuple, tuplen, offnum, + PAI_OVERWRITE | PAI_ALLOW_FAR_OFFSET); if (offnum == InvalidOffsetNumber) elog(PANIC, "brin_xlog_samepage_update: failed to add tuple"); |