Add csvlog output for the new query_id value
authorBruce Momjian <bruce@momjian.us>
Thu, 8 Apr 2021 02:30:30 +0000 (22:30 -0400)
committerBruce Momjian <bruce@momjian.us>
Thu, 8 Apr 2021 02:30:30 +0000 (22:30 -0400)
This also adjusts the printf format for query id used by log_line_prefix
(%Q).

Reported-by: Justin Pryzby
Discussion: https://postgr.es/m/20210408005402.GG24239@momjian.us

Author: Julien Rouhaud, Bruce Momjian

doc/src/sgml/config.sgml
doc/src/sgml/file-fdw.sgml
src/backend/utils/error/elog.c

index 963824d0506c1378d9ba9c80509ad114d62042c5..ea5cf3a2dc0eb399b898a72ac04fbbc81cf56817 100644 (file)
@@ -7310,7 +7310,8 @@ 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, backend type, and process ID of parallel group leader.
+        application name, backend type, process ID of parallel group leader,
+        and query id.
         Here is a sample table definition for storing CSV-format log output:
 
 <programlisting>
@@ -7341,6 +7342,7 @@ CREATE TABLE postgres_log
   application_name text,
   backend_type text,
   leader_pid integer,
+  query_id bigint,
   PRIMARY KEY (session_id, session_line_num)
 );
 </programlisting>
index 2e21806f48735a8a425f0ff6feb58dc45cb2725c..5b98782064f161efda0457b2b43bae6b6f03fcb6 100644 (file)
@@ -266,7 +266,8 @@ CREATE FOREIGN TABLE pglog (
   location text,
   application_name text,
   backend_type text,
-  leader_pid integer
+  leader_pid integer,
+  query_id bigint
 ) SERVER pglog
 OPTIONS ( filename 'log/pglog.csv', format 'csv' );
 </programlisting>
index 1cf71a649b36bdf0a102ba493af333abec9b6004..a1ebe06d5b061a3a11d645df44a320076361c517 100644 (file)
@@ -2716,11 +2716,11 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
                break;
            case 'Q':
                if (padding != 0)
-                   appendStringInfo(buf, "%*ld", padding,
-                           pgstat_get_my_queryid());
+                   appendStringInfo(buf, "%*lld", padding,
+                           (long long) pgstat_get_my_queryid());
                else
-                   appendStringInfo(buf, "%ld",
-                           pgstat_get_my_queryid());
+                   appendStringInfo(buf, "%lld",
+                           (long long) pgstat_get_my_queryid());
                break;
            default:
                /* format error - ignore it */
@@ -2964,6 +2964,10 @@ write_csvlog(ErrorData *edata)
        if (leader && leader->pid != MyProcPid)
            appendStringInfo(&buf, "%d", leader->pid);
    }
+   appendStringInfoChar(&buf, ',');
+
+   /* query id */
+   appendStringInfo(&buf, "%lld", (long long) pgstat_get_my_queryid());
 
    appendStringInfoChar(&buf, '\n');