From: Amit Kapila Date: Thu, 23 Apr 2026 08:40:03 +0000 (+0530) Subject: psql: Improve describe footer titles for publications. X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=2e1d4fdb10e6636a7ab64f801d880b4d326ab822;p=thirdparty%2Fpostgresql.git 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. Reported-by: Álvaro Herrera Author: Peter Smith Reviewed-by: Amit Kapila Reviewed-by: vignesh C Reviewed-by: Yuchen Li Discussion: https://postgr.es/m/aeDs7iZUox1bbKAK%40alvherre.pgsql --- 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) ]]> @@ -1526,7 +1526,7 @@ Tables: e | text | | | Indexes: "t1_pkey" PRIMARY KEY, btree (id) -Publications: +Included in publications: "p1" (id, a, b, d) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 4a1ab873260..e1449654f96 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 (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;