On Thu, Jan 23, 2025 at 07:28:19PM +0100, Laurenz Albe wrote: > On Thu, 2025-01-23 at 12:30 -0500, Tom Lane wrote: > > Pushed with some cosmetic adjustments > > Thank you!
commit 01463e1 wrote: > +NOTICE: I am regress_groot Let's not incur trivially-avoidable trademark risks (https://google.com/search?q=%22i+am+groot%22) in the source tree. > --- a/doc/src/sgml/trigger.sgml > +++ b/doc/src/sgml/trigger.sgml > @@ -129,6 +129,10 @@ > In all cases, a trigger is executed as part of the same transaction as > the statement that triggered it, so if either the statement or the > trigger causes an error, the effects of both will be rolled back. > + Also, the trigger will always run in the security context of the role > + that executed the statement that caused the trigger to fire, unless > + the trigger function is defined as <literal>SECURITY DEFINER</literal>, > + in which case it will run as the function owner. Phrase "the role that executed the statement" doesn't match what happens if the role changes mid-statement. Example of a statement that does so: select set_config('role', rolname, true), current_user from pg_authid; The term "security context" doesn't otherwise appear in doc/. I would just change "run in the security context of the role" to "run as the role". That's simpler and less likely to create an impression that this stops attacks.