Improve BackendXidGetPid() to only access allProcs on matching XID
authorMichael Paquier <[email protected]>
Fri, 8 Sep 2023 01:00:29 +0000 (10:00 +0900)
committerMichael Paquier <[email protected]>
Fri, 8 Sep 2023 01:00:29 +0000 (10:00 +0900)
Compilers are able to optimize that, but it makes the code slightly more
readable this way.

Author: Zhao Junwang
Reviewed-by: Ashutosh Bapat
Discussion: https://postgr.es/m/CAEG8a3+i9gtqF65B+g_puVaCQuf0rZC-EMqMyEjGFJYOqUUWfA@mail.gmail.com

src/backend/storage/ipc/procarray.c

index bfbf7f903f55ab533b99beb172d5198cc1e9c065..d93475b2bdd4c016fec8ce405a409811368f53b7 100644 (file)
@@ -3174,11 +3174,11 @@ BackendXidGetPid(TransactionId xid)
 
    for (index = 0; index < arrayP->numProcs; index++)
    {
-       int         pgprocno = arrayP->pgprocnos[index];
-       PGPROC     *proc = &allProcs[pgprocno];
-
        if (other_xids[index] == xid)
        {
+           int         pgprocno = arrayP->pgprocnos[index];
+           PGPROC     *proc = &allProcs[pgprocno];
+
            result = proc->pid;
            break;
        }