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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers