Thread: Comfortably check BackendPID with psql

Comfortably check BackendPID with psql

From
Naoya Anzai
Date:
Hi, hackers!

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!

Image.
----------------------
naoya=# \bid
Backend Process ID
 pid
------
 1716
(1 row)
-----------------------

How do you like it?

Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Solution Inovetors, Ltd.
E-Mail: nao-anzai@xc.jp.nec.com
---


Attachment

Re: Comfortably check BackendPID with psql

From
Marko Tiikkaja
Date:
On 6/11/15 11:41 AM, Naoya Anzai wrote:
> This can change the input of the 24 characters to the only 4 characters!
> 
> Image.
> ----------------------
> naoya=# \bid
> Backend Process ID
>   pid
> ------
>   1716
> (1 row)
> -----------------------
> 
> How do you like it?

Seems easier to set this in .psqlrc:
 \set bid 'select pg_backend_pid();'

and then:

=# :bidpg_backend_pid
----------------         84430
(1 row)

No patches or concerns for psql version necessary.


.m



Re: Comfortably check BackendPID with psql

From
Andres Freund
Date:
Hi,

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?

Regards,

Andres



Re: Comfortably check BackendPID with psql

From
Naoya Anzai
Date:
Hi, Andres, Marko

> Seems easier to set this in .psqlrc:
oops! I've never noticed..
Thank you for your comment.

Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Solution Inovetors, Ltd.
E-Mail: nao-anzai@xc.jp.nec.com
---



Re: Comfortably check BackendPID with psql

From
Jim Nasby
Date:
On 6/11/15 4:55 AM, Andres Freund wrote:
> Hi,
>
> 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.
-- 
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Data in Trouble? Get it in Treble! http://BlueTreble.com



Re: Comfortably check BackendPID with psql

From
Noah Misch
Date:
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.

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.



Re: Comfortably check BackendPID with psql

From
Naoya Anzai
Date:
> > >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.
>
> 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.

Thank you all!
My hack is going to be much smoother.

Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Solution Inovetors, Ltd.
E-Mail: nao-anzai@xc.jp.nec.com
---



Re: Comfortably check BackendPID with psql

From
Julien Rouhaud
Date:
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

Attachment

Re: Comfortably check BackendPID with psql

From
Petr Korobeinikov
Date:
<div dir="ltr">+1 for Julien's patch.<br /></div>

Re: Comfortably check BackendPID with psql

From
Andres Freund
Date:
On 2015-07-05 14:11:38 +0200, Julien Rouhaud wrote:
> 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.

Pushed the patch. I only made a minor belt-and-suspenders type of
change, namely to check whether PQbackendPID() returns 0 and not print
that and replaced PID by pid in the docs and comments.

Thanks for the patch!

Greetings,

Andres Freund



Re: Comfortably check BackendPID with psql

From
Julien Rouhaud
Date:
Le 07/07/2015 13:41, Andres Freund a écrit :
> On 2015-07-05 14:11:38 +0200, Julien Rouhaud wrote:
>> 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.
> 
> Pushed the patch. I only made a minor belt-and-suspenders type of
> change, namely to check whether PQbackendPID() returns 0 and not print
> that and replaced PID by pid in the docs and comments.
> 
> Thanks for the patch!
> 

Thanks!

> Greetings,
> 
> Andres Freund
> 


-- 
Julien Rouhaud
http://dalibo.com - http://dalibo.org



Re: Comfortably check BackendPID with psql

From
Tom Lane
Date:
Andres Freund <andres@anarazel.de> writes:
> Pushed the patch. I only made a minor belt-and-suspenders type of
> change, namely to check whether PQbackendPID() returns 0 and not print
> that and replaced PID by pid in the docs and comments.

I would s/pid/process ID/ in the docs.  "PID" is not a particularly
user-friendly term, and it's even less so if you fail to upper-case it.
        regards, tom lane



Re: Comfortably check BackendPID with psql

From
Andres Freund
Date:
On 2015-07-07 10:17:39 -0400, Tom Lane wrote:
> I would s/pid/process ID/ in the docs.  "PID" is not a particularly
> user-friendly term, and it's even less so if you fail to upper-case it.

We have both pid and PID in a bunch of places in the docs, and pid in
the ones that seem more likely to be noticed (e.g. system column docs in
catalogs.sgml).  And the targeted audience of PROMPT and especially %p
seems to be likely to know what a pid is.

I don't mind replacing it with process ID though. Done.

Andres