On 12/06/2015 06:56, Noah Misch wrote: > On Thu, Jun 11, 2015 at 04:05:13PM -0500, Jim Nasby wrote: >> On 6/11/15 4:55 AM, Andres Freund wrote: >>> On 2015-06-11 09:41:17 +0000, Naoya Anzai wrote: >>>> This is a so tiny patch but I think it is very useful for hackers and DBAs. >>>> When we debug with psql, we frequently use "SELECT pg_backend_pid();". >>>> This can change the input of the 24 characters to the only 4 characters! >>> >>> Not a big fan of that abbreviation itself. What I'd wondered about >>> instead - and actually had patched into my psql at some point - is >>> adding an appropriate escape to psql's PROMPT. I think that'd serve your >>> purpose as well? >> >> +3.14159; that would be hugely helpful when using gdb. >
+1 > You can get that today. In ~/.psqlrc: > > SELECT pg_catalog.pg_backend_pid() AS backend_pid \gset > \set PROMPT1 '%m %:backend_pid: %/%R%# ' > > It doesn't update after \connect, but the overlap between my use of \connect > and my use of debuggers is tiny. > > Tiny for me too, but I sometimes had the need. I can't really see any good reason not to add a %p escape to psql's PROMPT, so I'm attaching a simple patch to implement it. Unless someone objects, I'll add it to the next commitfest. -- Julien Rouhaud http://dalibo.com - http://dalibo.org
*** a/doc/src/sgml/ref/psql-ref.sgml --- b/doc/src/sgml/ref/psql-ref.sgml *************** *** 3365,3370 **** testdb=> <userinput>INSERT INTO my_table VALUES (:'content');</userinput> --- 3365,3377 ---- </varlistentry> <varlistentry> + <term><literal>%p</literal></term> + <listitem> + <para>The PID of the backend.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><literal>%></literal></term> <listitem><para>The port number at which the database server is listening.</para></listitem> </varlistentry> *** a/src/bin/psql/prompt.c --- b/src/bin/psql/prompt.c *************** *** 34,39 **** --- 34,40 ---- * %M - database server "hostname.domainname", "[local]" for AF_UNIX * sockets, "[local:/dir/name]" if not default * %m - like %M, but hostname only (before first dot), or always "[local]" + * %p - backend PID * %> - database server port number * %n - database user name * %/ - current database *************** *** 161,166 **** get_prompt(promptStatus_t status) --- 162,172 ---- if (pset.db) strlcpy(buf, session_username(), sizeof(buf)); break; + /* backend PID */ + case 'p': + if (pset.db) + snprintf(buf, sizeof(buf), "%d", PQbackendPID(pset.db)); + break; case '0': case '1':
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers