pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
19+ messages / 5 participants
[nested] [flat]

Commits from this thread:
  2026-04-23 2e1d4fdb10  psql: Improve describe footer titles for publications.
  2026-04-13 8f81c92351  Fix capitalization in publication describe output.
* EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-10 07:13  Peter Smith <smithpb2250@gmail.com>
  0 siblings, 2 replies; 19+ messages in thread

From: Peter Smith @ 2026-04-10 07:13 UTC (permalink / raw)
  To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

Hi.

While experimenting with "CREATE PUBLICATION ... FOR ALL TABLES EXCEPT
(TABLE...)" I noticed a small "case" inconsistency.

Background: The \d and \dRp+ command were enhanced in commit fd36606
[1][2] to say what tables are excluded from what publications.

e.g.

# -- describe the publications
# \dRp+ pub1
                                                     Publication pub1
Owner   | All tables | All sequences | Inserts | Updates | Deletes |
Truncates | Generated columns | Via root | Description
----------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
postgres | t          | f             | t       | t      | t       | t
        | none              | f        |

Except tables:
  "public.t1"
  "public.t2"

# \dRp+ pub2
                                                     Publication pub2
Owner   | All tables | All sequences | Inserts | Updates | Deletes |
Truncates | Generated columns | Via root | Description
----------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
postgres | f          | f             | t       | t      | t       | t
        | none              | f        |
Tables:
  "public.t2"
  "public.t3"

# -- describe the tables
# \d t1
                Table "public.t1"
Column | Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
a      | integer |           |          |
Except Publications:
  "pub1"

# \d t2
                Table "public.t2"
Column | Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
a      | integer |           |          |

Publications:
  "pub2"
Except Publications:
  "pub1"

~~~

Notice that that the describe publication says:
"Tables:" and "Except tables:" (Lowercase "tables")

Notice that the describe table says:
"Publications:" and "Except Publications:"  (Uppercase "Publications")

I think they should use a consistent case:
eg1. (both lowercase) Except tables; Except publications, OR
eg2. (bother uppercase) Except Tables; Except Publications

~~~

I did not yet provide a patch because I was not sure which way
(uppercase/lowercase) is best, so wanted to hear some opinions about
that first.

(I'm expecting that some DOCS examples and/or TESTS for "describe"
will also be impacted).

Thoughts?

======
[1] https://github.com/postgres/postgres/commit/fd366065e06ae953c4f2d973d5c5f0474f3b87b6#diff-cdb325f899...
[2] https://github.com/postgres/postgres/commit/fd366065e06ae953c4f2d973d5c5f0474f3b87b6#diff-cdb325f899...

Kind Regards,
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-10 10:19  Amit Kapila <amit.kapila16@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  1 sibling, 1 reply; 19+ messages in thread

From: Amit Kapila @ 2026-04-10 10:19 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 10, 2026 at 12:43 PM Peter Smith <smithpb2250@gmail.com> wrote:
>
> Notice that that the describe publication says:
> "Tables:" and "Except tables:" (Lowercase "tables")
>
> Notice that the describe table says:
> "Publications:" and "Except Publications:"  (Uppercase "Publications")
>
> I think they should use a consistent case:
> eg1. (both lowercase) Except tables; Except publications, OR
> eg2. (bother uppercase) Except Tables; Except Publications
>

We should follow eg1. I checked few examples where we follow same
pattern as eg1:

Example-1: (See: "Tables from schemas")
 postgres=# \dRp+ pub1
                                                     Publication pub1
 Owner | All tables | All sequences | Inserts | Updates | Deletes |
Truncates | Generated columns | Via root | Description
-------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
 amit  | f          | f             | t       | t       | t       | t
       | none              | f        |
Tables from schemas:
    "sch1"

Example-2: ((See: "No connections")
postgres=# create user u1 CONNECTION LIMIT 0;
CREATE ROLE
postgres=# \du u1
       List of roles
 Role name |   Attributes
-----------+----------------
 u1        | No connections

-- 
With Regards,
Amit Kapila.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-13 02:14  Peter Smith <smithpb2250@gmail.com>
  parent: Amit Kapila <amit.kapila16@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-13 02:14 UTC (permalink / raw)
  To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 10, 2026 at 8:19 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Fri, Apr 10, 2026 at 12:43 PM Peter Smith <smithpb2250@gmail.com> wrote:
> >
> > Notice that that the describe publication says:
> > "Tables:" and "Except tables:" (Lowercase "tables")
> >
> > Notice that the describe table says:
> > "Publications:" and "Except Publications:"  (Uppercase "Publications")
> >
> > I think they should use a consistent case:
> > eg1. (both lowercase) Except tables; Except publications, OR
> > eg2. (bother uppercase) Except Tables; Except Publications
> >
>
> We should follow eg1. I checked few examples where we follow same
> pattern as eg1:
>
> Example-1: (See: "Tables from schemas")
>  postgres=# \dRp+ pub1
>                                                      Publication pub1
>  Owner | All tables | All sequences | Inserts | Updates | Deletes |
> Truncates | Generated columns | Via root | Description
> -------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
>  amit  | f          | f             | t       | t       | t       | t
>        | none              | f        |
> Tables from schemas:
>     "sch1"
>
> Example-2: ((See: "No connections")
> postgres=# create user u1 CONNECTION LIMIT 0;
> CREATE ROLE
> postgres=# \du u1
>        List of roles
>  Role name |   Attributes
> -----------+----------------
>  u1        | No connections
>

Hi Amit.

Thanks for the advice.

PSA patch v1 to change "Except Publications" to "Except publications".

======
Kind Regards,
Peter Smith.
Fujitsu Australia

Attachments:

v1-0001-describe-table-except-publications.patch (application/octet-stream, 1.8K) download From d28f4edd28e15c3af682c6bda2c34aa44eaa9c38 Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Mon, 13 Apr 2026 12:12:00 +1000 Subject: [PATCH v1] describe table except publications --- src/bin/psql/describe.c | 2 +- src/test/regress/expected/publication.out | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 4e8ff00394a..291c493f594 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3306,7 +3306,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Except Publications:")); + printTableAddFooter(&cont, _("Except publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index a9059a39138..d028e9be866 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -252,7 +252,7 @@ Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) Publications: "testpub_foralltables" -Except Publications: +Except publications: "testpub_foralltables_excepttable" "testpub_foralltables_excepttable1" @@ -435,7 +435,7 @@ Except tables: --------+---------+-----------+----------+--------- a | integer | | | Partition of: testpub_root FOR VALUES FROM (0) TO (100) -Except Publications: +Except publications: "testpub8" \d testpub_root @@ -444,7 +444,7 @@ Except Publications: --------+---------+-----------+----------+--------- a | integer | | | Partition key: RANGE (a) -Except Publications: +Except publications: "testpub8" Number of partitions: 1 (Use \d+ to list them.) -- 2.47.3
^ permalink raw reply [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-13 03:21  vignesh C <vignesh21@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: vignesh C @ 2026-04-13 03:21 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Mon, 13 Apr 2026 at 07:45, Peter Smith <smithpb2250@gmail.com> wrote:
>
> On Fri, Apr 10, 2026 at 8:19 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
> >
> > On Fri, Apr 10, 2026 at 12:43 PM Peter Smith <smithpb2250@gmail.com> wrote:
> > >
> > > Notice that that the describe publication says:
> > > "Tables:" and "Except tables:" (Lowercase "tables")
> > >
> > > Notice that the describe table says:
> > > "Publications:" and "Except Publications:"  (Uppercase "Publications")
> > >
> > > I think they should use a consistent case:
> > > eg1. (both lowercase) Except tables; Except publications, OR
> > > eg2. (bother uppercase) Except Tables; Except Publications
> > >
> >
> > We should follow eg1. I checked few examples where we follow same
> > pattern as eg1:
> >
> > Example-1: (See: "Tables from schemas")
> >  postgres=# \dRp+ pub1
> >                                                      Publication pub1
> >  Owner | All tables | All sequences | Inserts | Updates | Deletes |
> > Truncates | Generated columns | Via root | Description
> > -------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
> >  amit  | f          | f             | t       | t       | t       | t
> >        | none              | f        |
> > Tables from schemas:
> >     "sch1"
> >
> > Example-2: ((See: "No connections")
> > postgres=# create user u1 CONNECTION LIMIT 0;
> > CREATE ROLE
> > postgres=# \du u1
> >        List of roles
> >  Role name |   Attributes
> > -----------+----------------
> >  u1        | No connections
> >
>
> Hi Amit.
>
> Thanks for the advice.
>
> PSA patch v1 to change "Except Publications" to "Except publications".

The commit message could be improved:
Date: Mon, 13 Apr 2026 12:12:00 +1000
Subject: [PATCH v1] describe table except publications

---
 src/bin/psql/describe.c                   | 2 +-

Other than that, the patch looks good to me.

Regards,
Vignesh.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-13 05:23  Peter Smith <smithpb2250@gmail.com>
  parent: vignesh C <vignesh21@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-13 05:23 UTC (permalink / raw)
  To: vignesh C <vignesh21@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Mon, Apr 13, 2026 at 1:21 PM vignesh C <vignesh21@gmail.com> wrote:
>
...
> The commit message could be improved:
> Date: Mon, 13 Apr 2026 12:12:00 +1000
> Subject: [PATCH v1] describe table except publications
>
> ---
>  src/bin/psql/describe.c                   | 2 +-
>
> Other than that, the patch looks good to me.
>

Hi Vignesh.

Thanks for the review.

PSA patch v2. It is the same as v1, but with an improved commit message,

======
Kind Regards,
Peter Smith.
Fujitsu Australia

Attachments:

v2-0001-describe-table-except-publications.patch (application/octet-stream, 2.2K) download From 5a8a649d2eb673460bce86a80d0ff63a4c7fcfc6 Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Mon, 13 Apr 2026 14:56:31 +1000 Subject: [PATCH v2] describe table except publications Commit fd36606 introduced a small "case" inconsistency in the psql table describe (\d) command output. "Except Publications:" should say "Except publications:". Author: Peter Smith <smithpb2250@gmail.com> Reviewed-by: vignesh C <vignesh21@gmail.com> Discussion: https://www.postgresql.org/message-id/CAHut%2BPvtmM7tCut-K-EWSq0_Hg5ey%3DM2NreU_Fq80SpUOgmiBw%40mail.gmail.com --- src/bin/psql/describe.c | 2 +- src/test/regress/expected/publication.out | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 4e8ff00394a..291c493f594 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3306,7 +3306,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Except Publications:")); + printTableAddFooter(&cont, _("Except publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index a9059a39138..d028e9be866 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -252,7 +252,7 @@ Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) Publications: "testpub_foralltables" -Except Publications: +Except publications: "testpub_foralltables_excepttable" "testpub_foralltables_excepttable1" @@ -435,7 +435,7 @@ Except tables: --------+---------+-----------+----------+--------- a | integer | | | Partition of: testpub_root FOR VALUES FROM (0) TO (100) -Except Publications: +Except publications: "testpub8" \d testpub_root @@ -444,7 +444,7 @@ Except Publications: --------+---------+-----------+----------+--------- a | integer | | | Partition key: RANGE (a) -Except Publications: +Except publications: "testpub8" Number of partitions: 1 (Use \d+ to list them.) -- 2.47.3
^ permalink raw reply [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-14 00:03  Peter Smith <smithpb2250@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 0 replies; 19+ messages in thread

From: Peter Smith @ 2026-04-14 00:03 UTC (permalink / raw)
  To: vignesh C <vignesh21@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Mon, Apr 13, 2026 at 3:23 PM Peter Smith <smithpb2250@gmail.com> wrote:
>
> On Mon, Apr 13, 2026 at 1:21 PM vignesh C <vignesh21@gmail.com> wrote:
> >
> ...
> > The commit message could be improved:
> > Date: Mon, 13 Apr 2026 12:12:00 +1000
> > Subject: [PATCH v1] describe table except publications
> >
> > ---
> >  src/bin/psql/describe.c                   | 2 +-
> >
> > Other than that, the patch looks good to me.
> >
>
> Hi Vignesh.
>
> Thanks for the review.
>
> PSA patch v2. It is the same as v1, but with an improved commit message,
>

Hi Amit. Thanks for pushing.

======
Kind Regards
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-16 14:10  Álvaro Herrera <alvherre@kurilemu.de>
  parent: Peter Smith <smithpb2250@gmail.com>
  1 sibling, 1 reply; 19+ messages in thread

From: Álvaro Herrera @ 2026-04-16 14:10 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On 2026-Apr-10, Peter Smith wrote:

> # -- describe the tables
> # \d t1
>                 Table "public.t1"
> Column | Type   | Collation | Nullable | Default
> --------+---------+-----------+----------+---------
> a      | integer |           |          |
> Except Publications:
>   "pub1"

I have a hard time understanding what an "except publication" is.  I
think this would be clearer if the header said "Excluded from publications:"


A footer section under a publication saying "Except tables" on the other
hand is crystal clear.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-16 23:03  Peter Smith <smithpb2250@gmail.com>
  parent: Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-16 23:03 UTC (permalink / raw)
  To: Álvaro Herrera <alvherre@kurilemu.de>; +Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 17, 2026 at 12:10 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
>
> On 2026-Apr-10, Peter Smith wrote:
>
> > # -- describe the tables
> > # \d t1
> >                 Table "public.t1"
> > Column | Type   | Collation | Nullable | Default
> > --------+---------+-----------+----------+---------
> > a      | integer |           |          |
> > Except Publications:
> >   "pub1"
>
> I have a hard time understanding what an "except publication" is.  I
> think this would be clearer if the header said "Excluded from publications:"
>

I agree that your suggestion is clearer.

If we make that change, then should the "Publications:" footer also be
modified similarly (to "Included in publications:") so they match?

e.g.

CURRENTLY

test_pub=# \d t1
                 Table "public.t1"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |
Publications:
    "pub1"
    "pub2"
Except publications:
    "pub3"

~~~

SUGGESTION

test_pub=# \d t1
                 Table "public.t1"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |
Included in publications:
    "pub1"
    "pub2"
Excluded from publications:
    "pub3"

~~~

I will wait for more opinions/consensus before providing a patch.

======
Kind Regards,
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-17 05:23  Amit Kapila <amit.kapila16@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 2 replies; 19+ messages in thread

From: Amit Kapila @ 2026-04-17 05:23 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 17, 2026 at 4:34 AM Peter Smith <smithpb2250@gmail.com> wrote:
>
> On Fri, Apr 17, 2026 at 12:10 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
> >
> > On 2026-Apr-10, Peter Smith wrote:
> >
> > > # -- describe the tables
> > > # \d t1
> > >                 Table "public.t1"
> > > Column | Type   | Collation | Nullable | Default
> > > --------+---------+-----------+----------+---------
> > > a      | integer |           |          |
> > > Except Publications:
> > >   "pub1"
> >
> > I have a hard time understanding what an "except publication" is.  I
> > think this would be clearer if the header said "Excluded from publications:"
> >
>
> I agree that your suggestion is clearer.
>
> If we make that change, then should the "Publications:" footer also be
> modified similarly (to "Included in publications:") so they match?
>
> e.g.
>
> CURRENTLY
>
> test_pub=# \d t1
>                  Table "public.t1"
>  Column |  Type   | Collation | Nullable | Default
> --------+---------+-----------+----------+---------
>  a      | integer |           |          |
> Publications:
>     "pub1"
>     "pub2"
> Except publications:
>     "pub3"
>
> ~~~
>
> SUGGESTION
>
> test_pub=# \d t1
>                  Table "public.t1"
>  Column |  Type   | Collation | Nullable | Default
> --------+---------+-----------+----------+---------
>  a      | integer |           |          |
> Included in publications:
>     "pub1"
>     "pub2"
> Excluded from publications:
>     "pub3"
>
> ~~~
>

+1 for the proposal. It makes the description clear.

-- 
With Regards,
Amit Kapila.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-17 08:45  Peter Smith <smithpb2250@gmail.com>
  parent: Amit Kapila <amit.kapila16@gmail.com>
  1 sibling, 0 replies; 19+ messages in thread

From: Peter Smith @ 2026-04-17 08:45 UTC (permalink / raw)
  To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 17, 2026 at 3:24 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Fri, Apr 17, 2026 at 4:34 AM Peter Smith <smithpb2250@gmail.com> wrote:
> >
> > On Fri, Apr 17, 2026 at 12:10 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
> > >
> > > On 2026-Apr-10, Peter Smith wrote:
> > >
> > > > # -- describe the tables
> > > > # \d t1
> > > >                 Table "public.t1"
> > > > Column | Type   | Collation | Nullable | Default
> > > > --------+---------+-----------+----------+---------
> > > > a      | integer |           |          |
> > > > Except Publications:
> > > >   "pub1"
> > >
> > > I have a hard time understanding what an "except publication" is.  I
> > > think this would be clearer if the header said "Excluded from publications:"
> > >
> >
> > I agree that your suggestion is clearer.
> >
> > If we make that change, then should the "Publications:" footer also be
> > modified similarly (to "Included in publications:") so they match?
> >
> > e.g.
> >
> > CURRENTLY
> >
> > test_pub=# \d t1
> >                  Table "public.t1"
> >  Column |  Type   | Collation | Nullable | Default
> > --------+---------+-----------+----------+---------
> >  a      | integer |           |          |
> > Publications:
> >     "pub1"
> >     "pub2"
> > Except publications:
> >     "pub3"
> >
> > ~~~
> >
> > SUGGESTION
> >
> > test_pub=# \d t1
> >                  Table "public.t1"
> >  Column |  Type   | Collation | Nullable | Default
> > --------+---------+-----------+----------+---------
> >  a      | integer |           |          |
> > Included in publications:
> >     "pub1"
> >     "pub2"
> > Excluded from publications:
> >     "pub3"
> >
> > ~~~
> >
>
> +1 for the proposal. It makes the description clear.
>

OK. Thanks.

Next question: am I only changing this for the table describe (\d)?

I am asking because I noticed the schema describe (\dn) also has a
footer called "Publications:".

----------
test_pub=# CREATE PUBLICATION pub7 FOR TABLES IN SCHEMA my_schema;
CREATE PUBLICATION
test_pub=# \dn+ my_schema
                    List of schemas
   Name    |  Owner   | Access privileges | Description
-----------+----------+-------------------+-------------
 my_schema | postgres |                   |
Publications:
    "pub7"
----------

Would you like this schema footer also changed to say "Included in
publications:"?

======
Kind Regards,
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-20 02:56  Peter Smith <smithpb2250@gmail.com>
  parent: Amit Kapila <amit.kapila16@gmail.com>
  1 sibling, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-20 02:56 UTC (permalink / raw)
  To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Fri, Apr 17, 2026 at 3:24 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Fri, Apr 17, 2026 at 4:34 AM Peter Smith <smithpb2250@gmail.com> wrote:
> >
> > On Fri, Apr 17, 2026 at 12:10 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
> > >
> > > On 2026-Apr-10, Peter Smith wrote:
> > >
> > > > # -- describe the tables
> > > > # \d t1
> > > >                 Table "public.t1"
> > > > Column | Type   | Collation | Nullable | Default
> > > > --------+---------+-----------+----------+---------
> > > > a      | integer |           |          |
> > > > Except Publications:
> > > >   "pub1"
> > >
> > > I have a hard time understanding what an "except publication" is.  I
> > > think this would be clearer if the header said "Excluded from publications:"
> > >
> >
> > I agree that your suggestion is clearer.
> >
> > If we make that change, then should the "Publications:" footer also be
> > modified similarly (to "Included in publications:") so they match?
> >
> > e.g.
> >
> > CURRENTLY
> >
> > test_pub=# \d t1
> >                  Table "public.t1"
> >  Column |  Type   | Collation | Nullable | Default
> > --------+---------+-----------+----------+---------
> >  a      | integer |           |          |
> > Publications:
> >     "pub1"
> >     "pub2"
> > Except publications:
> >     "pub3"
> >
> > ~~~
> >
> > SUGGESTION
> >
> > test_pub=# \d t1
> >                  Table "public.t1"
> >  Column |  Type   | Collation | Nullable | Default
> > --------+---------+-----------+----------+---------
> >  a      | integer |           |          |
> > Included in publications:
> >     "pub1"
> >     "pub2"
> > Excluded from publications:
> >     "pub3"
> >
> > ~~~
> >
>
> +1 for the proposal. It makes the description clear.
>

PSA  v3 patches.

v3-0001 - Fixed the TABLE describe footer titles as suggested.
- "Included in publications:"
- "Excluded from publications:"

v3-0002 - Made similar footer title changes for SEQUENCE describe

v3-0003 - Made similar footer title changes for SHCEMA describe. In
passing, I found that this \dn describe output was not even being
tested, so I added the missing regression test.

======
Kind Regards,
Peter Smith.
Fujitsu Australia.

Attachments: download all (3 files, .tar.gz)

v3-0001-Fix-footer-titles-for-TABLE-describe.patch (application/octet-stream, 8.0K) download From 8678152b07ce7b8b19fb8c7be045acad6c03fd3c Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Mon, 20 Apr 2026 12:22:38 +1000 Subject: [PATCH v3] Fix footer titles for TABLE describe --- doc/src/sgml/logical-replication.sgml | 8 +++--- src/bin/psql/describe.c | 4 +-- src/test/regress/expected/alter_table.out | 2 +- src/test/regress/expected/publication.out | 30 +++++++++++------------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml index 598e23ad4f5..c06d255d2ed 100644 --- a/doc/src/sgml/logical-replication.sgml +++ b/doc/src/sgml/logical-replication.sgml @@ -1099,7 +1099,7 @@ Tables: c | text | | not null | Indexes: "t1_pkey" PRIMARY KEY, btree (a, c) -Publications: +Included in publications: "p1" WHERE ((a > 5) AND (c = 'NSW'::text)) "p2" @@ -1112,7 +1112,7 @@ Publications: f | integer | | | Indexes: "t2_pkey" PRIMARY KEY, btree (d) -Publications: +Included in publications: "p2" WHERE (e = 99) "p3" WHERE (d = 10) @@ -1125,7 +1125,7 @@ Publications: i | integer | | | Indexes: "t3_pkey" PRIMARY KEY, btree (g) -Publications: +Included in publications: "p3" WHERE (g = 10) ]]></programlisting></para> @@ -1526,7 +1526,7 @@ Tables: e | text | | | Indexes: "t1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "p1" (id, a, b, d) </programlisting></para> diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index dd1179ef927..b315159bcb3 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3263,7 +3263,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Publications:")); + printTableAddFooter(&cont, _("Included in publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) @@ -3306,7 +3306,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Except publications:")); + printTableAddFooter(&cont, _("Excluded from publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index dad9d36937e..6dd22be0e8d 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -4868,7 +4868,7 @@ alter table alter1.t1 set schema alter2; Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+---------+-----------+----------+---------+---------+--------------+------------- a | integer | | | | plain | | -Publications: +Included in publications: "pub1" drop publication pub1; diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index d028e9be866..eb635147644 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -201,7 +201,7 @@ SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_forall data | text | | | | extended | | Indexes: "testpub_tbl2_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_foralltables" Not-null constraints: "testpub_tbl2_id_not_null" NOT NULL "id" @@ -250,9 +250,9 @@ Except tables: data | text | | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_foralltables" -Except publications: +Excluded from publications: "testpub_foralltables_excepttable" "testpub_foralltables_excepttable1" @@ -435,7 +435,7 @@ Except tables: --------+---------+-----------+----------+--------- a | integer | | | Partition of: testpub_root FOR VALUES FROM (0) TO (100) -Except publications: +Excluded from publications: "testpub8" \d testpub_root @@ -444,7 +444,7 @@ Except publications: --------+---------+-----------+----------+--------- a | integer | | | Partition key: RANGE (a) -Except publications: +Excluded from publications: "testpub8" Number of partitions: 1 (Use \d+ to list them.) @@ -636,7 +636,7 @@ Tables: Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- e | integer | | | -Publications: +Included in publications: "testpub5" WHERE ((e > 1000) AND (e < 2000)) ALTER PUBLICATION testpub5 DROP TABLE testpub_rf_tbl2; @@ -664,7 +664,7 @@ Tables: Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- e | integer | | | -Publications: +Included in publications: "testpub5" WHERE ((e > 300) AND (e < 500)) -- test \d <tablename> (now it displays filter information) @@ -678,7 +678,7 @@ RESET client_min_messages; --------+---------+-----------+----------+--------- a | integer | | | b | text | | | -Publications: +Included in publications: "testpub_rf_no" "testpub_rf_yes" WHERE (a > 1) @@ -1153,7 +1153,7 @@ ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl7 (a, b); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, b) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1169,7 +1169,7 @@ ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, b); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, b) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1185,7 +1185,7 @@ ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, c); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, c) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1323,7 +1323,7 @@ Tables: c | integer | | not null | | plain | | Indexes: "testpub_tbl_both_filters_pkey" PRIMARY KEY, btree (a, c) REPLICA IDENTITY -Publications: +Included in publications: "testpub_both_filters" (a, c) WHERE (c <> 1) Not-null constraints: "testpub_tbl_both_filters_a_not_null" NOT NULL "a" @@ -1540,7 +1540,7 @@ ALTER PUBLICATION testpub_ins_trunct ADD TABLE pub_test.testpub_nopk, testpub_tb --------+---------+-----------+----------+---------+---------+--------------+------------- foo | integer | | | | plain | | bar | integer | | | | plain | | -Publications: +Included in publications: "testpub_default" "testpub_fortbl" "testpub_ins_trunct" @@ -1553,7 +1553,7 @@ Publications: data | text | | | | extended | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_default" "testpub_fortbl" "testpub_ins_trunct" @@ -1581,7 +1581,7 @@ ERROR: relation "testpub_nopk" is not part of the publication data | text | | | | extended | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_fortbl" "testpub_ins_trunct" Not-null constraints: -- 2.47.3
v3-0003-Fix-footer-titles-for-SCHEMA-describe.patch (application/octet-stream, 2.7K) download From 50536524004025de6428ad8321860273f71bee24 Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Mon, 20 Apr 2026 12:50:58 +1000 Subject: [PATCH v3] Fix footer titles for SCHEMA describe In passing, add a missing \dn describe test. --- src/bin/psql/describe.c | 6 +++--- src/test/regress/expected/publication.out | 9 +++++++++ src/test/regress/sql/publication.sql | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index a58598d82a9..49228117eb6 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -5533,11 +5533,11 @@ listSchemas(const char *pattern, bool verbose, bool showSystem) { /* * Allocate memory for footers. Size of footers will be 1 (for - * storing "Publications:" string) + publication schema mapping - * count + 1 (for storing NULL). + * storing "Included in publications:" string) + publication + * schema mapping count + 1 (for storing NULL). */ footers = pg_malloc_array(char *, 1 + pub_schema_tuples + 1); - footers[0] = pg_strdup(_("Publications:")); + footers[0] = pg_strdup(_("Included in publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < pub_schema_tuples; i++) diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index 8d9eb57ed1a..0345f6c5e47 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -128,6 +128,15 @@ Tables from schemas: SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pub_test; +\dn pub_test + List of schemas + Name | Owner +----------+-------------------------- + pub_test | regress_publication_user +Included in publications: + "testpub_forschema" + "testpub_fortable" + -- should be able to create publication with schema and table of the same -- schema CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE pub_test.testpub_nopk; diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql index 642e32fa098..041e14a4de6 100644 --- a/src/test/regress/sql/publication.sql +++ b/src/test/regress/sql/publication.sql @@ -76,6 +76,8 @@ ALTER PUBLICATION testpub_fortable SET TABLES IN SCHEMA pub_test; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pub_test; +\dn pub_test + -- should be able to create publication with schema and table of the same -- schema CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE pub_test.testpub_nopk; -- 2.47.3
v3-0002-Fix-footer-titles-for-SEQUENCE-describe.patch (application/octet-stream, 1.9K) download From cbb5ae8309963de2b2e003cfcc6c6fa761d4f133 Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Mon, 20 Apr 2026 12:33:23 +1000 Subject: [PATCH v3] Fix footer titles for SEQUENCE describe --- src/bin/psql/describe.c | 2 +- src/test/regress/expected/publication.out | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index b315159bcb3..a58598d82a9 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1895,7 +1895,7 @@ describeOneTableDetails(const char *schemaname, if (nrows > 0) { - printfPQExpBuffer(&tmpbuf, _("Publications:")); + printfPQExpBuffer(&tmpbuf, _("Included in publications:")); for (i = 0; i < nrows; i++) appendPQExpBuffer(&tmpbuf, "\n \"%s\"", PQgetvalue(result, i, 0)); diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index eb635147644..8d9eb57ed1a 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -479,7 +479,7 @@ SELECT pubname, puballtables, puballsequences FROM pg_publication WHERE pubname Type | Start | Minimum | Maximum | Increment | Cycles? | Cache --------+-------+---------+---------------------+-----------+---------+------- bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1 -Publications: +Included in publications: "regress_pub_forallsequences1" \dRp+ regress_pub_forallsequences1 @@ -498,7 +498,7 @@ RESET client_min_messages; Type | Start | Minimum | Maximum | Increment | Cycles? | Cache --------+-------+---------+---------------------+-----------+---------+------- bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1 -Publications: +Included in publications: "regress_pub_forallsequences1" "regress_pub_forallsequences2" -- 2.47.3
^ permalink raw reply [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-20 05:04  vignesh C <vignesh21@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: vignesh C @ 2026-04-20 05:04 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Mon, 20 Apr 2026 at 08:27, Peter Smith <smithpb2250@gmail.com> wrote:
>
> On Fri, Apr 17, 2026 at 3:24 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
> >
> > On Fri, Apr 17, 2026 at 4:34 AM Peter Smith <smithpb2250@gmail.com> wrote:
> > >
> > > On Fri, Apr 17, 2026 at 12:10 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
> > > >
> > > > On 2026-Apr-10, Peter Smith wrote:
> > > >
> > > > > # -- describe the tables
> > > > > # \d t1
> > > > >                 Table "public.t1"
> > > > > Column | Type   | Collation | Nullable | Default
> > > > > --------+---------+-----------+----------+---------
> > > > > a      | integer |           |          |
> > > > > Except Publications:
> > > > >   "pub1"
> > > >
> > > > I have a hard time understanding what an "except publication" is.  I
> > > > think this would be clearer if the header said "Excluded from publications:"
> > > >
> > >
> > > I agree that your suggestion is clearer.
> > >
> > > If we make that change, then should the "Publications:" footer also be
> > > modified similarly (to "Included in publications:") so they match?
> > >
> > > e.g.
> > >
> > > CURRENTLY
> > >
> > > test_pub=# \d t1
> > >                  Table "public.t1"
> > >  Column |  Type   | Collation | Nullable | Default
> > > --------+---------+-----------+----------+---------
> > >  a      | integer |           |          |
> > > Publications:
> > >     "pub1"
> > >     "pub2"
> > > Except publications:
> > >     "pub3"
> > >
> > > ~~~
> > >
> > > SUGGESTION
> > >
> > > test_pub=# \d t1
> > >                  Table "public.t1"
> > >  Column |  Type   | Collation | Nullable | Default
> > > --------+---------+-----------+----------+---------
> > >  a      | integer |           |          |
> > > Included in publications:
> > >     "pub1"
> > >     "pub2"
> > > Excluded from publications:
> > >     "pub3"
> > >
> > > ~~~
> > >
> >
> > +1 for the proposal. It makes the description clear.
> >
>
> PSA  v3 patches.
>
> v3-0001 - Fixed the TABLE describe footer titles as suggested.
> - "Included in publications:"
> - "Excluded from publications:"
>
> v3-0002 - Made similar footer title changes for SEQUENCE describe
>
> v3-0003 - Made similar footer title changes for SHCEMA describe. In
> passing, I found that this \dn describe output was not even being
> tested, so I added the missing regression test.

I'm not sure separate patches are necessary for this change; it might
be better to merge them into a single patch. Other than that, the
changes look good.

Regards,
Vignesh





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-20 06:46  Peter Smith <smithpb2250@gmail.com>
  parent: vignesh C <vignesh21@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-20 06:46 UTC (permalink / raw)
  To: vignesh C <vignesh21@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

> >
> > PSA  v3 patches.
> >
> > v3-0001 - Fixed the TABLE describe footer titles as suggested.
> > - "Included in publications:"
> > - "Excluded from publications:"
> >
> > v3-0002 - Made similar footer title changes for SEQUENCE describe
> >
> > v3-0003 - Made similar footer title changes for SHCEMA describe. In
> > passing, I found that this \dn describe output was not even being
> > tested, so I added the missing regression test.
>
> I'm not sure separate patches are necessary for this change; it might
> be better to merge them into a single patch. Other than that, the
> changes look good.
>

I separated them because only the changes to TABLE \d had previously
been discussed.

If everyone thinks all changes are good, then I can combine them into one patch.

======
Kind Regards,
Peter Smith.
Fujitsu Australia.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-20 08:49  Yuchen Li <liyuchen_xyz@163.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Yuchen Li @ 2026-04-20 08:49 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; vignesh C <vignesh21@gmail.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On 4/20/2026 2:46 PM, Peter Smith wrote:
>>> PSA  v3 patches.
>>>
>>> v3-0001 - Fixed the TABLE describe footer titles as suggested.
>>> - "Included in publications:"
>>> - "Excluded from publications:"
>>>
>>> v3-0002 - Made similar footer title changes for SEQUENCE describe
>>>
>>> v3-0003 - Made similar footer title changes for SHCEMA describe. In
>>> passing, I found that this \dn describe output was not even being
>>> tested, so I added the missing regression test.
>> I'm not sure separate patches are necessary for this change; it might
>> be better to merge them into a single patch. Other than that, the
>> changes look good.
>>
> I separated them because only the changes to TABLE \d had previously
> been discussed.
>
> If everyone thinks all changes are good, then I can combine them into one patch.
>
> ======
> Kind Regards,
> Peter Smith.
> Fujitsu Australia.
>
While reviewing 0003, I noticed a formatting issue in the following line:

+             * schema mapping count +  1 (for storing NULL).

There is an extra space after "count +".

Regards,
Yuchen Li






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-21 06:45  Peter Smith <smithpb2250@gmail.com>
  parent: Yuchen Li <liyuchen_xyz@163.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-21 06:45 UTC (permalink / raw)
  To: Yuchen Li <liyuchen_xyz@163.com>; +Cc: vignesh C <vignesh21@gmail.com>; Amit Kapila <amit.kapila16@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Mon, Apr 20, 2026 at 6:50 PM Yuchen Li <liyuchen_xyz@163.com> wrote:
>
> On 4/20/2026 2:46 PM, Peter Smith wrote:
> >>> PSA  v3 patches.
> >>>
> >>> v3-0001 - Fixed the TABLE describe footer titles as suggested.
> >>> - "Included in publications:"
> >>> - "Excluded from publications:"
> >>>
> >>> v3-0002 - Made similar footer title changes for SEQUENCE describe
> >>>
> >>> v3-0003 - Made similar footer title changes for SHCEMA describe. In
> >>> passing, I found that this \dn describe output was not even being
> >>> tested, so I added the missing regression test.
> >> I'm not sure separate patches are necessary for this change; it might
> >> be better to merge them into a single patch. Other than that, the
> >> changes look good.
> >>
> > I separated them because only the changes to TABLE \d had previously
> > been discussed.
> >
> > If everyone thinks all changes are good, then I can combine them into one patch.
> >
> > ======
> > Kind Regards,
> > Peter Smith.
> > Fujitsu Australia.
> >
> While reviewing 0003, I noticed a formatting issue in the following line:
>
> +             * schema mapping count +  1 (for storing NULL).
>
> There is an extra space after "count +".
>

PSA v4, now combined as Vignesh suggested, and with the extra space also fixed.

======
Kind Regards,
Peter Smith.
Fujitsu Australia.

Attachments:

v4-0001-Fix-describe-footer-titles.patch (application/octet-stream, 11.7K) download From df5dd254d925be7631a29456b80c39449e2d0c27 Mon Sep 17 00:00:00 2001 From: Peter Smith <peter.b.smith@fujitsu.com> Date: Tue, 21 Apr 2026 16:40:41 +1000 Subject: [PATCH v4] Fix describe footer titles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The psql describe footer titles for tables (\d) were not intuitive when listing publications that included or excluded them. Now these are changed to say "Included in publications:" and "Excluded from publications:" respectively. Footer titles for sequence describe, and schema decribe are updated similarly. Author: Peter Smith <smithpb2250@gmail.com> Reported-by: Álvaro Herrera <alvherre@kurilemu.de> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Reviewed-by: vignesh C <vignesh21@gmail.com> Reviewed-by: Yuchen Li <liyuchen_xyz@163.com> Discussion: https://www.postgresql.org/message-id/aeDs7iZUox1bbKAK%40alvherre.pgsql --- doc/src/sgml/logical-replication.sgml | 8 ++--- src/bin/psql/describe.c | 12 +++---- src/test/regress/expected/alter_table.out | 2 +- src/test/regress/expected/publication.out | 43 ++++++++++++++--------- src/test/regress/sql/publication.sql | 2 ++ 5 files changed, 39 insertions(+), 28 deletions(-) diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml index 598e23ad4f5..c06d255d2ed 100644 --- a/doc/src/sgml/logical-replication.sgml +++ b/doc/src/sgml/logical-replication.sgml @@ -1099,7 +1099,7 @@ Tables: c | text | | not null | Indexes: "t1_pkey" PRIMARY KEY, btree (a, c) -Publications: +Included in publications: "p1" WHERE ((a > 5) AND (c = 'NSW'::text)) "p2" @@ -1112,7 +1112,7 @@ Publications: f | integer | | | Indexes: "t2_pkey" PRIMARY KEY, btree (d) -Publications: +Included in publications: "p2" WHERE (e = 99) "p3" WHERE (d = 10) @@ -1125,7 +1125,7 @@ Publications: i | integer | | | Indexes: "t3_pkey" PRIMARY KEY, btree (g) -Publications: +Included in publications: "p3" WHERE (g = 10) ]]></programlisting></para> @@ -1526,7 +1526,7 @@ Tables: e | text | | | Indexes: "t1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "p1" (id, a, b, d) </programlisting></para> diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index dd1179ef927..e78b3df61a4 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1895,7 +1895,7 @@ describeOneTableDetails(const char *schemaname, if (nrows > 0) { - printfPQExpBuffer(&tmpbuf, _("Publications:")); + printfPQExpBuffer(&tmpbuf, _("Included in publications:")); for (i = 0; i < nrows; i++) appendPQExpBuffer(&tmpbuf, "\n \"%s\"", PQgetvalue(result, i, 0)); @@ -3263,7 +3263,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Publications:")); + printTableAddFooter(&cont, _("Included in publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) @@ -3306,7 +3306,7 @@ describeOneTableDetails(const char *schemaname, tuples = PQntuples(result); if (tuples > 0) - printTableAddFooter(&cont, _("Except publications:")); + printTableAddFooter(&cont, _("Excluded from publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < tuples; i++) @@ -5533,11 +5533,11 @@ listSchemas(const char *pattern, bool verbose, bool showSystem) { /* * Allocate memory for footers. Size of footers will be 1 (for - * storing "Publications:" string) + publication schema mapping - * count + 1 (for storing NULL). + * storing "Included in publications:" string) + publication + * schema mapping count + 1 (for storing NULL). */ footers = pg_malloc_array(char *, 1 + pub_schema_tuples + 1); - footers[0] = pg_strdup(_("Publications:")); + footers[0] = pg_strdup(_("Included in publications:")); /* Might be an empty set - that's ok */ for (i = 0; i < pub_schema_tuples; i++) diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index dad9d36937e..6dd22be0e8d 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -4868,7 +4868,7 @@ alter table alter1.t1 set schema alter2; Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+---------+-----------+----------+---------+---------+--------------+------------- a | integer | | | | plain | | -Publications: +Included in publications: "pub1" drop publication pub1; diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index d028e9be866..0345f6c5e47 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -128,6 +128,15 @@ Tables from schemas: SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pub_test; +\dn pub_test + List of schemas + Name | Owner +----------+-------------------------- + pub_test | regress_publication_user +Included in publications: + "testpub_forschema" + "testpub_fortable" + -- should be able to create publication with schema and table of the same -- schema CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE pub_test.testpub_nopk; @@ -201,7 +210,7 @@ SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_forall data | text | | | | extended | | Indexes: "testpub_tbl2_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_foralltables" Not-null constraints: "testpub_tbl2_id_not_null" NOT NULL "id" @@ -250,9 +259,9 @@ Except tables: data | text | | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_foralltables" -Except publications: +Excluded from publications: "testpub_foralltables_excepttable" "testpub_foralltables_excepttable1" @@ -435,7 +444,7 @@ Except tables: --------+---------+-----------+----------+--------- a | integer | | | Partition of: testpub_root FOR VALUES FROM (0) TO (100) -Except publications: +Excluded from publications: "testpub8" \d testpub_root @@ -444,7 +453,7 @@ Except publications: --------+---------+-----------+----------+--------- a | integer | | | Partition key: RANGE (a) -Except publications: +Excluded from publications: "testpub8" Number of partitions: 1 (Use \d+ to list them.) @@ -479,7 +488,7 @@ SELECT pubname, puballtables, puballsequences FROM pg_publication WHERE pubname Type | Start | Minimum | Maximum | Increment | Cycles? | Cache --------+-------+---------+---------------------+-----------+---------+------- bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1 -Publications: +Included in publications: "regress_pub_forallsequences1" \dRp+ regress_pub_forallsequences1 @@ -498,7 +507,7 @@ RESET client_min_messages; Type | Start | Minimum | Maximum | Increment | Cycles? | Cache --------+-------+---------+---------------------+-----------+---------+------- bigint | 1 | 1 | 9223372036854775807 | 1 | no | 1 -Publications: +Included in publications: "regress_pub_forallsequences1" "regress_pub_forallsequences2" @@ -636,7 +645,7 @@ Tables: Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- e | integer | | | -Publications: +Included in publications: "testpub5" WHERE ((e > 1000) AND (e < 2000)) ALTER PUBLICATION testpub5 DROP TABLE testpub_rf_tbl2; @@ -664,7 +673,7 @@ Tables: Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- e | integer | | | -Publications: +Included in publications: "testpub5" WHERE ((e > 300) AND (e < 500)) -- test \d <tablename> (now it displays filter information) @@ -678,7 +687,7 @@ RESET client_min_messages; --------+---------+-----------+----------+--------- a | integer | | | b | text | | | -Publications: +Included in publications: "testpub_rf_no" "testpub_rf_yes" WHERE (a > 1) @@ -1153,7 +1162,7 @@ ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl7 (a, b); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, b) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1169,7 +1178,7 @@ ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, b); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, b) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1185,7 +1194,7 @@ ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, c); c | text | | | | extended | | Indexes: "testpub_tbl7_pkey" PRIMARY KEY, btree (a) -Publications: +Included in publications: "testpub_fortable" (a, c) Not-null constraints: "testpub_tbl7_a_not_null" NOT NULL "a" @@ -1323,7 +1332,7 @@ Tables: c | integer | | not null | | plain | | Indexes: "testpub_tbl_both_filters_pkey" PRIMARY KEY, btree (a, c) REPLICA IDENTITY -Publications: +Included in publications: "testpub_both_filters" (a, c) WHERE (c <> 1) Not-null constraints: "testpub_tbl_both_filters_a_not_null" NOT NULL "a" @@ -1540,7 +1549,7 @@ ALTER PUBLICATION testpub_ins_trunct ADD TABLE pub_test.testpub_nopk, testpub_tb --------+---------+-----------+----------+---------+---------+--------------+------------- foo | integer | | | | plain | | bar | integer | | | | plain | | -Publications: +Included in publications: "testpub_default" "testpub_fortbl" "testpub_ins_trunct" @@ -1553,7 +1562,7 @@ Publications: data | text | | | | extended | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_default" "testpub_fortbl" "testpub_ins_trunct" @@ -1581,7 +1590,7 @@ ERROR: relation "testpub_nopk" is not part of the publication data | text | | | | extended | | Indexes: "testpub_tbl1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "testpub_fortbl" "testpub_ins_trunct" Not-null constraints: diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql index 642e32fa098..041e14a4de6 100644 --- a/src/test/regress/sql/publication.sql +++ b/src/test/regress/sql/publication.sql @@ -76,6 +76,8 @@ ALTER PUBLICATION testpub_fortable SET TABLES IN SCHEMA pub_test; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pub_test; +\dn pub_test + -- should be able to create publication with schema and table of the same -- schema CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE pub_test.testpub_nopk; -- 2.47.3
^ permalink raw reply [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-22 11:27  Amit Kapila <amit.kapila16@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Amit Kapila @ 2026-04-22 11:27 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: Yuchen Li <liyuchen_xyz@163.com>; vignesh C <vignesh21@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Tue, Apr 21, 2026 at 12:16 PM Peter Smith <smithpb2250@gmail.com> wrote:
>
> PSA v4, now combined as Vignesh suggested, and with the extra space also fixed.
>

I would like to explicitly mention in the commit message that "Tag for
included publications was a pre-existing behavior but it is better to
change it for making it consistent with excluded publications tag. So,
how about a commit message as follows: "psql: Improve describe footer
titles for publications.

The psql describe (`\d`) footer titles were previously unintuitive
when listing publications that included or excluded specific tables.
Even though the tag for included publications was pre-existing, it is
better to update it to "Included in publications:" to match the
phrasing of the "Excluded from publications:" tag.

Footer titles for sequence and schema descriptions have been updated
similarly to maintain consistency."

-- 
With Regards,
Amit Kapila.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-23 00:34  Peter Smith <smithpb2250@gmail.com>
  parent: Amit Kapila <amit.kapila16@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Peter Smith @ 2026-04-23 00:34 UTC (permalink / raw)
  To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: Yuchen Li <liyuchen_xyz@163.com>; vignesh C <vignesh21@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Wed, Apr 22, 2026 at 9:27 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Tue, Apr 21, 2026 at 12:16 PM Peter Smith <smithpb2250@gmail.com> wrote:
> >
> > PSA v4, now combined as Vignesh suggested, and with the extra space also fixed.
> >
>
> I would like to explicitly mention in the commit message that "Tag for
> included publications was a pre-existing behavior but it is better to
> change it for making it consistent with excluded publications tag. So,
> how about a commit message as follows: "psql: Improve describe footer
> titles for publications.
>
> The psql describe (`\d`) footer titles were previously unintuitive
> when listing publications that included or excluded specific tables.
> Even though the tag for included publications was pre-existing, it is
> better to update it to "Included in publications:" to match the
> phrasing of the "Excluded from publications:" tag.
>
> Footer titles for sequence and schema descriptions have been updated
> similarly to maintain consistency."
>
> --

OK, but the order what happened was a bit different.

1/ Firstly, it was only the "Except publications:" footer for \d that
was unintuitive. So that was updated to "Excluded from publications:".
2/ The pre-existing "Publications:" was intuitive as-is, but it was
updated to better match wording of 1.
3/ Then footer titles for sequence/schema were updated same

So maybe reword it slightly something like below:

SUGGESTION

The psql describe (`\d`) footer title was previously unintuitive when listing
publications that excluded specific tables. This has been fixed to say
"Excluded from publications:".

The pre-existing footer title for listing publications that include specific
tables has also been modified to to better match that phrasing. Now it says
"Included in publications:".

Footer titles for sequence and schema descriptions have been updated
similarly to maintain consistency.

======
Kind Regards,
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-23 09:00  Amit Kapila <amit.kapila16@gmail.com>
  parent: Peter Smith <smithpb2250@gmail.com>
  0 siblings, 1 reply; 19+ messages in thread

From: Amit Kapila @ 2026-04-23 09:00 UTC (permalink / raw)
  To: Peter Smith <smithpb2250@gmail.com>; +Cc: Yuchen Li <liyuchen_xyz@163.com>; vignesh C <vignesh21@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On Thu, Apr 23, 2026 at 6:04 AM Peter Smith <smithpb2250@gmail.com> wrote:
>
> >
> > I would like to explicitly mention in the commit message that "Tag for
> > included publications was a pre-existing behavior but it is better to
> > change it for making it consistent with excluded publications tag. So,
> > how about a commit message as follows: "psql: Improve describe footer
> > titles for publications.
> >
> > The psql describe (`\d`) footer titles were previously unintuitive
> > when listing publications that included or excluded specific tables.
> > Even though the tag for included publications was pre-existing, it is
> > better to update it to "Included in publications:" to match the
> > phrasing of the "Excluded from publications:" tag.
> >
> > Footer titles for sequence and schema descriptions have been updated
> > similarly to maintain consistency."
> >
> > --
>
> OK, but the order what happened was a bit different.
>

Pushed.

-- 
With Regards,
Amit Kapila.





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: EXCEPT TABLE - Case inconsistency for describe \d and \dRp+
@ 2026-04-23 10:33  Álvaro Herrera <alvherre@kurilemu.de>
  parent: Amit Kapila <amit.kapila16@gmail.com>
  0 siblings, 0 replies; 19+ messages in thread

From: Álvaro Herrera @ 2026-04-23 10:33 UTC (permalink / raw)
  To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: Peter Smith <smithpb2250@gmail.com>; Yuchen Li <liyuchen_xyz@163.com>; vignesh C <vignesh21@gmail.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>

On 2026-Apr-23, Amit Kapila wrote:

> Pushed.

Thank you!

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"Fundamental layering violations tend to bite you on tender
parts of your anatomy."                          (Tom Lane)
https://postgr.es/m/2818249.1748706121@sss.pgh.pa.us





^ permalink  raw  reply  [nested|flat] 19+ messages in thread


end of thread, other threads:[~2026-04-23 10:33 UTC | newest]

Thread overview: 19+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-04-10 07:13 EXCEPT TABLE - Case inconsistency for describe \d and \dRp+ Peter Smith <smithpb2250@gmail.com>
2026-04-10 10:19 ` Amit Kapila <amit.kapila16@gmail.com>
2026-04-13 02:14   ` Peter Smith <smithpb2250@gmail.com>
2026-04-13 03:21     ` vignesh C <vignesh21@gmail.com>
2026-04-13 05:23       ` Peter Smith <smithpb2250@gmail.com>
2026-04-14 00:03         ` Peter Smith <smithpb2250@gmail.com>
2026-04-16 14:10 ` Álvaro Herrera <alvherre@kurilemu.de>
2026-04-16 23:03   ` Peter Smith <smithpb2250@gmail.com>
2026-04-17 05:23     ` Amit Kapila <amit.kapila16@gmail.com>
2026-04-17 08:45       ` Peter Smith <smithpb2250@gmail.com>
2026-04-20 02:56       ` Peter Smith <smithpb2250@gmail.com>
2026-04-20 05:04         ` vignesh C <vignesh21@gmail.com>
2026-04-20 06:46           ` Peter Smith <smithpb2250@gmail.com>
2026-04-20 08:49             ` Yuchen Li <liyuchen_xyz@163.com>
2026-04-21 06:45               ` Peter Smith <smithpb2250@gmail.com>
2026-04-22 11:27                 ` Amit Kapila <amit.kapila16@gmail.com>
2026-04-23 00:34                   ` Peter Smith <smithpb2250@gmail.com>
2026-04-23 09:00                     ` Amit Kapila <amit.kapila16@gmail.com>
2026-04-23 10:33                       ` Álvaro Herrera <alvherre@kurilemu.de>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox