mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Update vacuum comments.
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.135 2000/01/15 22:43:22 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.136 2000/01/19 22:23:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -285,6 +285,9 @@ vc_getrels(NameData *VacRelP)
|
|||||||
|
|
||||||
if (NameStr(*VacRelP))
|
if (NameStr(*VacRelP))
|
||||||
{
|
{
|
||||||
|
/* we could use the cache here, but it is clearer to use
|
||||||
|
* scankeys for both vacuum cases, bjm 2000/01/19
|
||||||
|
*/
|
||||||
ScanKeyEntryInitialize(&key, 0x0, Anum_pg_class_relname,
|
ScanKeyEntryInitialize(&key, 0x0, Anum_pg_class_relname,
|
||||||
F_NAMEEQ,
|
F_NAMEEQ,
|
||||||
PointerGetDatum(NameStr(*VacRelP)));
|
PointerGetDatum(NameStr(*VacRelP)));
|
||||||
@ -766,7 +769,6 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
}
|
}
|
||||||
else if (!TransactionIdIsInProgress(tuple.t_data->t_xmin))
|
else if (!TransactionIdIsInProgress(tuple.t_data->t_xmin))
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Not Aborted, Not Committed, Not in Progress -
|
* Not Aborted, Not Committed, Not in Progress -
|
||||||
* so it's from crashed process. - vadim 11/26/96
|
* so it's from crashed process. - vadim 11/26/96
|
||||||
@ -817,7 +819,6 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
}
|
}
|
||||||
else if (!TransactionIdIsInProgress(tuple.t_data->t_xmax))
|
else if (!TransactionIdIsInProgress(tuple.t_data->t_xmax))
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Not Aborted, Not Committed, Not in Progress - so it
|
* Not Aborted, Not Committed, Not in Progress - so it
|
||||||
* from crashed process. - vadim 06/02/97
|
* from crashed process. - vadim 06/02/97
|
||||||
@ -920,7 +921,8 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
dobufrel = true;
|
dobufrel = true;
|
||||||
if (tempPage != (Page) NULL)
|
|
||||||
|
if (tempPage != (Page) NULL)
|
||||||
{ /* Some tuples are gone */
|
{ /* Some tuples are gone */
|
||||||
PageRepairFragmentation(tempPage);
|
PageRepairFragmentation(tempPage);
|
||||||
vpc->vpd_free = ((PageHeader) tempPage)->pd_upper - ((PageHeader) tempPage)->pd_lower;
|
vpc->vpd_free = ((PageHeader) tempPage)->pd_upper - ((PageHeader) tempPage)->pd_lower;
|
||||||
@ -1266,7 +1268,7 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
* This means that in the middle of chain there was
|
* This means that in the middle of chain there was
|
||||||
* tuple updated by older (than XmaxRecent) xaction
|
* tuple updated by older (than XmaxRecent) xaction
|
||||||
* and this tuple is already deleted by me. Actually,
|
* and this tuple is already deleted by me. Actually,
|
||||||
* upper part of chain should be removed and seems
|
* upper part of chain should be removed and seems
|
||||||
* that this should be handled in vc_scanheap(), but
|
* that this should be handled in vc_scanheap(), but
|
||||||
* it's not implemented at the moment and so we
|
* it's not implemented at the moment and so we
|
||||||
* just stop shrinking here.
|
* just stop shrinking here.
|
||||||
@ -1307,9 +1309,10 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
if (vc_enough_space(fraged_pages->vpl_pagedesc[i], tlen))
|
if (vc_enough_space(fraged_pages->vpl_pagedesc[i], tlen))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == num_fraged_pages) /* can't move item
|
|
||||||
* anywhere */
|
/* can't move item anywhere */
|
||||||
{
|
if (i == num_fraged_pages)
|
||||||
|
{
|
||||||
for (i = 0; i < num_vtmove; i++)
|
for (i = 0; i < num_vtmove; i++)
|
||||||
{
|
{
|
||||||
Assert(vtmove[i].vpd->vpd_offsets_used > 0);
|
Assert(vtmove[i].vpd->vpd_offsets_used > 0);
|
||||||
@ -1341,16 +1344,12 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
free_vtmove--;
|
free_vtmove--;
|
||||||
num_vtmove++;
|
num_vtmove++;
|
||||||
|
|
||||||
/*
|
/* All done ? */
|
||||||
* All done ?
|
|
||||||
*/
|
|
||||||
if (!(tp.t_data->t_infomask & HEAP_UPDATED) ||
|
if (!(tp.t_data->t_infomask & HEAP_UPDATED) ||
|
||||||
tp.t_data->t_xmin < XmaxRecent)
|
tp.t_data->t_xmin < XmaxRecent)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/* Well, try to find tuple with old row version */
|
||||||
* Well, try to find tuple with old row version
|
|
||||||
*/
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
Buffer Pbuf;
|
Buffer Pbuf;
|
||||||
@ -1384,9 +1383,9 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
|
|||||||
/*
|
/*
|
||||||
* Read above about cases when !ItemIdIsUsed(Citemid)
|
* Read above about cases when !ItemIdIsUsed(Citemid)
|
||||||
* (child item is removed)... Due to the fact that
|
* (child item is removed)... Due to the fact that
|
||||||
* at the moment we don't remove unuseful part of
|
* at the moment we don't remove unuseful part of
|
||||||
* update-chain, it's possible to get too old
|
* update-chain, it's possible to get too old
|
||||||
* parent row here. Like as in the case which
|
* parent row here. Like as in the case which
|
||||||
* caused this problem, we stop shrinking here.
|
* caused this problem, we stop shrinking here.
|
||||||
* I could try to find real parent row but want
|
* I could try to find real parent row but want
|
||||||
* not to do it because of real solution will
|
* not to do it because of real solution will
|
||||||
@ -1660,7 +1659,7 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* walk along page */
|
} /* walk along page */
|
||||||
|
|
||||||
if (offnum < maxoff && keep_tuples > 0)
|
if (offnum < maxoff && keep_tuples > 0)
|
||||||
{
|
{
|
||||||
@ -1683,9 +1682,9 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
|
|||||||
elog(ERROR, "HEAP_MOVED_IN was not expected (2)");
|
elog(ERROR, "HEAP_MOVED_IN was not expected (2)");
|
||||||
if (tuple.t_data->t_infomask & HEAP_MOVED_OFF)
|
if (tuple.t_data->t_infomask & HEAP_MOVED_OFF)
|
||||||
{
|
{
|
||||||
if (chain_tuple_moved) /* some chains was moved
|
/* some chains was moved while */
|
||||||
* while */
|
if (chain_tuple_moved)
|
||||||
{ /* cleaning this page */
|
{ /* cleaning this page */
|
||||||
Assert(vpc->vpd_offsets_free > 0);
|
Assert(vpc->vpd_offsets_free > 0);
|
||||||
for (i = 0; i < vpc->vpd_offsets_free; i++)
|
for (i = 0; i < vpc->vpd_offsets_free; i++)
|
||||||
{
|
{
|
||||||
@ -1831,9 +1830,7 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
|
|||||||
vacrelstats->num_tuples, keep_tuples);
|
vacrelstats->num_tuples, keep_tuples);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* clean moved tuples from last page in Nvpl list */
|
||||||
* clean moved tuples from last page in Nvpl list
|
|
||||||
*/
|
|
||||||
if (vpc->vpd_blkno == blkno - 1 && vpc->vpd_offsets_free > 0)
|
if (vpc->vpd_blkno == blkno - 1 && vpc->vpd_offsets_free > 0)
|
||||||
{
|
{
|
||||||
buf = ReadBuffer(onerel, vpc->vpd_blkno);
|
buf = ReadBuffer(onerel, vpc->vpd_blkno);
|
||||||
|
Reference in New Issue
Block a user