agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH 1/2] simplify coding in check_log_min_messages 123+ messages / 2 participants [nested] [flat]
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH 1/2] simplify coding in check_log_min_messages @ 2026-02-17 15:33 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Álvaro Herrera @ 2026-02-17 15:33 UTC (permalink / raw) --- 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 ^ permalink raw reply [nested|flat] 123+ messages in thread
* [PATCH v6a 5/5] gha: Only run main regression tests @ 2026-06-01 19:31 Andres Freund <[email protected]> 0 siblings, 0 replies; 123+ messages in thread From: Andres Freund @ 2026-06-01 19:31 UTC (permalink / raw) --- .github/workflows/postgresql-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/postgresql-ci.yml b/.github/workflows/postgresql-ci.yml index e2795ca0ffb..c6d4c960a55 100644 --- a/.github/workflows/postgresql-ci.yml +++ b/.github/workflows/postgresql-ci.yml @@ -35,7 +35,8 @@ env: # Check target for the autoconf builds. Can be set to e.g. check to only # only test the main regression tests. - CHECK: check-world PROVE_FLAGS=--timer + # FIXME: Reset + CHECK: check PROVE_FLAGS=--timer CHECKFLAGS: -Otarget # Build test dependencies as part of the build step, to see compiler @@ -45,7 +46,8 @@ env: # Can be set to a non-empty value to run a limited set of tests # (e.g. --suite regress to only run the main regression tests). - MTEST_TARGET: + # FIXME: Reset + MTEST_TARGET: --suite regress PGCTLTIMEOUT: 120 # avoids spurious failures during parallel tests TEMP_CONFIG: ${{ github.workspace }}/src/tools/ci/pg_ci_base.conf -- 2.54.0.380.gc69baaf57b --rv3g7aw7ud36z5b5-- ^ permalink raw reply [nested|flat] 123+ messages in thread
end of thread, other threads:[~2026-06-01 19:31 UTC | newest] Thread overview: 123+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-02-17 15:33 [PATCH 1/2] simplify coding in check_log_min_messages Álvaro Herrera <[email protected]> 2026-06-01 19:31 [PATCH v6a 5/5] gha: Only run main regression tests Andres Freund <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox