aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2009-07-03 19:14:25 +0000
committerPeter Eisentraut <peter_e@gmx.net>2009-07-03 19:14:25 +0000
commitf39df967e930be301f976a537628a5788867e8a1 (patch)
tree92123313d80342d723e5dab5382197252ce567e4 /src
parente2b42aef53da08dfdcd30b5ffee543b65993ae3d (diff)
downloadpostgresql-f39df967e930be301f976a537628a5788867e8a1.tar.gz
postgresql-f39df967e930be301f976a537628a5788867e8a1.zip
Add log_line_prefix placeholder %e to contain the current SQL state
Author: Guillaume Smet <guillaume.smet@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/error/elog.c27
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample1
2 files changed, 16 insertions, 12 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index db334824347..06a78f2d701 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.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');
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 3f7b43f0ccc..c1b888c0d46 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -337,6 +337,7 @@
# %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