Hi,
I always wondered why ps ax|grep postgres shows several extra blank lines
after the process name, i.e.
972 ?? Ss 0:00.69 postgres: writer process
973 ?? Ss 0:00.51 postgres: wal writer process
(I put newlines instead of spaces there). By looking into the code I've found
this part of set_ps_display:
#ifdef PS_USE_CLOBBER_ARGV/* pad unused memory; need only clobber remainder of old status string */if (last_status_len
>ps_buffer_cur_len) MemSet(ps_buffer + ps_buffer_cur_len, PS_PADDING, last_status_len -
ps_buffer_cur_len);last_status_len= ps_buffer_cur_len;
#endif /* PS_USE_CLOBBER_ARGV */
PS_PADDING padding on __darwin__ is set to ' '. Apparently this doesn't work
correctly with OS X 10.6. After I changed the define to use '\0' on darwin
extra blank likes (actually consisting of hundreds of spaces without a line
break) disappeared. The one-liner change follows:
===
diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c
index f27a52f..c2ddf33 100644
--- a/src/backend/utils/misc/ps_status.c
+++ b/src/backend/utils/misc/ps_status.c
@@ -76,7 +76,7 @@ bool update_process_title = true;/* Different systems want the buffer padded differently */
-#if defined(_AIX) || defined(__linux__) || defined(__svr4__)
+#if defined(_AIX) || defined(__linux__) || defined(__svr4__) || defined(__darwin__)#define PS_PADDING '\0'#else#define
PS_PADDING' '
===
I don't have different OS X versions to test, so I'm not sure whether 10.5 or
below are also affected. Also, the patch should specifically check for 10.6,
though I don't know how to distinguish between different OS X versions in
postgres sources (any suggestions?).
Regards,
--
Alexey Klyukin http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc