On 2018-Jun-28, Peter Eisentraut wrote: > On 6/27/18 23:01, Alvaro Herrera wrote: > > Another angle is that we're already in beta3 and there may be concerns > > about altering catalog definition this late in the cycle. Anybody? > > Maybe psql can just match tgisinternal triggers by name, and if one > > match occurs then we assume it's a clone that should be listed as a > > partition trigger. > > Couldn't psql chase the pg_depend links to find inherited triggers?
Yeah, I thought this would be exceedingly ugly, but apparently it's not *that* bad -- see the attached patch, which relies on the fact that triggers don't otherwise depend on other triggers. We don't use this technique elsewhere in psql though. I admit I'm inclined to go this route mostly because it's simpler. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index e5b3c1ebf9..6e08515857 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2713,7 +2713,11 @@ describeOneTableDetails(const char *schemaname, pset.sversion >= 80300 ? "t.tgconstraint <> 0 AS tgisinternal" : "false AS tgisinternal"), oid); - if (pset.sversion >= 90000) + if (pset.sversion >= 110000) + appendPQExpBuffer(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D') \n" + " OR EXISTS (SELECT 1 FROM pg_catalog.pg_depend WHERE objid = t.oid \n" + " AND refclassid = 'pg_catalog.pg_trigger'::regclass))"); + else if (pset.sversion >= 90000) /* display/warn about disabled internal triggers */ appendPQExpBuffer(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))"); else if (pset.sversion >= 80300)