From a3c53c834f769b31052ac55d5fb939b7cc9a4ec1 Mon Sep 17 00:00:00 2001 From: Neil Conway <neilc@samurai.com> Date: Wed, 22 Sep 2004 03:55:27 +0000 Subject: [PATCH] This patch from Alvaro Herrera adds transaction ID to the list of log_line_prefix escapes. The escape sequence used for this is %x. %x previously meant "postmaster et al. stop here" -- this has been renamed to %q. --- doc/src/sgml/runtime.sgml | 7 ++++++- src/backend/utils/error/elog.c | 15 ++++++++++++--- src/backend/utils/misc/postgresql.conf.sample | 4 ++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 2ca5e38018a..831bd1accec 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.281 2004/09/17 22:40:46 tgl Exp $ +$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.282 2004/09/22 03:55:24 neilc Exp $ --> <Chapter Id="runtime"> @@ -2394,6 +2394,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32 </row> <row> <entry><literal>%x</literal></entry> + <entry>Transaction ID</entry> + <entry>Yes</entry> + </row> + <row> + <entry><literal>%q</literal></entry> <entry>Does not produce any output, but tells non-session processes to stop at this point in the string. Ignored by session processes.</entry> diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index ded96313c33..20ff94d7dda 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -42,7 +42,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.150 2004/09/05 03:42:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.151 2004/09/22 03:55:26 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -1421,12 +1421,21 @@ log_line_prefix(StringInfo buf) MyProcPort->remote_port); } break; - case 'x': - /* in postmaster and friends, stop if %x is seen */ + case 'q': + /* in postmaster and friends, stop if %q is seen */ /* in a backend, just ignore */ if (MyProcPort == NULL) i = format_len; break; + case 'x': + if (MyProcPort) + { + if (IsTransactionState()) + appendStringInfo(buf, "%u", GetTopTransactionId()); + else + appendStringInfo(buf, "%u", InvalidTransactionId); + } + break; case '%': appendStringInfoChar(buf, '%'); break; diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 749fa19beb0..5f83db9bd39 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -231,8 +231,8 @@ # %r=remote host and port # %p=PID %t=timestamp %i=command tag # %c=session id %l=session line number - # %s=session start timestamp - # %x=stop here in non-session processes + # %s=session start timestamp %x=transaction id + # %q=stop here in non-session processes # %%='%' #log_statement = 'none' # none, mod, ddl, all #log_hostname = false -- GitLab