agora inbox for [email protected]
help / color / mirror / Atom feedFrom: Álvaro Herrera <[email protected]>
Subject: [PATCH 1/2] simplify coding in check_log_min_messages
Date: Tue, 17 Feb 2026 16:33:18 +0100
---
src/backend/utils/error/elog.c | 47 ++++++++++++++--------------------
1 file changed, 19 insertions(+), 28 deletions(-)
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index b9d2c96b97a..80d4eef755a 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -193,6 +193,7 @@ static pg_noinline void set_backtrace(ErrorData *edata, int num_skip);
static void backtrace_cleanup(int code, Datum arg);
static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str);
static void FreeErrorDataContents(ErrorData *edata);
+static int parse_message_level(const char *level);
static int log_min_messages_cmp(const ListCell *a, const ListCell *b);
static void write_console(const char *line, int len);
static const char *process_log_prefix_padding(const char *p, int *ppadding);
@@ -2403,9 +2404,6 @@ check_log_min_messages(char **newval, void **extra, GucSource source)
*/
if (sep == NULL)
{
- const struct config_enum_entry *entry;
- bool found;
-
/* Reject duplicates for default log level. */
if (defaultlevel != -1)
{
@@ -2414,18 +2412,7 @@ check_log_min_messages(char **newval, void **extra, GucSource source)
}
/* Validate the log level */
- found = false;
- for (entry = server_message_level_options; entry && entry->name; entry++)
- {
- if (pg_strcasecmp(entry->name, elem) == 0)
- {
- defaultlevel = entry->val;
- found = true;
- break;
- }
- }
-
- if (!found)
+ if ((defaultlevel = parse_message_level(elem)) == 0)
{
GUC_check_errdetail("Unrecognized log level: \"%s\".", elem);
goto lmm_fail;
@@ -2437,7 +2424,6 @@ check_log_min_messages(char **newval, void **extra, GucSource source)
char *ptype = elem;
bool found;
int level;
- const struct config_enum_entry *entry;
/*
* Temporarily clobber the ':' with a string terminator, so that
@@ -2446,18 +2432,7 @@ check_log_min_messages(char **newval, void **extra, GucSource source)
*sep = '\0';
/* Validate the log level */
- found = false;
- for (entry = server_message_level_options; entry && entry->name; entry++)
- {
- if (pg_strcasecmp(entry->name, loglevel) == 0)
- {
- level = entry->val;
- found = true;
- break;
- }
- }
-
- if (!found)
+ if ((level = parse_message_level(loglevel)) == 0)
{
GUC_check_errdetail("Unrecognized log level for process type \"%s\": \"%s\".",
ptype, loglevel);
@@ -2566,6 +2541,22 @@ lmm_fail:
return true;
}
+/*
+ * Recognize the given string as a message level (for log_min_messages), and
+ * return its value if successful. Otherwise, return 0.
+ */
+static int
+parse_message_level(const char *level)
+{
+ const struct config_enum_entry *entry;
+
+ for (entry = server_message_level_options; entry && entry->name; entry++)
+ if (pg_strcasecmp(entry->name, level) == 0)
+ return entry->val;
+
+ return 0;
+}
+
/*
* list_sort() callback for check_log_min_messages. The default element
* goes first; the rest are ordered by strcmp() of the process type.
--
2.47.3
--dnohjpfxulhc3bo3
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment; filename=0002-memory-free-simplify.patch
view thread (33+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH 1/2] simplify coding in check_log_min_messages
In-Reply-To: <no-message-id-875291@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox