Re: Before/After Trigger User Switching
От | Aasmund Midttun Godal |
---|---|
Тема | Re: Before/After Trigger User Switching |
Дата | |
Msg-id | 20030820193415.23473.qmail@one.kreator.com обсуждение исходный текст |
Ответ на | Before/After Trigger User Switching ("Aasmund Midttun Godal" <postgresql@aasmund.com>) |
Список | pgsql-sql |
I have upgraded to 7.3.4 and the problem persists. Aasmund Midttun Godal writes: > When an operation is done throug a SECURITY DEFINER style function and > causes a trigger the current_user depends on whether it is executed BEFORE > or AFTER. I currently run 7.3.2. I believe the BEFORE behavior is correct > while the AFTER behavior is wrong. A bug? already fixed? > > regards, > > Aasmund. > > > CREATE TABLE a (b text); > > > > CREATE OR REPLACE FUNCTION public.ut () RETURNS TRIGGER SECURITY INVOKER > LANGUAGE 'plpgsql' AS' > DECLARE > t TEXT; > t2 TEXT; > BEGIN > t := current_user; > t2 := session_user; > RAISE NOTICE ''% Current: % Session: %'', TG_WHEN, t, t2; > RETURN NEW; > END > '; > > CREATE TRIGGER "ut_trig_before" BEFORE UPDATE OR INSERT OR DELETE > ON a FOR EACH ROW EXECUTE PROCEDURE public.ut(); > > CREATE TRIGGER "ut_trig_after" AFTER UPDATE OR INSERT OR DELETE > ON a FOR EACH ROW EXECUTE PROCEDURE public.ut(); > > > > CREATE OR REPLACE FUNCTION public.at_test () RETURNS TEXT SECURITY DEFINER > LANGUAGE 'sql' AS' > INSERT INTO a VALUES (current_user); > SELECT session_user::TEXT || ''/'' ||current_user::TEXT; > '; > > > > db=> SELECT at_test(); > NOTICE: BEFORE Current: godal Session: www > NOTICE: AFTER Current: www Session: www > at_test > ----------- > www/godal > (1 row) > > > > > Aasmund Midttun Godal > > aasmund@godal.com - http://godal.com > +47 40 45 20 46 - Leiv Tronstadsvei 2, NO-7051 Trondheim > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) Aasmund Midttun Godal aasmund@godal.com - http://godal.com +47 40 45 20 46 - Leiv Tronstadsvei 2, NO-7051 Trondheim
В списке pgsql-sql по дате отправления: