]> granicus.if.org Git - postgresql/commitdiff
Add log_line_prefix placeholder %e to contain the current SQL state
authorPeter Eisentraut <peter_e@gmx.net>
Fri, 3 Jul 2009 19:14:25 +0000 (19:14 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Fri, 3 Jul 2009 19:14:25 +0000 (19:14 +0000)
Author: Guillaume Smet <guillaume.smet@gmail.com>

doc/src/sgml/config.sgml
src/backend/utils/error/elog.c
src/backend/utils/misc/postgresql.conf.sample

index dbdd0a0dbc46bf32000c46e9be8bd9a1703260a8..3b527a7ecbd51f034a927b74d70387e85d296264 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.220 2009/06/17 21:58:48 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.221 2009/07/03 19:14:25 petere Exp $ -->
 
 <chapter Id="runtime-config">
   <title>Server Configuration</title>
@@ -3043,6 +3043,11 @@ local0.*    /var/log/postgresql
              <entry>Command tag: type of session's current command</entry>
              <entry>yes</entry>
             </row>
+            <row>
+             <entry><literal>%e</literal></entry>
+             <entry>SQL state</entry>
+             <entry>no</entry>
+            </row>
             <row>
              <entry><literal>%c</literal></entry>
              <entry>Session ID: see below</entry>
index db334824347b781c5cb764d43e9220e29bca4fdb..06a78f2d701b91545664024aa01a1717315f2391 100644 (file)
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.216 2009/06/25 23:07:15 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.217 2009/07/03 19:14:25 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -144,7 +144,7 @@ static char formatted_log_time[FORMATTED_TS_LEN];
        } while (0)
 
 
-static void log_line_prefix(StringInfo buf);
+static void log_line_prefix(StringInfo buf, ErrorData *edata);
 static void send_message_to_server_log(ErrorData *edata);
 static void send_message_to_frontend(ErrorData *edata);
 static char *expand_fmt_string(const char *fmt, ErrorData *edata);
@@ -1677,7 +1677,7 @@ setup_formatted_start_time(void)
  * Format tag info for log lines; append to the provided buffer.
  */
 static void
-log_line_prefix(StringInfo buf)
+log_line_prefix(StringInfo buf, ErrorData *edata)
 {
        /* static counter for line numbers */
        static long log_line_number = 0;
@@ -1814,6 +1814,9 @@ log_line_prefix(StringInfo buf)
                        case 'x':
                                appendStringInfo(buf, "%u", GetTopTransactionIdIfAny());
                                break;
+                       case 'e':
+                               appendStringInfoString(buf, unpack_sql_state(edata->sqlerrcode));
+                               break;
                        case '%':
                                appendStringInfoChar(buf, '%');
                                break;
@@ -2070,7 +2073,7 @@ send_message_to_server_log(ErrorData *edata)
 
        formatted_log_time[0] = '\0';
 
-       log_line_prefix(&buf);
+       log_line_prefix(&buf, edata);
        appendStringInfo(&buf, "%s:  ", error_severity(edata->elevel));
 
        if (Log_error_verbosity >= PGERROR_VERBOSE)
@@ -2094,35 +2097,35 @@ send_message_to_server_log(ErrorData *edata)
        {
                if (edata->detail_log)
                {
-                       log_line_prefix(&buf);
+                       log_line_prefix(&buf, edata);
                        appendStringInfoString(&buf, _("DETAIL:  "));
                        append_with_tabs(&buf, edata->detail_log);
                        appendStringInfoChar(&buf, '\n');
                }
                else if (edata->detail)
                {
-                       log_line_prefix(&buf);
+                       log_line_prefix(&buf, edata);
                        appendStringInfoString(&buf, _("DETAIL:  "));
                        append_with_tabs(&buf, edata->detail);
                        appendStringInfoChar(&buf, '\n');
                }
                if (edata->hint)
                {
-                       log_line_prefix(&buf);
+                       log_line_prefix(&buf, edata);
                        appendStringInfoString(&buf, _("HINT:  "));
                        append_with_tabs(&buf, edata->hint);
                        appendStringInfoChar(&buf, '\n');
                }
                if (edata->internalquery)
                {
-                       log_line_prefix(&buf);
+                       log_line_prefix(&buf, edata);
                        appendStringInfoString(&buf, _("QUERY:  "));
                        append_with_tabs(&buf, edata->internalquery);
                        appendStringInfoChar(&buf, '\n');
                }
                if (edata->context)
                {
-                       log_line_prefix(&buf);
+                       log_line_prefix(&buf, edata);
                        appendStringInfoString(&buf, _("CONTEXT:  "));
                        append_with_tabs(&buf, edata->context);
                        appendStringInfoChar(&buf, '\n');
@@ -2132,14 +2135,14 @@ send_message_to_server_log(ErrorData *edata)
                        /* assume no newlines in funcname or filename... */
                        if (edata->funcname && edata->filename)
                        {
-                               log_line_prefix(&buf);
+                               log_line_prefix(&buf, edata);
                                appendStringInfo(&buf, _("LOCATION:  %s, %s:%d\n"),
                                                                 edata->funcname, edata->filename,
                                                                 edata->lineno);
                        }
                        else if (edata->filename)
                        {
-                               log_line_prefix(&buf);
+                               log_line_prefix(&buf, edata);
                                appendStringInfo(&buf, _("LOCATION:  %s:%d\n"),
                                                                 edata->filename, edata->lineno);
                        }
@@ -2153,7 +2156,7 @@ send_message_to_server_log(ErrorData *edata)
                debug_query_string != NULL &&
                !edata->hide_stmt)
        {
-               log_line_prefix(&buf);
+               log_line_prefix(&buf, edata);
                appendStringInfoString(&buf, _("STATEMENT:  "));
                append_with_tabs(&buf, debug_query_string);
                appendStringInfoChar(&buf, '\n');
index 3f7b43f0ccc54d0a966a886a575d4cc32cb61217..c1b888c0d4663088fbd3f40f6949316a5583c13f 100644 (file)
                                        #   %t = timestamp without milliseconds
                                        #   %m = timestamp with milliseconds
                                        #   %i = command tag
+                                       #   %e = SQL state
                                        #   %c = session ID
                                        #   %l = session line number
                                        #   %s = session start timestamp