On 2013-12-14 17:43:36 +0100, Andres Freund wrote:
> On 2013-12-14 11:27:53 -0500, Tom Lane wrote:
> > In HEAD:
> >
> > regression=# \d pg_depend
> > Table "pg_catalog.pg_depend"
> > Column | Type | Modifiers
> > -------------+---------+-----------
> > classid | oid | not null
> > objid | oid | not null
> > objsubid | integer | not null
> > refclassid | oid | not null
> > refobjid | oid | not null
> > refobjsubid | integer | not null
> > deptype | "char" | not null
> > Indexes:
> > "pg_depend_depender_index" btree (classid, objid, objsubid)
> > "pg_depend_reference_index" btree (refclassid, refobjid, refobjsubid)
> > Replica Identity: NOTHING
> >
> > Where did that last line come from, and who thinks it's so important
> > that it should appear by default? It seems absolutely content-free
> > even if I were using whatever feature it refers to, since it is
> > (I presume) the default state.
>
> Hm. Yes, that's slightly inellegant. It's shown because it's not
> actually the normal default normal tables. Just for system tables. Maybe
> we should just set it to default (in pg_class) for system tables as
> well, and just change it in the relcache.
Hm. I don't like that choice much after thinking for a bit. Seems to
make querying the catalog unneccessarily complex.
How about making it conditional on the table's namespace instead? That
will do the wrong thing if somebody moves a table to pg_catalog and
configures a replica identity, but I think we can live with that, given
how many other things work strangely around that.
Patch attached.
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 96322ca..4e132c8 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -2310,7 +2310,13 @@ describeOneTableDetails(const char *schemaname,
printTableAddFooter(&cont, buf.data);
}
- if ((tableinfo.relkind == 'r' || tableinfo.relkind == 'm') &&
+ /*
+ * Show the table's replica identity, if nondefault, not USING INDEX,
+ * and not a system catalog. If configured using an index, it will
+ * display the identity when displaying the selected index above.
+ */
+ if (strcmp("schemaname", "pg_catalog") != 0 &&
+ (tableinfo.relkind == 'r' || tableinfo.relkind == 'm') &&
tableinfo.relreplident != 'd' && tableinfo.relreplident != 'i')
{
const char *s = _("Replica Identity");
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers