($INBOX_DIR/description missing)help / color / mirror / Atom feed
[PATCH v3] Include the leader PID in logfile 27+ messages / 2 participants [nested] [flat]
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 11 ++++++- src/backend/utils/error/elog.c | 30 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index b353c61683..e60403d6a5 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6611,6 +6611,14 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader if this process was + at some point involved in parallel query, otherwise null. For a + parallel group leader itself, this field is set to its own process + ID.</entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -6943,7 +6951,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -6973,6 +6981,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index e4b717c79a..dea098faf1 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2448,6 +2449,25 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader == NULL) + /* padding only */ + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfo(buf, "%d", leader->pid); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2836,6 +2856,16 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index e430e33c7b..48a50fb394 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -533,6 +533,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --cWoXeonUoKmBZSoM-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v3] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 30 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index e806b13754..c525a0fd15 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6687,6 +6687,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>For a parallel worker, this is the Process ID of its leader + process. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7019,7 +7026,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7049,6 +7056,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index e4b717c79a..3055b72c01 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2448,6 +2449,25 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader == NULL || leader->pid == MyProcPid) + /* padding only */ + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfo(buf, "%d", leader->pid); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2836,6 +2856,16 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index aa30291ea3..55c2e23c47 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -536,6 +536,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --eJnRUKwClWJh1Khz-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v3] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 11 +++++++- src/backend/utils/error/elog.c | 27 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 672bf6f1ee..b9a1bd9a31 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6511,6 +6511,14 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%k</literal></entry> + <entry>Process ID of the parallel group leader if this + process is or was involved in parallel query, null + otherwise. For a parallel group leader, this field is + set to its own process ID.</entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -6809,7 +6817,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -6839,6 +6847,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 62eef7b71f..5328664f4d 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2560,6 +2561,22 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'k': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader == NULL) + /* padding only */ + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfo(buf, "%d", leader->pid); + } + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2948,6 +2965,16 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index aa44f0c9bf..6874792a15 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -530,6 +530,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %k = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --MdJ3p2aQbVp3YFXz-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v4] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 30 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..89dd19035c 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>For a parallel worker, this is the Process ID of its leader + process. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index e4b717c79a..3055b72c01 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2448,6 +2449,25 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader == NULL || leader->pid == MyProcPid) + /* padding only */ + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfo(buf, "%d", leader->pid); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2836,6 +2856,16 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --47eKBCiAZYFK5l32-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v1 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 8 +++- src/backend/utils/error/elog.c | 47 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index fc0e2c00c3..d53b62e2df 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6487,6 +6487,11 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%k</literal></entry> + <entry>Leader PID for a parallel process, NULL otherwise</entry> + <entry>yes</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -6777,7 +6782,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -6807,6 +6812,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 62eef7b71f..e6b3caf414 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -177,6 +178,7 @@ static void write_console(const char *line, int len); static void setup_formatted_log_time(void); static void setup_formatted_start_time(void); static const char *process_log_prefix_padding(const char *p, int *padding); +static pid_t get_leader_pid(); static void log_line_prefix(StringInfo buf, ErrorData *edata); static void write_csvlog(ErrorData *edata); static void send_message_to_server_log(ErrorData *edata); @@ -2402,6 +2404,24 @@ process_log_prefix_padding(const char *p, int *ppadding) return p; } +/* Return PID of leader, or InvalidPid if not a parallel worker */ +static pid_t +get_leader_pid() +{ + PGPROC *proc; + pid_t leader_pid = InvalidPid; + + if (MyBackendType != B_BG_WORKER) + return InvalidPid; + + LWLockAcquire(ProcArrayLock, LW_SHARED); + proc = BackendPidGetProcWithLock(MyProcPid); + if (proc && proc->lockGroupLeader) + leader_pid = proc->lockGroupLeader->pid; + LWLockRelease(ProcArrayLock); + return leader_pid; +} + /* * Format tag info for log lines; append to the provided buffer. */ @@ -2413,6 +2433,10 @@ log_line_prefix(StringInfo buf, ErrorData *edata) /* has counter been reset in current process? */ static int log_my_pid = 0; + + /* Leader PID is retrieved only once per process after forking from postmaster */ + static pid_t leader_pid = InvalidPid; + int padding; const char *p; @@ -2427,6 +2451,7 @@ log_line_prefix(StringInfo buf, ErrorData *edata) log_line_number = 0; log_my_pid = MyProcPid; formatted_start_time[0] = '\0'; + leader_pid = get_leader_pid(); } log_line_number++; @@ -2560,6 +2585,18 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'k': + if (!MyProcPort) + ; /* Do nothing */ + else if (leader_pid == InvalidPid) + ; /* Do nothing */ + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader_pid); + else + appendStringInfo(buf, "%d", leader_pid); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2768,6 +2805,9 @@ write_csvlog(ErrorData *edata) /* has counter been reset in current process? */ static int log_my_pid = 0; + /* Leader PID is retrieved only once per process after forking from postmaster */ + static pid_t leader_pid = InvalidPid; + /* * This is one of the few places where we'd rather not inherit a static * variable's value from the postmaster. But since we will, reset it when @@ -2778,6 +2818,7 @@ write_csvlog(ErrorData *edata) log_line_number = 0; log_my_pid = MyProcPid; formatted_start_time[0] = '\0'; + leader_pid = get_leader_pid(); } log_line_number++; @@ -2948,6 +2989,12 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProcPort && leader_pid != InvalidPid) + appendStringInfo(&buf, "%d", leader_pid); + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index c0e9531f9c..32fc4b18e6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -530,6 +530,7 @@ # %r = remote host and port # %h = remote host # %p = process ID + # %k = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --QTprm0S8XgL7H0Dt-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 11 +++++++++- src/backend/utils/error/elog.c | 20 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 3cac340f32..f6ded2bc45 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6491,6 +6491,14 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%k</literal></entry> + <entry>Process ID of the parallel group leader if this + process is or was involved in parallel query, null + otherwise. For a parallel group leader, this field is + set to its own process ID.</entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -6789,7 +6797,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -6819,6 +6827,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 62eef7b71f..0f5881355d 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2560,6 +2561,18 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'k': + if (MyBackendType != B_BG_WORKER) + ; /* Do nothing */ + else if (!MyProc->lockGroupLeader) + ; /* Do nothing */ + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, MyProc->lockGroupLeader->pid); + else + appendStringInfo(buf, "%d", MyProc->lockGroupLeader->pid); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2948,6 +2961,13 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyBackendType == B_BG_WORKER && + MyProc->lockGroupLeader) + appendStringInfo(&buf, "%d", MyProc->lockGroupLeader->pid); + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index aa44f0c9bf..6874792a15 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -530,6 +530,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %k = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --ikeVEW9yuYc//A+q-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* [PATCH v5 2/2] Include the leader PID in logfile @ 2020-03-14 03:03 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Justin Pryzby @ 2020-03-14 03:03 UTC (permalink / raw) See also: b025f32e0b, which added the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 29 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 994155ca00..e1da2e12e8 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6694,6 +6694,13 @@ local0.* /var/log/postgresql <entry>Process ID</entry> <entry>no</entry> </row> + <row> + <entry><literal>%P</literal></entry> + <entry>Process ID of the parallel group leader, if this process is + a parallel query worker. + </entry> + <entry>no</entry> + </row> <row> <entry><literal>%t</literal></entry> <entry>Time stamp without milliseconds</entry> @@ -7026,7 +7033,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: <programlisting> @@ -7056,6 +7063,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); </programlisting> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index b0b1a09ab1..60e2f524a7 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2425,6 +2426,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata) case 'p': appendStringInfo(buf, "%*d", padding, MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader != NULL && leader->pid != MyProcPid) + /* leader_pid is blank for the leader itself */ + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': appendStringInfo(buf, "%*ld", padding, log_line_number); break; @@ -2766,6 +2784,17 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + /* leader_pid is blank for leader itself */ + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0715ae188..1ecdfc51a6 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -537,6 +537,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --fDERRRNgB4on1jOB-- ^ permalink raw reply [nested|flat] 27+ messages in thread
* Re: Adding NetBSD and OpenBSD to Postgres CI @ 2026-01-05 18:36 Andres Freund <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Andres Freund @ 2026-01-05 18:36 UTC (permalink / raw) To: Nazir Bilal Yavuz <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]> Hi, The openbsd/netbsd CI tasks are occasionally failing due to reaching the process limit. See e.g. https://cirrus-ci.com/task/5559228405907456 +psql: error: connection to server on socket "/tmp/pg_regress-nQ1wk1/.s.PGSQL.40056" failed: could not fork new process for connection: Resource temporarily unavailable This is due to the ulimit -p 256 in .cirrus.tasks.yml not being high enough. The ulimit on openbsd couldn't trivially be increased with ulimit, because of hitting the hard limit. Instead of increasing the limit in the CI script, the CI image generation now increases the limits: https://github.com/anarazel/pg-vm-images/pull/129 I plan to push this patch soon. Greetings, Andres Freund ^ permalink raw reply [nested|flat] 27+ messages in thread
end of thread, other threads:[~2026-01-05 18:36 UTC | newest] Thread overview: 27+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v3] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v3] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v4] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v1 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2020-03-14 03:03 [PATCH v5 2/2] Include the leader PID in logfile Justin Pryzby <[email protected]> 2026-01-05 18:36 Re: Adding NetBSD and OpenBSD to Postgres CI Andres Freund <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox