Documentation disagrees with behavior of ALTER EVENT TRIGGER - Mailing list pgsql-hackers

From Mark Dilger
Subject Documentation disagrees with behavior of ALTER EVENT TRIGGER
Date
Msg-id B46BE2B0-5DC0-4E45-90DC-46C9A968B33B@enterprisedb.com
Whole thread Raw
List pgsql-hackers
The documentation for ALTER EVENT TRIGGER claims "You must be superuser to alter an event trigger" which is manifestly
false,as shown below: 

+CREATE ROLE evt_first_owner SUPERUSER;
+CREATE ROLE evt_second_owner SUPERUSER;
+SET SESSION AUTHORIZATION evt_first_owner;
+CREATE OR REPLACE FUNCTION evt_test_func()
+RETURNS event_trigger AS $$
+BEGIN
+RAISE NOTICE 'event_trigger called with tag %', tg_tag;
+END;
+$$ LANGUAGE plpgsql;
+CREATE EVENT TRIGGER evt_test_trigger ON ddl_command_start
+   EXECUTE PROCEDURE evt_test_func();
+RESET SESSION AUTHORIZATION;
+ALTER ROLE evt_first_owner NOSUPERUSER;
+SET SESSION AUTHORIZATION evt_first_owner;
+ALTER EVENT TRIGGER evt_test_trigger DISABLE;
+ALTER EVENT TRIGGER evt_test_trigger ENABLE;
+ALTER EVENT TRIGGER evt_test_trigger ENABLE REPLICA;
+ALTER EVENT TRIGGER evt_test_trigger ENABLE ALWAYS;
+ALTER EVENT TRIGGER evt_test_trigger RENAME TO evt_new_name;
+RESET SESSION AUTHORIZATION;
+ALTER EVENT TRIGGER evt_new_name OWNER TO evt_second_owner;
+ALTER EVENT TRIGGER evt_new_name OWNER TO evt_first_owner;
+ERROR:  permission denied to change owner of event trigger "evt_new_name"
+HINT:  The owner of an event trigger must be a superuser.

Per the documentation, the five ALTER commands performed as evt_first_owner should have failed.  They did not.  At that
time,evt_first_owner owned the event trigger despite not being a superuser. 

The attempt later to assign ownership back to evt_first_owner fails claiming, "The owner of an event trigger must be a
superuser",but that claim is not precisely true.  At best, "The owner of an event trigger must be a superuser at the
timeownership is transferred."  There are similar oddities with some other object types which make a half-hearted
attemptto require the owner to be a superuser, but I will start separate threads for those. 

This behavior is weird enough that I don't know if it is the code or the documentation that is wrong.  I'd like to post
patchesto clean this up, but need community feedback on whether it is the documentation or the behavior that needs
adjusting.

Over in [1], I am trying to create new privileged roles and assign them some of the powers currently reserved to
superuser. It is hard to make patches over there when the desired behavior of the system is not quite well defined. 

[1] https://www.postgresql.org/message-id/214052.1627331086%40sss.pgh.pa.us

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: needless complexity in StartupXLOG
Next
From: Fujii Masao
Date:
Subject: Re: Fix around conn_duration in pgbench