Hi, On Fri, Jul 17, 2020 at 7:01 AM Michael Paquier <mich...@paquier.xyz> wrote: > > On Thu, Jul 16, 2020 at 10:55:45PM -0400, Alvaro Herrera wrote: > > Oh, ugh, I don't like that part much. If you run connections through a > > connection pooler, it's going to be everywhere. Let's put it there only > > if the connection *is* running a parallel query, without being too > > stressed about the startup and teardown sequence. > > Hmm. Knowing if a leader is actually running parallel query or not > requires a lookup at lockGroupMembers, that itself requires a LWLock. > I think that it would be better to not require that. So what if > instead we logged %P only if Myproc has lockGroupLeader set and it > does *not* match MyProcPid? In short, it means that we would get the > information of a leader for each worker currently running parallel > query, but that we would not know from the leader if it is running a > parallel query or not at the moment of the log. One can then easily > guess what was happening on the leader by looking at the logs of the > backend matching with the PID the workers are logging with %P.
I had the same concern and was thinking about this approach too. Another argument is that IIUC any log emitted due to log_min_duration_statement wouldn't see the backend as executing a parallel query, since the workers would already have been shut down.