On 2020-Dec-01, Fujii Masao wrote: > + if (proc) > + { > + if (nprocs == 0) > + appendStringInfo(&buf, "%d", proc->pid); > + else > + appendStringInfo(&buf, ", %d", > proc->pid); > + > + nprocs++; > > What happens if all the backends in wait_list have gone? In other words, > how should we handle the case where nprocs == 0 (i.e., nprocs has not been > incrmented at all)? This would very rarely happen, but can happen. > In this case, since buf.data is empty, at least there seems no need to log > the list of conflicting processes in detail message.
Yes, I noticed this too; this can be simplified by changing the condition in the ereport() call to be "nprocs > 0" (rather than wait_list being null), otherwise not print the errdetail. (You could test buf.data or buf.len instead, but that seems uglier to me.)