agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH 1/2] simplify coding in check_log_min_messages 161+ messages / 1 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ 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; 161+ 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] 161+ messages in thread
* [PATCH v52 10/10] CheckLogicalDecodingRequirements: be specific about which GUC is limiting @ 2026-04-03 19:01 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 161+ messages in thread From: Álvaro Herrera @ 2026-04-03 19:01 UTC (permalink / raw) --- src/backend/commands/repack_worker.c | 3 ++- src/backend/replication/logical/logical.c | 8 +++++--- src/backend/replication/logical/logicalfuncs.c | 2 +- src/backend/replication/slot.c | 18 ++++++++++++------ src/backend/replication/slotfuncs.c | 11 ++++++----- src/backend/replication/walsender.c | 5 +++-- src/include/replication/logical.h | 3 ++- src/include/replication/slot.h | 2 +- 8 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index 610592a05b0..ca827223845 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -224,7 +224,7 @@ repack_setup_logical_decoding(Oid relid) * Make sure we can use logical decoding. */ CheckSlotPermissions(); - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(true); /* * A single backend should not execute multiple REPACK commands at a time, @@ -252,6 +252,7 @@ repack_setup_logical_decoding(Oid relid) ctx = CreateInitDecodingContext(REPL_PLUGIN_NAME, NIL, true, + true, InvalidXLogRecPtr, XL_ROUTINE(.page_read = read_local_xlog_page, .segment_open = wal_segment_open, diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c index f20a0fe70ad..a08aece5731 100644 --- a/src/backend/replication/logical/logical.c +++ b/src/backend/replication/logical/logical.c @@ -108,9 +108,9 @@ static void LoadOutputPlugin(OutputPluginCallbacks *callbacks, const char *plugi * decoding. */ void -CheckLogicalDecodingRequirements(void) +CheckLogicalDecodingRequirements(bool repack) { - CheckSlotRequirements(); + CheckSlotRequirements(repack); /* * NB: Adding a new requirement likely means that RestoreSlotFromDisk() @@ -305,6 +305,7 @@ StartupDecodingContext(List *output_plugin_options, * output_plugin_options -- contains options passed to the output plugin * need_full_snapshot -- if true, must obtain a snapshot able to read all * tables; if false, one that can read only catalogs is acceptable. + * for_repack -- if true, we're going to be decoding for REPACK. * restart_lsn -- if given as invalid, it's this routine's responsibility to * mark WAL as reserved by setting a convenient restart_lsn for the slot. * Otherwise, we set for decoding to start from the given LSN without @@ -325,6 +326,7 @@ LogicalDecodingContext * CreateInitDecodingContext(const char *plugin, List *output_plugin_options, bool need_full_snapshot, + bool for_repack, XLogRecPtr restart_lsn, XLogReaderRoutine *xl_routine, LogicalOutputPluginWriterPrepareWrite prepare_write, @@ -341,7 +343,7 @@ CreateInitDecodingContext(const char *plugin, * On a standby, this check is also required while creating the slot. * Check the comments in the function. */ - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(for_repack); /* shorter lines... */ slot = MyReplicationSlot; diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c index 9760818941d..512013b0ef0 100644 --- a/src/backend/replication/logical/logicalfuncs.c +++ b/src/backend/replication/logical/logicalfuncs.c @@ -115,7 +115,7 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin CheckSlotPermissions(); - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(false); if (PG_ARGISNULL(0)) ereport(ERROR, diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index 2c6c6773ad2..13004ed547a 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -1669,19 +1669,25 @@ CheckLogicalSlotExists(void) * slots. */ void -CheckSlotRequirements(void) +CheckSlotRequirements(bool repack) { + int limit; + /* * NB: Adding a new requirement likely means that RestoreSlotFromDisk() * needs the same check. */ - /* XXX we should be able to check exactly which type of slot we need */ - if (max_replication_slots + max_repack_replication_slots == 0) + if (repack) + limit = max_repack_replication_slots; + else + limit = max_replication_slots; + + if (limit == 0) ereport(ERROR, - (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("replication slots can only be used if \"%s\" > 0 or \"%s\" > 0", - "max_replication_slots", "max_repack_replication_slots"))); + errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("replication slots can only be used if \"%s\" > 0", + repack ? "max_repack_replication_slots" : "max_replication_slots")); if (wal_level < WAL_LEVEL_REPLICA) ereport(ERROR, diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index 78dd3c4ea66..16fbd383735 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -90,7 +90,7 @@ pg_create_physical_replication_slot(PG_FUNCTION_ARGS) CheckSlotPermissions(); - CheckSlotRequirements(); + CheckSlotRequirements(false); create_physical_replication_slot(NameStr(*name), immediately_reserve, @@ -164,6 +164,7 @@ create_logical_replication_slot(char *name, char *plugin, */ ctx = CreateInitDecodingContext(plugin, NIL, false, /* just catalogs is OK */ + false, /* not repack */ restart_lsn, XL_ROUTINE(.page_read = read_local_xlog_page, .segment_open = wal_segment_open, @@ -203,7 +204,7 @@ pg_create_logical_replication_slot(PG_FUNCTION_ARGS) CheckSlotPermissions(); - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(false); create_logical_replication_slot(NameStr(*name), NameStr(*plugin), @@ -240,7 +241,7 @@ pg_drop_replication_slot(PG_FUNCTION_ARGS) CheckSlotPermissions(); - CheckSlotRequirements(); + CheckSlotRequirements(false); ReplicationSlotDrop(NameStr(*name), true); @@ -648,9 +649,9 @@ copy_replication_slot(FunctionCallInfo fcinfo, bool logical_slot) CheckSlotPermissions(); if (logical_slot) - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(false); else - CheckSlotRequirements(); + CheckSlotRequirements(false); LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 75ef3419a15..9d7d675fa96 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -1240,7 +1240,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) Assert(cmd->kind == REPLICATION_KIND_LOGICAL); - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(false); /* * Initially create persistent slot as ephemeral - that allows us to @@ -1309,6 +1309,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) Assert(IsLogicalDecodingEnabled()); ctx = CreateInitDecodingContext(cmd->plugin, NIL, need_full_snapshot, + false, InvalidXLogRecPtr, XL_ROUTINE(.page_read = logical_read_xlog_page, .segment_open = WalSndSegmentOpen, @@ -1466,7 +1467,7 @@ StartLogicalReplication(StartReplicationCmd *cmd) QueryCompletion qc; /* make sure that our requirements are still fulfilled */ - CheckLogicalDecodingRequirements(); + CheckLogicalDecodingRequirements(false); Assert(!MyReplicationSlot); diff --git a/src/include/replication/logical.h b/src/include/replication/logical.h index bc9d4ece672..bc075b16741 100644 --- a/src/include/replication/logical.h +++ b/src/include/replication/logical.h @@ -115,11 +115,12 @@ typedef struct LogicalDecodingContext } LogicalDecodingContext; -extern void CheckLogicalDecodingRequirements(void); +extern void CheckLogicalDecodingRequirements(bool repack); extern LogicalDecodingContext *CreateInitDecodingContext(const char *plugin, List *output_plugin_options, bool need_full_snapshot, + bool for_repack, XLogRecPtr restart_lsn, XLogReaderRoutine *xl_routine, LogicalOutputPluginWriterPrepareWrite prepare_write, diff --git a/src/include/replication/slot.h b/src/include/replication/slot.h index c316a01a807..489af7d8d6c 100644 --- a/src/include/replication/slot.h +++ b/src/include/replication/slot.h @@ -378,7 +378,7 @@ extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname extern void StartupReplicationSlots(void); extern void CheckPointReplicationSlots(bool is_shutdown); -extern void CheckSlotRequirements(void); +extern void CheckSlotRequirements(bool repack); extern void CheckSlotPermissions(void); extern ReplicationSlotInvalidationCause GetSlotInvalidationCause(const char *cause_name); -- 2.47.3 --gp2pyozrd5pweboh-- ^ permalink raw reply [nested|flat] 161+ messages in thread
end of thread, other threads:[~2026-04-03 19:01 UTC | newest] Thread overview: 161+ 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-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-04-03 19:01 [PATCH v52 10/10] CheckLogicalDecodingRequirements: be specific about which GUC is limiting Álvaro Herrera <[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