In PG13, we added the ability to add backtraces to the log output.
After some practical experience with it, I think the order in which the
BACKTRACE and the LOCATION fields are printed is wrong. I propose we
put the LOCATION field before the BACKTRACE field, not after. This
makes more sense because the location is effectively at the lowest level
of the backtrace.
Patch attached.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From aaf4a8146cf60a5959e50432359fd9972f410e1b Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Thu, 9 Jul 2020 11:00:34 +0200
Subject: [PATCH] Log the location field before any backtrace
This order makes more sense because the location is effectively at the
lowest level of the backtrace.
---
src/backend/utils/error/elog.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index e976201030..e4b717c79a 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -2938,13 +2938,6 @@ send_message_to_server_log(ErrorData *edata)
append_with_tabs(&buf, edata->context);
appendStringInfoChar(&buf, '\n');
}
- if (edata->backtrace)
- {
- log_line_prefix(&buf, edata);
- appendStringInfoString(&buf, _("BACKTRACE: "));
- append_with_tabs(&buf, edata->backtrace);
- appendStringInfoChar(&buf, '\n');
- }
if (Log_error_verbosity >= PGERROR_VERBOSE)
{
/* assume no newlines in funcname or filename... */
@@ -2962,6 +2955,13 @@ send_message_to_server_log(ErrorData *edata)
edata->filename, edata->lineno);
}
}
+ if (edata->backtrace)
+ {
+ log_line_prefix(&buf, edata);
+ appendStringInfoString(&buf, _("BACKTRACE: "));
+ append_with_tabs(&buf, edata->backtrace);
+ appendStringInfoChar(&buf, '\n');
+ }
}
/*
--
2.27.0