This patch from Alvaro Herrera adds transaction ID to the list of
authorNeil Conway
Wed, 22 Sep 2004 03:55:27 +0000 (03:55 +0000)
committerNeil Conway
Wed, 22 Sep 2004 03:55:27 +0000 (03:55 +0000)
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
src/backend/utils/error/elog.c
src/backend/utils/misc/postgresql.conf.sample

index 2ca5e38018ae839ed98f89592a2aaa0032c6113a..831bd1accec4fc70fa19dbfeb4be056b7dd118e9 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -2394,6 +2394,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
             
             
              %x
+             Transaction ID
+             Yes
+            
+            
+             %q
              Does not produce any output, but tells non-session
              processes to stop at this point in the string. Ignored by
              session processes.
index ded96313c330cd71c8ba229a88fca2bb56be32d4..20ff94d7dda35654bf243f4ea54721744fc91f29 100644 (file)
@@ -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;
index 749fa19beb0a8c6f2b6a613c4c78afe37a4830bd..5f83db9bd3998388274c9df1515f69b01e454491 100644 (file)
                # %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