(1 row)
+-- test triggers
+create table tgfk (
+ id int4 primary key,
+ data text
+);
+create table tgtest (
+ id int4 primary key,
+ fk int4 references tgfk,
+ data text
+);
+create or replace function notg() returns trigger as $$
+begin
+ return null;
+end;
+$$ language plpgsql;
+create trigger tg_nop after insert on tgtest for each row execute procedure notg();
+select * from londiste.find_table_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+---------------+--------------+------------------------------------------------------------------------------------
+ public.tgtest | tg_nop | CREATE TRIGGER tg_nop AFTER INSERT ON tgtest FOR EACH ROW EXECUTE PROCEDURE notg()
+(1 row)
+
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+------------+--------------+-------------
+(0 rows)
+
+select * from londiste.subscriber_drop_all_table_triggers('tgtest');
+ subscriber_drop_all_table_triggers
+------------------------------------
+ 1
+(1 row)
+
+select * from londiste.find_table_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+------------+--------------+-------------
+(0 rows)
+
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+------------+--------------+------------------------------------------------------------------------------------
+ tgtest | tg_nop | CREATE TRIGGER tg_nop AFTER INSERT ON tgtest FOR EACH ROW EXECUTE PROCEDURE notg()
+(1 row)
+
+select * from londiste.subscriber_restore_all_table_triggers('tgtest');
+ subscriber_restore_all_table_triggers
+---------------------------------------
+ 1
+(1 row)
+
+select * from londiste.find_table_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+---------------+--------------+------------------------------------------------------------------------------------
+ public.tgtest | tg_nop | CREATE TRIGGER tg_nop AFTER INSERT ON tgtest FOR EACH ROW EXECUTE PROCEDURE notg()
+(1 row)
+
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+ table_name | trigger_name | trigger_def
+------------+--------------+-------------
+(0 rows)
+
returns setof londiste.subscriber_pending_triggers as $$
declare
tg record;
+ ver int4;
begin
- for tg in
- select n.nspname || '.' || c.relname as table_name, t.tgname::text as name, pg_get_triggerdef(t.oid) as def
- from pg_trigger t, pg_class c, pg_namespace n
- where n.oid = c.relnamespace and c.oid = t.tgrelid
- and t.tgrelid = londiste.find_table_oid(i_table_name)
- and not t.tgisconstraint
- loop
- return next tg;
- end loop;
+ select setting::int4 into ver from pg_settings
+ where name = 'server_version_num';
+
+ if ver >= 90000 then
+ for tg in
+ select n.nspname || '.' || c.relname as table_name, t.tgname::text as name, pg_get_triggerdef(t.oid) as def
+ from pg_trigger t, pg_class c, pg_namespace n
+ where n.oid = c.relnamespace and c.oid = t.tgrelid
+ and t.tgrelid = londiste.find_table_oid(i_table_name)
+ and not t.tgisinternal
+ loop
+ return next tg;
+ end loop;
+ else
+ for tg in
+ select n.nspname || '.' || c.relname as table_name, t.tgname::text as name, pg_get_triggerdef(t.oid) as def
+ from pg_trigger t, pg_class c, pg_namespace n
+ where n.oid = c.relnamespace and c.oid = t.tgrelid
+ and t.tgrelid = londiste.find_table_oid(i_table_name)
+ and not t.tgisconstraint
+ loop
+ return next tg;
+ end loop;
+ end if;
return;
end;
select londiste.set_last_tick('c', NULL);
select londiste.get_last_tick('c');
+
+-- test triggers
+
+create table tgfk (
+ id int4 primary key,
+ data text
+);
+
+create table tgtest (
+ id int4 primary key,
+ fk int4 references tgfk,
+ data text
+);
+
+create or replace function notg() returns trigger as $$
+begin
+ return null;
+end;
+$$ language plpgsql;
+
+create trigger tg_nop after insert on tgtest for each row execute procedure notg();
+
+select * from londiste.find_table_triggers('tgtest');
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+
+select * from londiste.subscriber_drop_all_table_triggers('tgtest');
+
+select * from londiste.find_table_triggers('tgtest');
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+
+select * from londiste.subscriber_restore_all_table_triggers('tgtest');
+
+select * from londiste.find_table_triggers('tgtest');
+select * from londiste.subscriber_get_table_pending_triggers('tgtest');
+