public inbox for [email protected]help / color / mirror / Atom feed
[PATCH v3] Include the leader PID in logfile 27+ messages / 2 participants [nested] [flat]
* [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 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 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 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 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 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 v44b 1/4] Make index_concurrently_create_copy more general @ 2026-03-24 18:02 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 27+ messages in thread From: Álvaro Herrera @ 2026-03-24 18:02 UTC (permalink / raw) Add a 'boolean concurrent' option, and make it work for both cases. Also rename it to index_create_copy. This allows it to be reused for other purposes -- specifically, for REPACK CONCURRENTLY. With the CONCURRENTLY option, REPACK cannot simply swap the heap file and rebuild its indexes. Instead, it needs to build a separate set of indexes (including system catalog entries) *before* the actual swap, to reduce the time AccessExclusiveLock needs to be held for. This approach is different from what CREATE INDEX CONCURRENTLY does. Per a suggestion from Mihail Nikalayeu. Author: Antonin Houska <[email protected]> Discussion: https://postgr.es/m/41104.1754922120@localhost --- src/backend/catalog/index.c | 39 +++++++++++++++++++------------- src/backend/commands/indexcmds.c | 15 +++++++----- src/backend/nodes/makefuncs.c | 9 ++++---- src/include/catalog/index.h | 7 +++--- src/include/nodes/makefuncs.h | 4 +++- 5 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index d8219b18c48..de7182a85a9 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -1289,17 +1289,17 @@ index_create(Relation heapRelation, } /* - * index_concurrently_create_copy + * index_create_copy * - * Create concurrently an index based on the definition of the one provided by - * caller. The index is inserted into catalogs and needs to be built later - * on. This is called during concurrent reindex processing. + * Create an index based on the definition of the one provided by caller. The + * index is inserted into catalogs. If 'concurrently' is TRUE, it needs to be + * built later on; otherwise it's built immediately. * * "tablespaceOid" is the tablespace to use for this index. */ Oid -index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, - Oid tablespaceOid, const char *newName) +index_create_copy(Relation heapRelation, bool concurrently, + Oid oldIndexId, Oid tablespaceOid, const char *newName) { Relation indexRelation; IndexInfo *oldInfo, @@ -1318,6 +1318,7 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, List *indexColNames = NIL; List *indexExprs = NIL; List *indexPreds = NIL; + int flags = 0; indexRelation = index_open(oldIndexId, RowExclusiveLock); @@ -1328,7 +1329,7 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, * Concurrent build of an index with exclusion constraints is not * supported. */ - if (oldInfo->ii_ExclusionOps != NULL) + if (oldInfo->ii_ExclusionOps != NULL && concurrently) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("concurrent index creation for exclusion constraints is not supported"))); @@ -1384,9 +1385,7 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, } /* - * Build the index information for the new index. Note that rebuild of - * indexes with exclusion constraints is not supported, hence there is no - * need to fill all the ii_Exclusion* fields. + * Build the index information for the new index. */ newInfo = makeIndexInfo(oldInfo->ii_NumIndexAttrs, oldInfo->ii_NumIndexKeyAttrs, @@ -1395,10 +1394,13 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, indexPreds, oldInfo->ii_Unique, oldInfo->ii_NullsNotDistinct, - false, /* not ready for inserts */ - true, + !concurrently, /* isready */ + concurrently, /* concurrent */ indexRelation->rd_indam->amsummarizing, - oldInfo->ii_WithoutOverlaps); + oldInfo->ii_WithoutOverlaps, + oldInfo->ii_ExclusionOps, + oldInfo->ii_ExclusionProcs, + oldInfo->ii_ExclusionStrats); /* * Extract the list of column names and the column numbers for the new @@ -1436,6 +1438,9 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, stattargets[i].isnull = isnull; } + if (concurrently) + flags = INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT; + /* * Now create the new index. * @@ -1459,7 +1464,7 @@ index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, indcoloptions->values, stattargets, reloptionsDatum, - INDEX_CREATE_SKIP_BUILD | INDEX_CREATE_CONCURRENT, + flags, 0, true, /* allow table to be a system catalog? */ false, /* is_internal? */ @@ -2453,7 +2458,8 @@ BuildIndexInfo(Relation index) indexStruct->indisready, false, index->rd_indam->amsummarizing, - indexStruct->indisexclusion && indexStruct->indisunique); + indexStruct->indisexclusion && indexStruct->indisunique, + NULL, NULL, NULL); /* fill in attribute numbers */ for (i = 0; i < numAtts; i++) @@ -2513,7 +2519,8 @@ BuildDummyIndexInfo(Relation index) indexStruct->indisready, false, index->rd_indam->amsummarizing, - indexStruct->indisexclusion && indexStruct->indisunique); + indexStruct->indisexclusion && indexStruct->indisunique, + NULL, NULL, NULL); /* fill in attribute numbers */ for (i = 0; i < numAtts; i++) diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index dd593ccbc1c..83edab38760 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -244,7 +244,8 @@ CheckIndexCompatible(Oid oldId, */ indexInfo = makeIndexInfo(numberOfAttributes, numberOfAttributes, accessMethodId, NIL, NIL, false, false, - false, false, amsummarizing, isWithoutOverlaps); + false, false, amsummarizing, isWithoutOverlaps, + NULL, NULL, NULL); typeIds = palloc_array(Oid, numberOfAttributes); collationIds = palloc_array(Oid, numberOfAttributes); opclassIds = palloc_array(Oid, numberOfAttributes); @@ -931,7 +932,8 @@ DefineIndex(ParseState *pstate, !concurrent, concurrent, amissummarizing, - stmt->iswithoutoverlaps); + stmt->iswithoutoverlaps, + NULL, NULL, NULL); typeIds = palloc_array(Oid, numberOfAttributes); collationIds = palloc_array(Oid, numberOfAttributes); @@ -3989,10 +3991,11 @@ ReindexRelationConcurrently(const ReindexStmt *stmt, Oid relationOid, const Rein tablespaceid = indexRel->rd_rel->reltablespace; /* Create new index definition based on given index */ - newIndexId = index_concurrently_create_copy(heapRel, - idx->indexId, - tablespaceid, - concurrentName); + newIndexId = index_create_copy(heapRel, + true, + idx->indexId, + tablespaceid, + concurrentName); /* * Now open the relation of the new index, a session-level lock is diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index 3cd35c5c457..8d23aa917e5 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -834,7 +834,8 @@ IndexInfo * makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, List *expressions, List *predicates, bool unique, bool nulls_not_distinct, bool isready, bool concurrent, bool summarizing, - bool withoutoverlaps) + bool withoutoverlaps, Oid *exclusion_ops, Oid *exclusion_procs, + uint16 *exclusion_strats) { IndexInfo *n = makeNode(IndexInfo); @@ -863,9 +864,9 @@ makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, List *expressions, n->ii_PredicateState = NULL; /* exclusion constraints */ - n->ii_ExclusionOps = NULL; - n->ii_ExclusionProcs = NULL; - n->ii_ExclusionStrats = NULL; + n->ii_ExclusionOps = exclusion_ops; + n->ii_ExclusionProcs = exclusion_procs; + n->ii_ExclusionStrats = exclusion_strats; /* speculative inserts */ n->ii_UniqueOps = NULL; diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h index 36b70689254..56a064ef444 100644 --- a/src/include/catalog/index.h +++ b/src/include/catalog/index.h @@ -101,10 +101,9 @@ extern Oid index_create(Relation heapRelation, #define INDEX_CONSTR_CREATE_REMOVE_OLD_DEPS (1 << 4) #define INDEX_CONSTR_CREATE_WITHOUT_OVERLAPS (1 << 5) -extern Oid index_concurrently_create_copy(Relation heapRelation, - Oid oldIndexId, - Oid tablespaceOid, - const char *newName); +extern Oid index_create_copy(Relation heapRelation, bool concurrently, + Oid oldIndexId, Oid tablespaceOid, + const char *newName); extern void index_concurrently_build(Oid heapRelationId, Oid indexRelationId); diff --git a/src/include/nodes/makefuncs.h b/src/include/nodes/makefuncs.h index bf54d39feb0..40ec249a7a1 100644 --- a/src/include/nodes/makefuncs.h +++ b/src/include/nodes/makefuncs.h @@ -99,7 +99,9 @@ extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, List *expressions, List *predicates, bool unique, bool nulls_not_distinct, bool isready, bool concurrent, - bool summarizing, bool withoutoverlaps); + bool summarizing, bool withoutoverlaps, + Oid *exclusion_ops, Oid *exclusion_procs, + uint16 *exclusion_strats); extern Node *makeStringConst(char *str, int location); extern DefElem *makeDefElem(char *name, Node *arg, int location); -- 2.47.3 --fot5plqmb33ey33c Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename="v44b-0002-Do-not-dereference-varattrib_4b-in-VARSIZE_4B.patch" ^ permalink raw reply [nested|flat] 27+ messages in thread
end of thread, other threads:[~2026-03-24 18:02 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 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 v2] 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 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 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]> 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-03-24 18:02 [PATCH v44b 1/4] Make index_concurrently_create_copy more general Álvaro Herrera <[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