Re: psql's \d versus included-index-column feature

From: Oleksandr Shulgin <oleksandr(dot)shulgin(at)zalando(dot)de>
To: Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: psql's \d versus included-index-column feature
Date: 2018-07-19 08:04:01
Message-ID: CACACo5Si9=k=jYodyRD9ykzBjSki2h6-=sbR-YSTYu6EpPKBXQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Jul 19, 2018 at 1:11 AM Alexander Korotkov <
a(dot)korotkov(at)postgrespro(dot)ru> wrote:

> On Wed, Jul 18, 2018 at 11:14 PM David G. Johnston <
> david(dot)g(dot)johnston(at)gmail(dot)com> wrote:
>
>> On Wed, Jul 18, 2018 at 12:55 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>>
>>>
>>> regression=# \d tbl_include_reg_idx
>>> Index "public.tbl_include_reg_idx"
>>> Column | Type | Key | Definition
>>> --------+---------+------------------
>>> c1 | integer | t | c1
>>> c2 | integer | t | c2
>>> c3 | integer | f | c3
>>> c4 | box | f | c4
>>> btree, for table "public.tbl_include_reg"
>>>
>>
>> ​+1 for the additional column indicating whether the column is being
>> treated as key data or supplemental included data.​
>>
>
> +1
> And especially I don't think we should place word "INCLUDE" to the
> definition column.
>
> ​-1 for printing a boolean t/f; would rather spell it out:
>>
>
> IMHO, t/f have advantage of brevity. From my point of view, covering
> indexes are not so evident feature. So, users need to spend some time
> reading documentation before realizing what they are and how to use them.
> So, I don't expect that short designation of INCLUDE columns as "non-key"
> (Key == false) columns could be discouraging here.
>

I don't think there is an established practice on how to display this sort
of info, but I see that both styles already exist, namely:

=# \dL
List of languages
Name | Owner | Trusted | Description
------------+----------+---------+------------------------------
plpgsql | postgres | t | PL/pgSQL procedural language
plproxy | postgres | f |
...

and

=# \dC
List of casts
Source type | Target type | Function
| Implicit?
-----------------------------+-----------------------------+--------------------+---------------
abstime | date | date
| in assignment
abstime | integer | (binary
coercible) | no
abstime | timestamp without time zone | timestamp
| yes
...

I like the second option more, for readability reasons and because it is
easier to extend if ever needed.

Given that the documentation refers to included columns as "non-key
columns", it seems natural to me to name the \d output column "Key?" and
use "yes/no" as the values.

Regards,
--
Alex

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Etsuro Fujita 2018-07-19 08:35:11 Re: de-deduplicate code in DML execution hooks in postgres_fdw
Previous Message Ashutosh Bapat 2018-07-19 06:36:13 Re: print_path is missing GatherMerge and CustomScan support