mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Check only live tuples for OID validity, to avoid issues after ALTER
TABLE. Per recent discussion.
This commit is contained in:
@ -13,7 +13,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.273 2004/02/10 03:42:43 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.274 2004/02/12 05:39:55 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1178,6 +1178,14 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
|
Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
|
||||||
pgchanged = true;
|
pgchanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Other checks...
|
||||||
|
*/
|
||||||
|
if (onerel->rd_rel->relhasoids &&
|
||||||
|
!OidIsValid(HeapTupleGetOid(&tuple)))
|
||||||
|
elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
|
||||||
|
relname, blkno, offnum);
|
||||||
break;
|
break;
|
||||||
case HEAPTUPLE_RECENTLY_DEAD:
|
case HEAPTUPLE_RECENTLY_DEAD:
|
||||||
|
|
||||||
@ -1244,14 +1252,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
if (sv_infomask != tuple.t_data->t_infomask)
|
if (sv_infomask != tuple.t_data->t_infomask)
|
||||||
pgchanged = true;
|
pgchanged = true;
|
||||||
|
|
||||||
/*
|
|
||||||
* Other checks...
|
|
||||||
*/
|
|
||||||
if (onerel->rd_rel->relhasoids &&
|
|
||||||
!OidIsValid(HeapTupleGetOid(&tuple)))
|
|
||||||
elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
|
|
||||||
relname, blkno, offnum);
|
|
||||||
|
|
||||||
if (tupgone)
|
if (tupgone)
|
||||||
{
|
{
|
||||||
ItemId lpp;
|
ItemId lpp;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.37 2004/02/10 03:42:44 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.38 2004/02/12 05:39:55 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -336,6 +336,14 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
|
|||||||
Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
|
Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
|
||||||
pgchanged = true;
|
pgchanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Other checks...
|
||||||
|
*/
|
||||||
|
if (onerel->rd_rel->relhasoids &&
|
||||||
|
!OidIsValid(HeapTupleGetOid(&tuple)))
|
||||||
|
elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
|
||||||
|
relname, blkno, offnum);
|
||||||
break;
|
break;
|
||||||
case HEAPTUPLE_RECENTLY_DEAD:
|
case HEAPTUPLE_RECENTLY_DEAD:
|
||||||
|
|
||||||
@ -360,14 +368,6 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
|
|||||||
if (sv_infomask != tuple.t_data->t_infomask)
|
if (sv_infomask != tuple.t_data->t_infomask)
|
||||||
pgchanged = true;
|
pgchanged = true;
|
||||||
|
|
||||||
/*
|
|
||||||
* Other checks...
|
|
||||||
*/
|
|
||||||
if (onerel->rd_rel->relhasoids &&
|
|
||||||
!OidIsValid(HeapTupleGetOid(&tuple)))
|
|
||||||
elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
|
|
||||||
relname, blkno, offnum);
|
|
||||||
|
|
||||||
if (tupgone)
|
if (tupgone)
|
||||||
{
|
{
|
||||||
lazy_record_dead_tuple(vacrelstats, &(tuple.t_self));
|
lazy_record_dead_tuple(vacrelstats, &(tuple.t_self));
|
||||||
|
Reference in New Issue
Block a user