diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c new file mode 100644 index f1c3d9b..a2a7e34 *** a/src/bin/psql/describe.c --- b/src/bin/psql/describe.c *************** listPublications(const char *pattern) *** 5047,5053 **** PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; ! static const bool translate_columns[] = {false, false, false, false, false}; if (pset.sversion < 100000) { --- 5047,5053 ---- PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; ! static const bool translate_columns[] = {false, false, false, false, false, false}; if (pset.sversion < 100000) { *************** listPublications(const char *pattern) *** 5064,5074 **** --- 5064,5076 ---- printfPQExpBuffer(&buf, "SELECT pubname AS \"%s\",\n" " pg_catalog.pg_get_userbyid(pubowner) AS \"%s\",\n" + " puballtables AS \"%s\",\n" " pubinsert AS \"%s\",\n" " pubupdate AS \"%s\",\n" " pubdelete AS \"%s\"\n", gettext_noop("Name"), gettext_noop("Owner"), + gettext_noop("All Tables"), gettext_noop("Inserts"), gettext_noop("Updates"), gettext_noop("Deletes")); *************** describePublications(const char *pattern *** 5145,5151 **** for (i = 0; i < PQntuples(res); i++) { const char align = 'l'; ! int ncols = 3; int nrows = 1; int tables = 0; PGresult *tabres; --- 5147,5153 ---- for (i = 0; i < PQntuples(res); i++) { const char align = 'l'; ! int ncols = 4; int nrows = 1; int tables = 0; PGresult *tabres; *************** describePublications(const char *pattern *** 5161,5170 **** --- 5163,5174 ---- printfPQExpBuffer(&title, _("Publication %s"), pubname); printTableInit(&cont, &myopt, title.data, ncols, nrows); + printTableAddHeader(&cont, gettext_noop("All Tables"), true, align); printTableAddHeader(&cont, gettext_noop("Inserts"), true, align); printTableAddHeader(&cont, gettext_noop("Updates"), true, align); printTableAddHeader(&cont, gettext_noop("Deletes"), true, align); + printTableAddCell(&cont, PQgetvalue(res, i, 2), false, false); printTableAddCell(&cont, PQgetvalue(res, i, 3), false, false); printTableAddCell(&cont, PQgetvalue(res, i, 4), false, false); printTableAddCell(&cont, PQgetvalue(res, i, 5), false, false); diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out new file mode 100644 index e81919f..118c5c9 *** a/src/test/regress/expected/publication.out --- b/src/test/regress/expected/publication.out *************** ERROR: unrecognized publication paramet *** 21,40 **** CREATE PUBLICATION testpub_xxx WITH (publish = 'cluster, vacuum'); ERROR: unrecognized "publish" value: "cluster" \dRp ! List of publications ! Name | Owner | Inserts | Updates | Deletes ! --------------------+--------------------------+---------+---------+--------- ! testpib_ins_trunct | regress_publication_user | t | f | f ! testpub_default | regress_publication_user | f | t | f (2 rows) ALTER PUBLICATION testpub_default SET (publish = 'insert, update, delete'); \dRp ! List of publications ! Name | Owner | Inserts | Updates | Deletes ! --------------------+--------------------------+---------+---------+--------- ! testpib_ins_trunct | regress_publication_user | t | f | f ! testpub_default | regress_publication_user | t | t | t (2 rows) --- adding tables --- 21,40 ---- CREATE PUBLICATION testpub_xxx WITH (publish = 'cluster, vacuum'); ERROR: unrecognized "publish" value: "cluster" \dRp ! List of publications ! Name | Owner | All Tables | Inserts | Updates | Deletes ! --------------------+--------------------------+------------+---------+---------+--------- ! testpib_ins_trunct | regress_publication_user | f | t | f | f ! testpub_default | regress_publication_user | f | f | t | f (2 rows) ALTER PUBLICATION testpub_default SET (publish = 'insert, update, delete'); \dRp ! List of publications ! Name | Owner | All Tables | Inserts | Updates | Deletes ! --------------------+--------------------------+------------+---------+---------+--------- ! testpib_ins_trunct | regress_publication_user | f | t | f | f ! testpub_default | regress_publication_user | f | t | t | t (2 rows) --- adding tables *************** CREATE TABLE testpub_tbl3a (b text) INHE *** 82,100 **** CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; \dRp+ testpub3 ! Publication testpub3 ! Inserts | Updates | Deletes ! ---------+---------+--------- ! t | t | t Tables: "public.testpub_tbl3" "public.testpub_tbl3a" \dRp+ testpub4 ! Publication testpub4 ! Inserts | Updates | Deletes ! ---------+---------+--------- ! t | t | t Tables: "public.testpub_tbl3" --- 82,100 ---- CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; \dRp+ testpub3 ! Publication testpub3 ! All Tables | Inserts | Updates | Deletes ! ------------+---------+---------+--------- ! f | t | t | t Tables: "public.testpub_tbl3" "public.testpub_tbl3a" \dRp+ testpub4 ! Publication testpub4 ! All Tables | Inserts | Updates | Deletes ! ------------+---------+---------+--------- ! f | t | t | t Tables: "public.testpub_tbl3" *************** ERROR: relation "testpub_tbl1" is alrea *** 112,121 **** CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1; ERROR: publication "testpub_fortbl" already exists \dRp+ testpub_fortbl ! Publication testpub_fortbl ! Inserts | Updates | Deletes ! ---------+---------+--------- ! t | t | t Tables: "pub_test.testpub_nopk" "public.testpub_tbl1" --- 112,121 ---- CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1; ERROR: publication "testpub_fortbl" already exists \dRp+ testpub_fortbl ! Publication testpub_fortbl ! All Tables | Inserts | Updates | Deletes ! ------------+---------+---------+--------- ! f | t | t | t Tables: "pub_test.testpub_nopk" "public.testpub_tbl1" *************** Publications: *** 158,167 **** "testpub_fortbl" \dRp+ testpub_default ! Publication testpub_default ! Inserts | Updates | Deletes ! ---------+---------+--------- ! t | t | t Tables: "pub_test.testpub_nopk" "public.testpub_tbl1" --- 158,167 ---- "testpub_fortbl" \dRp+ testpub_default ! Publication testpub_default ! All Tables | Inserts | Updates | Deletes ! ------------+---------+---------+--------- ! f | t | t | t Tables: "pub_test.testpub_nopk" "public.testpub_tbl1" *************** DROP TABLE testpub_parted; *** 203,212 **** DROP VIEW testpub_view; DROP TABLE testpub_tbl1; \dRp+ testpub_default ! Publication testpub_default ! Inserts | Updates | Deletes ! ---------+---------+--------- ! t | t | t (1 row) -- fail - must be owner of publication --- 203,212 ---- DROP VIEW testpub_view; DROP TABLE testpub_tbl1; \dRp+ testpub_default ! Publication testpub_default ! All Tables | Inserts | Updates | Deletes ! ------------+---------+---------+--------- ! f | t | t | t (1 row) -- fail - must be owner of publication *************** ERROR: must be owner of publication tes *** 216,235 **** RESET ROLE; ALTER PUBLICATION testpub_default RENAME TO testpub_foo; \dRp testpub_foo ! List of publications ! Name | Owner | Inserts | Updates | Deletes ! -------------+--------------------------+---------+---------+--------- ! testpub_foo | regress_publication_user | t | t | t (1 row) -- rename back to keep the rest simple ALTER PUBLICATION testpub_foo RENAME TO testpub_default; ALTER PUBLICATION testpub_default OWNER TO regress_publication_user2; \dRp testpub_default ! List of publications ! Name | Owner | Inserts | Updates | Deletes ! -----------------+---------------------------+---------+---------+--------- ! testpub_default | regress_publication_user2 | t | t | t (1 row) DROP PUBLICATION testpub_default; --- 216,235 ---- RESET ROLE; ALTER PUBLICATION testpub_default RENAME TO testpub_foo; \dRp testpub_foo ! List of publications ! Name | Owner | All Tables | Inserts | Updates | Deletes ! -------------+--------------------------+------------+---------+---------+--------- ! testpub_foo | regress_publication_user | f | t | t | t (1 row) -- rename back to keep the rest simple ALTER PUBLICATION testpub_foo RENAME TO testpub_default; ALTER PUBLICATION testpub_default OWNER TO regress_publication_user2; \dRp testpub_default ! List of publications ! Name | Owner | All Tables | Inserts | Updates | Deletes ! -----------------+---------------------------+------------+---------+---------+--------- ! testpub_default | regress_publication_user2 | f | t | t | t (1 row) DROP PUBLICATION testpub_default;