mirror of
https://github.com/postgres/postgres.git
synced 2025-08-27 07:42:10 +03:00
Add error codes to some corruption log messages
In some cases we have elog(ERROR) while corruption is certain and we can give a clear error code ERRCODE_DATA_CORRUPTED or ERRCODE_INDEX_CORRUPTED. Author: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://www.postgresql.org/message-id/flat/25F6C686-6442-4A6B-BAF8-A6F7B84B16DE@yandex-team.ru
This commit is contained in:
@@ -1568,10 +1568,12 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
|
||||
if (sopaque->btpo_prev != origpagenumber)
|
||||
{
|
||||
memset(rightpage, 0, BufferGetPageSize(rbuf));
|
||||
elog(ERROR, "right sibling's left-link doesn't match: "
|
||||
"block %u links to %u instead of expected %u in index \"%s\"",
|
||||
oopaque->btpo_next, sopaque->btpo_prev, origpagenumber,
|
||||
RelationGetRelationName(rel));
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INDEX_CORRUPTED),
|
||||
errmsg_internal("right sibling's left-link doesn't match: "
|
||||
"block %u links to %u instead of expected %u in index \"%s\"",
|
||||
oopaque->btpo_next, sopaque->btpo_prev, origpagenumber,
|
||||
RelationGetRelationName(rel))));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1827,8 +1829,10 @@ _bt_insert_parent(Relation rel,
|
||||
_bt_relbuf(rel, rbuf);
|
||||
|
||||
if (pbuf == InvalidBuffer)
|
||||
elog(ERROR, "failed to re-find parent key in index \"%s\" for split pages %u/%u",
|
||||
RelationGetRelationName(rel), bknum, rbknum);
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INDEX_CORRUPTED),
|
||||
errmsg_internal("failed to re-find parent key in index \"%s\" for split pages %u/%u",
|
||||
RelationGetRelationName(rel), bknum, rbknum)));
|
||||
|
||||
/* Recursively update the parent */
|
||||
_bt_insertonpg(rel, NULL, pbuf, buf, stack->bts_parent,
|
||||
|
Reference in New Issue
Block a user