Improve BackendXidGetPid() to only access allProcs on matching XID
authorMichael Paquier <michael@paquier.xyz>
Fri, 8 Sep 2023 01:00:29 +0000 (10:00 +0900)
committerMichael Paquier <michael@paquier.xyz>
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;
                }