Hi Sometimes I have to run vacuum verbose in environments with hundreds of tables. The result is pretty unreadable. Attached patch try introduce some emphasis of interesting lines from INFO output. It is proof concept if some game with output has some benefits or not.
What do you think about this? Regards Pavel
From abc37216aecb9b0201a8fa88d642d4e3cfd30432 Mon Sep 17 00:00:00 2001 From: "[email protected]" <[email protected]> Date: Sun, 29 Mar 2026 18:01:16 +0200 Subject: [PATCH] initial --- src/common/logging.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/common/logging.c b/src/common/logging.c index 5206949e5d8..c6229940f4f 100644 --- a/src/common/logging.c +++ b/src/common/logging.c @@ -30,11 +30,13 @@ static const char *sgr_error = NULL; static const char *sgr_warning = NULL; static const char *sgr_note = NULL; static const char *sgr_locus = NULL; +static const char *sgr_info_command = NULL; #define SGR_ERROR_DEFAULT "01;31" #define SGR_WARNING_DEFAULT "01;35" #define SGR_NOTE_DEFAULT "01;36" #define SGR_LOCUS_DEFAULT "01" +#define SGR_INFO_COMMAND_DEFAULT "07" #define ANSI_ESCAPE_FMT "\x1b[%sm" #define ANSI_ESCAPE_RESET "\x1b[0m" @@ -143,6 +145,8 @@ pg_logging_init(const char *argv0) sgr_note = strdup(value); if (strcmp(name, "locus") == 0) sgr_locus = strdup(value); + if (strcmp(name, "info_command") == 0) + sgr_info_command = strdup(value); } } @@ -155,6 +159,7 @@ pg_logging_init(const char *argv0) sgr_warning = SGR_WARNING_DEFAULT; sgr_note = SGR_NOTE_DEFAULT; sgr_locus = SGR_LOCUS_DEFAULT; + sgr_info_command = SGR_INFO_COMMAND_DEFAULT; } } } @@ -331,7 +336,17 @@ pg_log_generic_v(enum pg_log_level level, enum pg_log_part part, if (required_len >= 2 && buf[required_len - 2] == '\n') buf[required_len - 2] = '\0'; - fprintf(stderr, "%s\n", buf); + if (level == PG_LOG_INFO && sgr_info_command && + (strncmp(buf, "INFO: vacuuming", strlen("INFO: vacuuming")) == 0 || + strncmp(buf, "INFO: repacking", strlen("INFO: vacuuming")) == 0 || + strncmp(buf, "INFO: analyzing", strlen("INFO: vacuuming")) == 0)) + { + fprintf(stderr, ANSI_ESCAPE_FMT, sgr_info_command); + fprintf(stderr, "%s\n", buf); + fprintf(stderr, ANSI_ESCAPE_RESET); + } + else + fprintf(stderr, "%s\n", buf); free(buf); } -- 2.53.0
