mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-19 20:00:51 +08:00
amcheck: MAXALIGN() nbtree special area offset.
This isn't strictly necessary, but in theory it might matter if in the future the width of the nbtree special area changes -- its total size might not be an even number of MAXALIGN() quantums, even with padding. PageInit() MAXALIGN()s all special area offsets, but amcheck uses the offset to perform initial basic validation of line pointers, so we don't rely on the offset from the page header. The real reason to do this is to set a good example for new code that adds amcheck coverage for other index AMs. Reported-By: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> Discussion: https://postgr.es/m/CALj2ACUMqTR9nErh99FbOBmzCXE9=gXNqhBiwYOhejJJS1LXqQ@mail.gmail.com
This commit is contained in:
parent
82c3cd9741
commit
bb3ecc8c96
@ -3134,7 +3134,7 @@ PageGetItemIdCareful(BtreeCheckState *state, BlockNumber block, Page page,
|
||||
ItemId itemid = PageGetItemId(page, offset);
|
||||
|
||||
if (ItemIdGetOffset(itemid) + ItemIdGetLength(itemid) >
|
||||
BLCKSZ - sizeof(BTPageOpaqueData))
|
||||
BLCKSZ - MAXALIGN(sizeof(BTPageOpaqueData)))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INDEX_CORRUPTED),
|
||||
errmsg("line pointer points past end of tuple space in index \"%s\"",
|
||||
|
Loading…
x
Reference in New Issue
Block a user