mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Add table_name and table_schema to plpython trigger data, plus docs and regression test.
This commit is contained in:
@ -115,6 +115,61 @@ CREATE TRIGGER users_update_trig BEFORE UPDATE ON users FOR EACH ROW
|
||||
EXECUTE PROCEDURE users_update ('willem');
|
||||
CREATE TRIGGER users_delete_trig BEFORE DELETE ON users FOR EACH ROW
|
||||
EXECUTE PROCEDURE users_delete ('willem');
|
||||
-- dump trigger data
|
||||
CREATE TABLE trigger_test
|
||||
(i int, v text );
|
||||
CREATE FUNCTION trigger_data() returns trigger language plpythonu as $$
|
||||
|
||||
if TD.has_key('relid'):
|
||||
TD['relid'] = "bogus:12345"
|
||||
|
||||
for key in sorted(TD.keys()):
|
||||
val = TD[key]
|
||||
plpy.notice("TD[" + key + "] => " + str(val))
|
||||
|
||||
return None
|
||||
|
||||
$$;
|
||||
CREATE TRIGGER show_trigger_data_trig
|
||||
BEFORE INSERT OR UPDATE OR DELETE ON trigger_test
|
||||
FOR EACH ROW EXECUTE PROCEDURE trigger_data(23,'skidoo');
|
||||
insert into trigger_test values(1,'insert');
|
||||
NOTICE: ("TD[args] => ['23', 'skidoo']",)
|
||||
NOTICE: ('TD[event] => INSERT',)
|
||||
NOTICE: ('TD[level] => ROW',)
|
||||
NOTICE: ('TD[name] => show_trigger_data_trig',)
|
||||
NOTICE: ("TD[new] => {'i': 1, 'v': 'insert'}",)
|
||||
NOTICE: ('TD[old] => None',)
|
||||
NOTICE: ('TD[relid] => bogus:12345',)
|
||||
NOTICE: ('TD[table_name] => trigger_test',)
|
||||
NOTICE: ('TD[table_schema] => public',)
|
||||
NOTICE: ('TD[when] => BEFORE',)
|
||||
update trigger_test set v = 'update' where i = 1;
|
||||
NOTICE: ("TD[args] => ['23', 'skidoo']",)
|
||||
NOTICE: ('TD[event] => UPDATE',)
|
||||
NOTICE: ('TD[level] => ROW',)
|
||||
NOTICE: ('TD[name] => show_trigger_data_trig',)
|
||||
NOTICE: ("TD[new] => {'i': 1, 'v': 'update'}",)
|
||||
NOTICE: ("TD[old] => {'i': 1, 'v': 'insert'}",)
|
||||
NOTICE: ('TD[relid] => bogus:12345',)
|
||||
NOTICE: ('TD[table_name] => trigger_test',)
|
||||
NOTICE: ('TD[table_schema] => public',)
|
||||
NOTICE: ('TD[when] => BEFORE',)
|
||||
delete from trigger_test;
|
||||
NOTICE: ("TD[args] => ['23', 'skidoo']",)
|
||||
NOTICE: ('TD[event] => DELETE',)
|
||||
NOTICE: ('TD[level] => ROW',)
|
||||
NOTICE: ('TD[name] => show_trigger_data_trig',)
|
||||
NOTICE: ('TD[new] => None',)
|
||||
NOTICE: ("TD[old] => {'i': 1, 'v': 'update'}",)
|
||||
NOTICE: ('TD[relid] => bogus:12345',)
|
||||
NOTICE: ('TD[table_name] => trigger_test',)
|
||||
NOTICE: ('TD[table_schema] => public',)
|
||||
NOTICE: ('TD[when] => BEFORE',)
|
||||
|
||||
DROP TRIGGER show_trigger_data_trig on trigger_test;
|
||||
|
||||
DROP FUNCTION trigger_data();
|
||||
-- nested calls
|
||||
--
|
||||
CREATE FUNCTION nested_call_one(text) RETURNS text
|
||||
|
Reference in New Issue
Block a user