Skip to content

Commit f39df96

Browse files
committed
Add log_line_prefix placeholder %e to contain the current SQL state
Author: Guillaume Smet <guillaume.smet@gmail.com>
1 parent e2b42ae commit f39df96

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

doc/src/sgml/config.sgml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.220 2009/06/17 21:58:48 tgl Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.221 2009/07/03 19:14:25 petere Exp $ -->
22

33
<chapter Id="runtime-config">
44
<title>Server Configuration</title>
@@ -3043,6 +3043,11 @@ local0.* /var/log/postgresql
30433043
<entry>Command tag: type of session's current command</entry>
30443044
<entry>yes</entry>
30453045
</row>
3046+
<row>
3047+
<entry><literal>%e</literal></entry>
3048+
<entry>SQL state</entry>
3049+
<entry>no</entry>
3050+
</row>
30463051
<row>
30473052
<entry><literal>%c</literal></entry>
30483053
<entry>Session ID: see below</entry>

src/backend/utils/error/elog.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
*
4343
*
4444
* IDENTIFICATION
45-
* $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.216 2009/06/25 23:07:15 tgl Exp $
45+
* $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.217 2009/07/03 19:14:25 petere Exp $
4646
*
4747
*-------------------------------------------------------------------------
4848
*/
@@ -144,7 +144,7 @@ static char formatted_log_time[FORMATTED_TS_LEN];
144144
} while (0)
145145

146146

147-
static void log_line_prefix(StringInfo buf);
147+
static void log_line_prefix(StringInfo buf, ErrorData *edata);
148148
static void send_message_to_server_log(ErrorData *edata);
149149
static void send_message_to_frontend(ErrorData *edata);
150150
static char *expand_fmt_string(const char *fmt, ErrorData *edata);
@@ -1677,7 +1677,7 @@ setup_formatted_start_time(void)
16771677
* Format tag info for log lines; append to the provided buffer.
16781678
*/
16791679
static void
1680-
log_line_prefix(StringInfo buf)
1680+
log_line_prefix(StringInfo buf, ErrorData *edata)
16811681
{
16821682
/* static counter for line numbers */
16831683
static long log_line_number = 0;
@@ -1814,6 +1814,9 @@ log_line_prefix(StringInfo buf)
18141814
case 'x':
18151815
appendStringInfo(buf, "%u", GetTopTransactionIdIfAny());
18161816
break;
1817+
case 'e':
1818+
appendStringInfoString(buf, unpack_sql_state(edata->sqlerrcode));
1819+
break;
18171820
case '%':
18181821
appendStringInfoChar(buf, '%');
18191822
break;
@@ -2070,7 +2073,7 @@ send_message_to_server_log(ErrorData *edata)
20702073

20712074
formatted_log_time[0] = '\0';
20722075

2073-
log_line_prefix(&buf);
2076+
log_line_prefix(&buf, edata);
20742077
appendStringInfo(&buf, "%s: ", error_severity(edata->elevel));
20752078

20762079
if (Log_error_verbosity >= PGERROR_VERBOSE)
@@ -2094,35 +2097,35 @@ send_message_to_server_log(ErrorData *edata)
20942097
{
20952098
if (edata->detail_log)
20962099
{
2097-
log_line_prefix(&buf);
2100+
log_line_prefix(&buf, edata);
20982101
appendStringInfoString(&buf, _("DETAIL: "));
20992102
append_with_tabs(&buf, edata->detail_log);
21002103
appendStringInfoChar(&buf, '\n');
21012104
}
21022105
else if (edata->detail)
21032106
{
2104-
log_line_prefix(&buf);
2107+
log_line_prefix(&buf, edata);
21052108
appendStringInfoString(&buf, _("DETAIL: "));
21062109
append_with_tabs(&buf, edata->detail);
21072110
appendStringInfoChar(&buf, '\n');
21082111
}
21092112
if (edata->hint)
21102113
{
2111-
log_line_prefix(&buf);
2114+
log_line_prefix(&buf, edata);
21122115
appendStringInfoString(&buf, _("HINT: "));
21132116
append_with_tabs(&buf, edata->hint);
21142117
appendStringInfoChar(&buf, '\n');
21152118
}
21162119
if (edata->internalquery)
21172120
{
2118-
log_line_prefix(&buf);
2121+
log_line_prefix(&buf, edata);
21192122
appendStringInfoString(&buf, _("QUERY: "));
21202123
append_with_tabs(&buf, edata->internalquery);
21212124
appendStringInfoChar(&buf, '\n');
21222125
}
21232126
if (edata->context)
21242127
{
2125-
log_line_prefix(&buf);
2128+
log_line_prefix(&buf, edata);
21262129
appendStringInfoString(&buf, _("CONTEXT: "));
21272130
append_with_tabs(&buf, edata->context);
21282131
appendStringInfoChar(&buf, '\n');
@@ -2132,14 +2135,14 @@ send_message_to_server_log(ErrorData *edata)
21322135
/* assume no newlines in funcname or filename... */
21332136
if (edata->funcname && edata->filename)
21342137
{
2135-
log_line_prefix(&buf);
2138+
log_line_prefix(&buf, edata);
21362139
appendStringInfo(&buf, _("LOCATION: %s, %s:%d\n"),
21372140
edata->funcname, edata->filename,
21382141
edata->lineno);
21392142
}
21402143
else if (edata->filename)
21412144
{
2142-
log_line_prefix(&buf);
2145+
log_line_prefix(&buf, edata);
21432146
appendStringInfo(&buf, _("LOCATION: %s:%d\n"),
21442147
edata->filename, edata->lineno);
21452148
}
@@ -2153,7 +2156,7 @@ send_message_to_server_log(ErrorData *edata)
21532156
debug_query_string != NULL &&
21542157
!edata->hide_stmt)
21552158
{
2156-
log_line_prefix(&buf);
2159+
log_line_prefix(&buf, edata);
21572160
appendStringInfoString(&buf, _("STATEMENT: "));
21582161
append_with_tabs(&buf, debug_query_string);
21592162
appendStringInfoChar(&buf, '\n');

src/backend/utils/misc/postgresql.conf.sample

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@
337337
# %t = timestamp without milliseconds
338338
# %m = timestamp with milliseconds
339339
# %i = command tag
340+
# %e = SQL state
340341
# %c = session ID
341342
# %l = session line number
342343
# %s = session start timestamp

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy