Re: very long record lines in expanded psql output - Mailing list pgsql-hackers
| From | Andrew Dunstan |
|---|---|
| Subject | Re: very long record lines in expanded psql output |
| Date | |
| Msg-id | 998a8549-f808-a349-bae6-9f44d07e050d@dunslane.net Whole thread Raw |
| In response to | Re: very long record lines in expanded psql output (Pavel Stehule <pavel.stehule@gmail.com>) |
| Responses |
Re: very long record lines in expanded psql output
|
| List | pgsql-hackers |
On 8/5/21 6:56 AM, Pavel Stehule wrote:
> Hi
>
> čt 5. 8. 2021 v 12:36 odesílatel Platon Pronko
> <platon7pronko@gmail.com <mailto:platon7pronko@gmail.com>> napsal:
>
> In expanded mode psql calculates the width of the longest field in
> all the output rows,
> and prints the header line according to it. This often results in
> record header wrapping
> over several lines (see example below).
>
> This huge record header is printed the same way before each
> record, even if all the fields
> in current record are small and fit into terminal width. This
> often leads to situations
> when record header occupies the entirety of the screen, for all
> records, even though there are
> only a few records with huge fields in a record set.
>
> Maybe we can avoid making the header line longer than terminal
> width for \pset border 0
> and \pset border 1? We already have terminal width calculated.
> Please see attached a patch
> with the proposed implementation.
>
> Example output before the modification, in a terminal with a
> 100-column width:
>
> $ psql template1 -c "\x on" -c "\pset border 1;" -c "select n,
> repeat('x', n) as long_column_name from unnest(array[42,210]) as n"
> Expanded display is on.
> Border style is 1.
> ─[ RECORD 1
> ]────┬──────────────────────────────────────────────────────────────────────────────────
> ────────────────────────────────────────────────────────────────────────────────────────────────────
> ─────────────────────────────
> n │ 42
> long_column_name │ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> ─[ RECORD 2
> ]────┼──────────────────────────────────────────────────────────────────────────────────
> ────────────────────────────────────────────────────────────────────────────────────────────────────
> ─────────────────────────────
> n │ 210
> long_column_name │
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>
> And here's the same command after the patch:
>
> $ psql template1 -c "\x on" -c "\pset border 1;" -c "select n,
> repeat('x', n) as long_column_name from unnest(array[42,210]) as n"
> Expanded display is on.
> Border style is 1.
> ─[ RECORD 1
> ]────┬──────────────────────────────────────────────────────────────────────────────────
> n │ 42
> long_column_name │ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> ─[ RECORD 2
> ]────┼──────────────────────────────────────────────────────────────────────────────────
> n │ 210
> long_column_name │
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>
>
> the length of lines should be consistent.
>
> Your proposal breaks pspg
>
> https://github.com/okbob/pspg <https://github.com/okbob/pspg>
>
> It can be separate option, but it should not be default
>
>
I also find this annoying and would be happy to be rid of it. I could
see setting an option like
\pset xheader_width column|page|nnn
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
pgsql-hackers by date: