Report tuple address in data-corruption error message

Most data-corruption reports mention the location of the problem, but
this one failed to.  Add it.

Backpatch all the way back.  In 12 and older, also assign the
ERRCODE_DATA_CORRUPTED error code as was done in commit fd6ec93bf8 for
13 and later.

Discussion: https://postgr.es/m/202108191637.oqyzrdtnheir@alvherre.pgsql
This commit is contained in:
Alvaro Herrera 2021-08-30 16:29:12 -04:00
parent 3a19f13cc0
commit 37e4682520
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
1 changed files with 7 additions and 1 deletions

View File

@ -2289,7 +2289,13 @@ EvalPlanQualFetch(EState *estate, Relation relation, int lockmode,
/* otherwise xmin should not be dirty... */
if (TransactionIdIsValid(SnapshotDirty.xmin))
elog(ERROR, "t_xmin is uncommitted in tuple to be updated");
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
errmsg_internal("t_xmin %u is uncommitted in tuple (%u,%u) to be updated in table \"%s\"",
SnapshotDirty.xmin,
ItemPointerGetBlockNumber(&tuple.t_self),
ItemPointerGetOffsetNumber(&tuple.t_self),
RelationGetRelationName(relation))));
/*
* If tuple is being updated by other transaction then we have to