Re: collect_corrupt_items_vacuum.patch - Mailing list pgsql-hackers

From Noah Misch
Subject Re: collect_corrupt_items_vacuum.patch
Date
Msg-id 20240630231816.bf.nmisch@google.com
Whole thread Raw
In response to Re: collect_corrupt_items_vacuum.patch  (Alexander Korotkov <aekorotkov@gmail.com>)
Responses Re: collect_corrupt_items_vacuum.patch
List pgsql-hackers
On Tue, Mar 12, 2024 at 02:10:59PM +0200, Alexander Korotkov wrote:
> I'm going to push this if no objections.

Commit e85662d wrote:
> --- a/src/backend/storage/ipc/procarray.c
> +++ b/src/backend/storage/ipc/procarray.c

> @@ -2740,6 +2741,8 @@ GetRunningTransactionData(void)
>       */
>      for (index = 0; index < arrayP->numProcs; index++)
>      {
> +        int            pgprocno = arrayP->pgprocnos[index];
> +        PGPROC       *proc = &allProcs[pgprocno];
>          TransactionId xid;
>  
>          /* Fetch xid just once - see GetNewTransactionId */
> @@ -2760,6 +2763,13 @@ GetRunningTransactionData(void)
>          if (TransactionIdPrecedes(xid, oldestRunningXid))
>              oldestRunningXid = xid;
>  
> +        /*
> +         * Also, update the oldest running xid within the current database.
> +         */
> +        if (proc->databaseId == MyDatabaseId &&
> +            TransactionIdPrecedes(xid, oldestRunningXid))
> +            oldestDatabaseRunningXid = xid;

Shouldn't that be s/oldestRunningXid/oldestDatabaseRunningXid/?

While this isn't a hot path, I likely would test TransactionIdPrecedes()
before fetching pgprocno and PGPROC, to reduce wasted cache misses.



pgsql-hackers by date:

Previous
From: Jelte Fennema-Nio
Date:
Subject: Re: [EXTERNAL] Re: Add non-blocking version of PQcancel
Next
From: Peter Smith
Date:
Subject: Re: walsender.c comment with no context is hard to understand