Skip to content

Commit 8a45a2e

Browse files
committed
Fix miscalculation of remaining free space during tuple chain moving.
Only affects machines where MAXALIGN > 4, and is a boundary-condition case even there, but still surprising that it's not been identified before. Also reduce tuple chain move give-up messages from WARNING to DEBUG1, since they are not unexpected conditions.
1 parent 5936055 commit 8a45a2e

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/backend/commands/vacuum.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*
1414
*
1515
* IDENTIFICATION
16-
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.243 2002/10/21 22:06:19 tgl Exp $
16+
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.244 2002/10/31 19:25:29 tgl Exp $
1717
*
1818
*-------------------------------------------------------------------------
1919
*/
@@ -1079,7 +1079,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
10791079
relname, blkno);
10801080
PageInit(page, BufferGetPageSize(buf), 0);
10811081
vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
1082-
free_size += (vacpage->free - sizeof(ItemIdData));
1082+
free_size += vacpage->free;
10831083
new_pages++;
10841084
empty_end_pages++;
10851085
vacpagecopy = copy_vac_page(vacpage);
@@ -1092,7 +1092,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
10921092
if (PageIsEmpty(page))
10931093
{
10941094
vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
1095-
free_size += (vacpage->free - sizeof(ItemIdData));
1095+
free_size += vacpage->free;
10961096
empty_pages++;
10971097
empty_end_pages++;
10981098
vacpagecopy = copy_vac_page(vacpage);
@@ -1667,7 +1667,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
16671667
/* Quick exit if we have no vtlinks to search in */
16681668
if (vacrelstats->vtlinks == NULL)
16691669
{
1670-
elog(WARNING, "Parent item in update-chain not found - can't continue repair_frag");
1670+
elog(DEBUG1, "Parent item in update-chain not found - can't continue repair_frag");
16711671
break; /* out of walk-along-page loop */
16721672
}
16731673

@@ -1704,7 +1704,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
17041704
* in scan_heap(), but it's not implemented at the
17051705
* moment and so we just stop shrinking here.
17061706
*/
1707-
elog(WARNING, "Child itemid in update-chain marked as unused - can't continue repair_frag");
1707+
elog(DEBUG1, "Child itemid in update-chain marked as unused - can't continue repair_frag");
17081708
chain_move_failed = true;
17091709
break; /* out of loop to move to chain end */
17101710
}
@@ -1753,7 +1753,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
17531753
}
17541754
to_vacpage->free -= MAXALIGN(tlen);
17551755
if (to_vacpage->offsets_used >= to_vacpage->offsets_free)
1756-
to_vacpage->free -= MAXALIGN(sizeof(ItemIdData));
1756+
to_vacpage->free -= sizeof(ItemIdData);
17571757
(to_vacpage->offsets_used)++;
17581758
if (free_vtmove == 0)
17591759
{
@@ -1789,7 +1789,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
17891789
if (vtlp == NULL)
17901790
{
17911791
/* see discussion above */
1792-
elog(WARNING, "Parent item in update-chain not found - can't continue repair_frag");
1792+
elog(DEBUG1, "Parent item in update-chain not found - can't continue repair_frag");
17931793
chain_move_failed = true;
17941794
break; /* out of check-all-items loop */
17951795
}
@@ -1825,7 +1825,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
18251825
HeapTupleHeaderGetXmin(tp.t_data))))
18261826
{
18271827
ReleaseBuffer(Pbuf);
1828-
elog(WARNING, "Too old parent tuple found - can't continue repair_frag");
1828+
elog(DEBUG1, "Too old parent tuple found - can't continue repair_frag");
18291829
chain_move_failed = true;
18301830
break; /* out of check-all-items loop */
18311831
}

0 commit comments

Comments
 (0)