From 936114a019f6ddc7c9f7a2326d79879ba7015169 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 4 Sep 2001 19:12:05 +0000 Subject: [PATCH] Fix comment, add Assert. --- src/backend/commands/vacuum.c | 6 +++--- src/backend/commands/vacuumlazy.c | 13 ++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index fe72ff9602..991af5d5f3 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.208 2001/08/26 16:55:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.209 2001/09/04 19:12:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1069,8 +1069,8 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, FreezeLimit)) { tuple.t_data->t_xmin = FrozenTransactionId; - tuple.t_data->t_infomask &= ~HEAP_XMIN_INVALID; - tuple.t_data->t_infomask |= HEAP_XMIN_COMMITTED; + /* infomask should be okay already */ + Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED); pgchanged = true; } break; diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index f525ecaf36..8351da5e7d 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -31,7 +31,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.5 2001/08/26 16:55:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.6 2001/09/04 19:12:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -318,14 +318,21 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, /* * Tuple is good. Consider whether to replace its xmin * value with FrozenTransactionId. + * + * NB: Since we hold only a shared buffer lock here, + * we are assuming that TransactionId read/write + * is atomic. This is not the only place that makes + * such an assumption. It'd be possible to avoid the + * assumption by momentarily acquiring exclusive lock, + * but for the moment I see no need to. */ if (TransactionIdIsNormal(tuple.t_data->t_xmin) && TransactionIdPrecedes(tuple.t_data->t_xmin, FreezeLimit)) { tuple.t_data->t_xmin = FrozenTransactionId; - tuple.t_data->t_infomask &= ~HEAP_XMIN_INVALID; - tuple.t_data->t_infomask |= HEAP_XMIN_COMMITTED; + /* infomask should be okay already */ + Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED); pgchanged = true; } break;