Needed for deny trigger on leafs.
truncate when_test;
NOTICE: insert_event(que3, R, , public.when_test)
CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
+-- test deny
+create table deny_test (
+ dat1 text not null primary key,
+ dat2 text
+);
+NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "deny_test_pkey" for table "deny_test"
+create trigger deny_triga after insert or update or delete on deny_test
+for each row execute procedure pgq.logutriga('noqueue', 'deny');
+create trigger deny_triga2 after truncate on deny_test
+for each statement execute procedure pgq.logutriga('noqueue', 'deny');
+insert into deny_test values ('1', '2');
+ERROR: Table 'public.deny_test' to queue 'noqueue': change not allowed (I)
+truncate deny_test;
+ERROR: Table 'public.deny_test' to queue 'noqueue': change not allowed (R)
create trigger trunc_triga after truncate on when_test
for each statement execute procedure pgq.logutriga('que3');
truncate when_test;
+
+-- test deny
+create table deny_test (
+ dat1 text not null primary key,
+ dat2 text
+);
+create trigger deny_triga after insert or update or delete on deny_test
+for each row execute procedure pgq.logutriga('noqueue', 'deny');
+create trigger deny_triga2 after truncate on deny_test
+for each statement execute procedure pgq.logutriga('noqueue', 'deny');
+insert into deny_test values ('1', '2');
+truncate deny_test;
+
ev->tgargs->pkey_list = MemoryContextStrdup(tbl_cache_ctx, arg + 5);
else if (strcmp(arg, "backup") == 0)
ev->tgargs->backup = true;
+ else if (strcmp(arg, "deny") == 0)
+ ev->tgargs->deny = true;
else if (strncmp(arg, "ev_extra4=", 10) == 0)
make_query(ev, EV_EXTRA4, arg + 10);
else if (strncmp(arg, "ev_extra3=", 10) == 0)
/* dont care ??? */ ;
}
+ if (ev->tgargs->deny) {
+ elog(ERROR, "Table '%s' to queue '%s': change not allowed (%c)",
+ ev->table_name, ev->queue_name, ev->op_type);
+ }
+
/*
* init data
*/
bool skip;
bool backup;
bool custom_fields;
+ bool deny;
const char *ignore_list;
const char *pkey_list;