mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-17 19:30:00 +08:00
amcheck: Sanitize metapage's allequalimage field.
This will be helpful if it ever proves necessary to revoke an opclass's support for deduplication. Backpatch: 13-, where nbtree deduplication was introduced.
This commit is contained in:
parent
05dfb81324
commit
be9bdab983
@ -305,8 +305,20 @@ bt_index_check_internal(Oid indrelid, bool parentcheck, bool heapallindexed,
|
||||
errmsg("index \"%s\" lacks a main relation fork",
|
||||
RelationGetRelationName(indrel))));
|
||||
|
||||
/* Check index, possibly against table it is an index on */
|
||||
/* Extract metadata from metapage, and sanitize it in passing */
|
||||
_bt_metaversion(indrel, &heapkeyspace, &allequalimage);
|
||||
if (allequalimage && !heapkeyspace)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INDEX_CORRUPTED),
|
||||
errmsg("index \"%s\" metapage has equalimage field set on unsupported nbtree version",
|
||||
RelationGetRelationName(indrel))));
|
||||
if (allequalimage && !_bt_allequalimage(indrel, false))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INDEX_CORRUPTED),
|
||||
errmsg("index \"%s\" metapage incorrectly indicates that deduplication is safe",
|
||||
RelationGetRelationName(indrel))));
|
||||
|
||||
/* Check index, possibly against table it is an index on */
|
||||
bt_check_every_level(indrel, heaprel, heapkeyspace, parentcheck,
|
||||
heapallindexed, rootdescend);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user