Thanks to visit codestin.com
Credit goes to github.com

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)