This reverts commit
a740b213d4b4d3360ad0cac696e47e5ec0eb8864.
Subsequent discussion showed that there was interest in a more general
facility to configure when server log events would produce backtraces,
and this existing limited way couldn't be extended in a compatible
way. So the consensus was to revert this for PostgreSQL 17 and
reconsider this topic for PostgreSQL 18.
Discussion: https://www.postgresql.org/message-id/flat/CAGECzQTChkvn5Xj772LB3%3Dxo2x_LcaO5O0HQvXqobm1xVp6%2B4w%40mail.gmail.com#
764bcdbb73e162787e1ad984935e51e3
</listitem>
</varlistentry>
- <varlistentry id="guc-backtrace-on-internal-error" xreflabel="backtrace_on_internal_error">
- <term><varname>backtrace_on_internal_error</varname> (<type>boolean</type>)
- <indexterm>
- <primary><varname>backtrace_on_internal_error</varname> configuration parameter</primary>
- </indexterm>
- </term>
- <listitem>
- <para>
- If this parameter is on and an error with error code XX000 (internal
- error; see also <xref linkend="errcodes-appendix"/>) is raised, then a
- backtrace is written to the server log together with the error
- message. This can be used to debug such internal errors (which should
- normally not happen in production). The default is off.
- </para>
-
- <para>
- Backtrace support is not available on all platforms, and the quality
- of the backtraces depends on compilation options.
- </para>
-
- <para>
- Only superusers and users with the appropriate <literal>SET</literal>
- privilege can change this setting.
- </para>
- </listitem>
- </varlistentry>
-
<varlistentry id="guc-debug-discard-caches" xreflabel="debug_discard_caches">
<term><varname>debug_discard_caches</varname> (<type>integer</type>)
<indexterm>
/* Collect backtrace, if enabled and we didn't already */
if (!edata->backtrace &&
- ((edata->funcname &&
- backtrace_functions &&
- matches_backtrace_functions(edata->funcname)) ||
- (edata->sqlerrcode == ERRCODE_INTERNAL_ERROR &&
- backtrace_on_internal_error)))
+ edata->funcname &&
+ backtrace_functions &&
+ matches_backtrace_functions(edata->funcname))
set_backtrace(edata, 2);
/*
double log_statement_sample_rate = 1.0;
double log_xact_sample_rate = 0;
char *backtrace_functions;
-bool backtrace_on_internal_error = false;
int temp_file_limit = -1;
struct config_bool ConfigureNamesBool[] =
{
- {
- {"backtrace_on_internal_error", PGC_SUSET, DEVELOPER_OPTIONS,
- gettext_noop("Log backtrace for any error with error code XX000 (internal error)."),
- NULL,
- GUC_NOT_IN_SAMPLE
- },
- &backtrace_on_internal_error,
- false,
- NULL, NULL, NULL
- },
{
{"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of sequential-scan plans."),
extern PGDLLIMPORT double log_statement_sample_rate;
extern PGDLLIMPORT double log_xact_sample_rate;
extern PGDLLIMPORT char *backtrace_functions;
-extern PGDLLIMPORT bool backtrace_on_internal_error;
extern PGDLLIMPORT int temp_file_limit;