While preparing for a presentation, I noticed some mildly ugly effects
with log_line_prefix during session startup if log_connections is turned on.
Example (log_line_prefix = '%t %q%u@%d %r %p %c:%l'):
2005-09-19 19:16:39 EDT [unknown]@[unknown] 6541 432f46d7.198d:1 LOG:
connection received: host=[local] port=
2005-09-19 19:16:42 EDT [unknown]@[unknown] 6543 432f46da.198f:1 LOG:
connection received: host=[local] port=
2005-09-19 19:16:42 EDT postgres@template1 [local] 6543 432f46da.198f:2
LOG: connection authorized: user=postgres database=template1
2005-09-19 19:16:44 EDT postgres@template1 [local] 6543 432f46da.198f:3
LOG: disconnection: session time: 0:00:01.95 user=postgres
database=template1 host=[local] port=
I'm also unclear why we get two lines at the start of each connection -
that seems like a bug, or is it due to some sort of protocol
negotiation. This is a fresh FC4 machine with only pg 8.0.3 ever installed.
Anyway, currently, we test for "stop producing output here" with the
following code in elog.c:
case 'q': /* in postmaster and friends, stop if %q is seen */ /* in a backend,
justignore */ if (MyProcPort == NULL) i = format_len; break;
I'm wondering if we should extend that test slightly, to something like
if (MyProcPort == NULL || MyProcPort->username == NULL
|| *(MyProcPort->username) == '\0')
Thoughts?
cheers
andrew