agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedFrom: Justin Pryzby <pryzbyj@telsasoft.com>
Subject: [PATCH v5 2/2] Make inherited status of triggers visible in psql..
Date: Mon, 20 Apr 2020 13:46:06 -0500
Unlike inherited indexes and constraints, the trigger is removed if the table
is detached. Make that visibly apparent. HEAD/v13 only.
---
src/bin/psql/describe.c | 17 +++++++++++++++--
src/test/regress/expected/triggers.out | 2 +-
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index f05e914b4d..ead4e0bf47 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -2939,14 +2939,21 @@ describeOneTableDetails(const char *schemaname,
printfPQExpBuffer(&buf,
"SELECT t.tgname, "
"pg_catalog.pg_get_triggerdef(t.oid%s), "
- "t.tgenabled, %s\n"
+ "t.tgenabled, %s, %s\n"
"FROM pg_catalog.pg_trigger t\n"
"WHERE t.tgrelid = '%s' AND ",
(pset.sversion >= 90000 ? ", true" : ""),
(pset.sversion >= 90000 ? "t.tgisinternal" :
pset.sversion >= 80300 ?
"t.tgconstraint <> 0 AS tgisinternal" :
- "false AS tgisinternal"), oid);
+ "false AS tgisinternal"),
+ (pset.sversion >= 130000 ?
+ "(SELECT a.relid"
+ " FROM pg_trigger AS u, pg_partition_ancestors(t.tgrelid) AS a"
+ " WHERE u.tgname = t.tgname AND u.tgrelid = a.relid"
+ " AND u.tgparentid = 0) AS parent" :
+ "'' AS parent"),
+ oid);
if (pset.sversion >= 110000)
appendPQExpBufferStr(&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"
@@ -3062,6 +3069,12 @@ describeOneTableDetails(const char *schemaname,
tgdef = usingpos + 9;
printfPQExpBuffer(&buf, " %s", tgdef);
+
+ /* Visually distinguish inherited triggers XXX: ROW only? */
+ if (!PQgetisnull(result, i, 4))
+ appendPQExpBuffer(&buf, ", ON TABLE %s",
+ PQgetvalue(result, i, 4));
+
printTableAddFooter(&cont, buf.data);
}
}
diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out
index 0e30029bcf..a760eb15da 100644
--- a/src/test/regress/expected/triggers.out
+++ b/src/test/regress/expected/triggers.out
@@ -2033,7 +2033,7 @@ create trigger trg1 after insert on trigpart for each row execute procedure trig
b | integer | | |
Partition of: trigpart FOR VALUES FROM (2000) TO (3000)
Triggers:
- trg1 AFTER INSERT ON trigpart3 FOR EACH ROW EXECUTE FUNCTION trigger_nothing()
+ trg1 AFTER INSERT ON trigpart3 FOR EACH ROW EXECUTE FUNCTION trigger_nothing(), ON TABLE trigpart
alter table trigpart detach partition trigpart3;
drop trigger trg1 on trigpart3; -- fail due to "does not exist"
--
2.17.0
--KsGdsel6WgEHnImy--
view thread (2+ messages) latest in thread
Message-ID: <no-message-id-705753@localhost>
Permalink: ../../no-message-id-705753@localhost/
Also on: postgresql.org/message-id/no-message-id-705753@localhost
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: pryzbyj@telsasoft.com
Subject: Re: [PATCH v5 2/2] Make inherited status of triggers visible in psql..
In-Reply-To: <no-message-id-705753@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox