%d in log_line_prefix doesn't work for bg/autovacuum workers
От | Andres Freund |
---|---|
Тема | %d in log_line_prefix doesn't work for bg/autovacuum workers |
Дата | |
Msg-id | 20140516175456.GO23662@alap3.anarazel.de обсуждение исходный текст |
Ответы |
Re: %d in log_line_prefix doesn't work for bg/autovacuum workers
Re: %d in log_line_prefix doesn't work for bg/autovacuum workers |
Список | pgsql-hackers |
Hi, elog.c's log_line_prefix() processes %d with: case 'd': if (MyProcPort) { const char *dbname = MyProcPort->database_name; if (dbname == NULL || *dbname == '\0') dbname = _("[unknown]"); if (padding != 0) appendStringInfo(buf, "%*s", padding, dbname); else appendStringInfoString(buf, dbname); } else if (padding != 0) appendStringInfoSpaces(buf, padding > 0 ? padding : -padding); write_csvlog() uses similar logic. Unfortunately MyProcPort only exists in user initiated backends. It's imo pretty annoying that neither bgworkers nor autovacuum workers show the proper database in the log. Why don't we just populate a global variable in InitPostgres() once we're sure which database the backend is connected to? We could fill fake MyProcPorts, but that doesn't seem like a good idea to me. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: