Re: [HACKERS] psql: Activate pager only for height, not width - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: [HACKERS] psql: Activate pager only for height, not width
Date
Msg-id CAMkU=1wBpDrHdjSvABtFRB1TguC+LBJJwpV79kxyMOkeUi2B3Q@mail.gmail.com
Whole thread Raw
In response to [HACKERS] psql: Activate pager only for height, not width  (Brendan Jurd <direvus@gmail.com>)
Responses Re: [HACKERS] psql: Activate pager only for height, not width  (Christoph Berg <myon@debian.org>)
List pgsql-hackers
On Sun, May 28, 2017 at 10:09 PM, Brendan Jurd <direvus@gmail.com> wrote:
Hello hackers,

I am often frustrated by the default behaviour of the psql pager, which will activate a pager if the output is deemed to be "too wide" for the terminal, regardless of the number of lines output, and of the pager_min_lines setting.

This behaviour is sometimes desirable, but in my use patterns it is more often the case that I want the pager to activate for output longer than terminal height, whereas for output a little wider than the terminal, I am happy for there to be some wrapping.  This is especially the case with "\d" output for tables, where, at 80 columns, very often the only wrapping is in the table borders and constraint/trigger definitions.

Usually I turn the pager off completely, and only switch it on when I am about to execute something that will return many rows, but what I'd really like is some way to tell psql to activate the pager as normal for height, but to ignore width.  My first thought was an alternate mode to \pset pager -- to {'on' | 'off' | 'always'} we could add 'height'.

Another option is to add the ability to specify the number of columns which psql considers "too wide", analogous to pager_min_lines.  I could then set pager_min_cols to something around 150 which would work nicely for my situation.

I don't have strong opinions about how the options are constructed, as long as it is possible to obtain the behaviour.

I would be happy to produce a patch, if this seems like an acceptable feature add.

I'd like a feature like this.  I often run into the problem where one or two lines of an EXPLAIN plan are wide enough to wrap, which causes the pager to kick in.  Then when I exit the pager, it clears the contents so I can't see that plan vertically adjacent to the one I'm trying to compare it to.  I'd rather have the pager kick in if greater than some settable number of the lines are too wide, or if the wrapped lines would push the height above the height limit.  If just one line is too wide, I'd rather just deal with them being wrapped.

(You can configure the pager not to redraw the screen when exited, but I want it to redraw the screen after looking at 10,000 rows, just not after looking ten rows, one of which was 170 characters wide)
 
Cheers,

Jeff

pgsql-hackers by date:

Previous
From: Claudio Freire
Date:
Subject: Re: [HACKERS] Use of non-restart-safe storage by temp_tablespaces
Next
From: Alvaro Herrera
Date:
Subject: Re: [HACKERS] Use of non-restart-safe storage by temp_tablespaces