\set VERBOSITY 'terse'
+set client_min_messages = 'warning';
select 1 from (select set_config(name, 'escape', false) as ignore
from pg_settings where name = 'bytea_output') x
where x.ignore = 'foo';
create or replace function pgq.insert_event(queue_name text, ev_type text, ev_data text, ev_extra1 text, ev_extra2 text, ev_extra3 text, ev_extra4 text)
returns bigint as $$
begin
- raise notice 'insert_event(%, %, %, %)', queue_name, ev_type, ev_data, ev_extra1;
+ raise warning 'insert_event(%, %, %, %)', queue_name, ev_type, ev_data, ev_extra1;
return 1;
end;
$$ language plpgsql;
txt text,
bin bytea
);
-NOTICE: CREATE TABLE will create implicit sequence "udata_id_seq" for serial column "udata.id"
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "udata_pkey" for table "udata"
create trigger utest AFTER insert or update or delete ON udata
for each row execute procedure pgq.logutriga('udata_que');
insert into udata (txt) values ('text1');
-NOTICE: insert_event(udata_que, I:id, id=1&txt=text1&bin, public.udata)
+WARNING: insert_event(udata_que, I:id, id=1&txt=text1&bin, public.udata)
insert into udata (bin) values (E'bi\tn\\000bin');
-NOTICE: insert_event(udata_que, I:id, id=2&txt&bin=bi%5c011n%5c000bin, public.udata)
+WARNING: insert_event(udata_que, I:id, id=2&txt&bin=bi%5c011n%5c000bin, public.udata)
-- test ignore
drop trigger utest on udata;
truncate udata;
create trigger utest after insert or update or delete on udata
for each row execute procedure pgq.logutriga('udata_que', 'ignore=bin');
insert into udata values (1, 'txt', 'bin');
-NOTICE: insert_event(udata_que, I:id, id=1&txt=txt, public.udata)
+WARNING: insert_event(udata_que, I:id, id=1&txt=txt, public.udata)
update udata set txt = 'txt';
-NOTICE: insert_event(udata_que, U:id, id=1&txt=txt, public.udata)
+WARNING: insert_event(udata_que, U:id, id=1&txt=txt, public.udata)
update udata set txt = 'txt2', bin = 'bin2';
-NOTICE: insert_event(udata_que, U:id, id=1&txt=txt2, public.udata)
+WARNING: insert_event(udata_que, U:id, id=1&txt=txt2, public.udata)
update udata set bin = 'bin3';
delete from udata;
-NOTICE: insert_event(udata_que, D:id, id=1&txt=txt2, public.udata)
+WARNING: insert_event(udata_que, D:id, id=1&txt=txt2, public.udata)
-- test missing pkey
create table nopkey2 (dat text);
create trigger nopkey_triga2 after insert or update or delete on nopkey2
for each row execute procedure pgq.logutriga('que3');
insert into nopkey2 values ('foo');
-NOTICE: insert_event(que3, I:, dat=foo, public.nopkey2)
+WARNING: insert_event(que3, I:, dat=foo, public.nopkey2)
update nopkey2 set dat = 'bat';
ERROR: Update/Delete on table without pkey
delete from nopkey2;
--for each row execute procedure pgq.logutriga('que3', 'pkey=dat1,dat2');
for each row execute procedure pgq.logutriga('que3');
insert into ucustom_pkey values ('foo', '2');
-NOTICE: insert_event(que3, I:, dat1=foo&dat2=2&dat3, public.ucustom_pkey)
+WARNING: insert_event(que3, I:, dat1=foo&dat2=2&dat3, public.ucustom_pkey)
update ucustom_pkey set dat3 = 'bat';
ERROR: Update/Delete on table without pkey
delete from ucustom_pkey;
_pgq_ev_extra3 text default 'e3',
_pgq_ev_extra4 text default 'e4'
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "custom_fields2_pkey" for table "custom_fields2"
create trigger customf2_triga after insert or update or delete on custom_fields2
for each row execute procedure pgq.logutriga('que3');
insert into custom_fields2 values ('foo', '2');
-NOTICE: insert_event(que3, my_type, dat1=foo&dat2=2&dat3, e1)
+WARNING: insert_event(que3, my_type, dat1=foo&dat2=2&dat3, e1)
update custom_fields2 set dat3 = 'bat';
-NOTICE: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
+WARNING: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
delete from custom_fields2;
-NOTICE: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
+WARNING: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
-- test custom expression
create table custom_expr2 (
dat1 text not null primary key,
dat2 int2 not null,
dat3 text
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "custom_expr2_pkey" for table "custom_expr2"
create trigger customex2_triga after insert or update or delete on custom_expr2
for each row execute procedure pgq.logutriga('que3', 'ev_extra1=''test='' || dat1', 'ev_type=dat3');
insert into custom_expr2 values ('foo', '2');
-NOTICE: insert_event(que3, <NULL>, dat1=foo&dat2=2&dat3, test=foo)
+WARNING: insert_event(que3, <NULL>, dat1=foo&dat2=2&dat3, test=foo)
update custom_expr2 set dat3 = 'bat';
-NOTICE: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
+WARNING: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
delete from custom_expr2;
-NOTICE: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
+WARNING: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
-- test when=
create table when_test (
dat1 text not null primary key,
dat2 int2 not null,
dat3 text
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "when_test_pkey" for table "when_test"
create trigger when_triga after insert or update or delete on when_test
for each row execute procedure pgq.logutriga('que3', 'when=dat1=''foo''');
insert into when_test values ('foo', '2');
-NOTICE: insert_event(que3, I:dat1, dat1=foo&dat2=2&dat3, public.when_test)
+WARNING: insert_event(que3, I:dat1, dat1=foo&dat2=2&dat3, public.when_test)
insert into when_test values ('bar', '2');
select * from when_test;
dat1 | dat2 | dat3
(2 rows)
update when_test set dat3 = 'bat';
-NOTICE: insert_event(que3, U:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
+WARNING: insert_event(que3, U:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
delete from when_test;
-NOTICE: insert_event(que3, D:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
+WARNING: insert_event(que3, D:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
drop trigger when_triga on when_test;
create trigger when_triga after insert or update or delete on when_test
for each row execute procedure pgq.logutriga('que3', 'when=current_user=''random''');
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');
insert into deny_test values ('1', '2');
ERROR: Table 'public.deny_test' to queue 'noqueue': change not allowed (I)
-- test pk update
insert into udata (id, txt) values (1, 'txt');
-NOTICE: insert_event(udata_que, I:id, id=1&txt=txt, public.udata)
+WARNING: insert_event(udata_que, I:id, id=1&txt=txt, public.udata)
update udata set id = 2;
ERROR: primary key update not allowed
\set VERBOSITY 'terse'
+set client_min_messages = 'warning';
-- start testing
create table rtest (
id integer primary key,
dat text
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "rtest_pkey" for table "rtest"
create trigger rtest_triga after insert or update or delete on rtest
for each row execute procedure pgq.sqltriga('que');
-- simple test
insert into rtest values (1, 'value1');
-NOTICE: insert_event(que, I, (id,dat) values ('1','value1'), public.rtest)
+WARNING: insert_event(que, I, (id,dat) values ('1','value1'), public.rtest)
update rtest set dat = 'value2';
-NOTICE: insert_event(que, U, dat='value2' where id='1', public.rtest)
+WARNING: insert_event(que, U, dat='value2' where id='1', public.rtest)
delete from rtest;
-NOTICE: insert_event(que, D, id='1', public.rtest)
+WARNING: insert_event(que, D, id='1', public.rtest)
-- test new fields
alter table rtest add column dat2 text;
insert into rtest values (1, 'value1');
-NOTICE: insert_event(que, I, (id,dat,dat2) values ('1','value1',null), public.rtest)
+WARNING: insert_event(que, I, (id,dat,dat2) values ('1','value1',null), public.rtest)
update rtest set dat = 'value2';
-NOTICE: insert_event(que, U, dat='value2' where id='1', public.rtest)
+WARNING: insert_event(que, U, dat='value2' where id='1', public.rtest)
delete from rtest;
-NOTICE: insert_event(que, D, id='1', public.rtest)
+WARNING: insert_event(que, D, id='1', public.rtest)
-- test field ignore
drop trigger rtest_triga on rtest;
create trigger rtest_triga after insert or update or delete on rtest
for each row execute procedure pgq.sqltriga('que2', 'ignore=dat2');
insert into rtest values (1, '666', 'newdat');
-NOTICE: insert_event(que2, I, (id,dat) values ('1','666'), public.rtest)
+WARNING: insert_event(que2, I, (id,dat) values ('1','666'), public.rtest)
update rtest set dat = 5, dat2 = 'newdat2';
-NOTICE: insert_event(que2, U, dat='5' where id='1', public.rtest)
+WARNING: insert_event(que2, U, dat='5' where id='1', public.rtest)
update rtest set dat = 6;
-NOTICE: insert_event(que2, U, dat='6' where id='1', public.rtest)
+WARNING: insert_event(que2, U, dat='6' where id='1', public.rtest)
delete from rtest;
-NOTICE: insert_event(que2, D, id='1', public.rtest)
+WARNING: insert_event(que2, D, id='1', public.rtest)
-- test hashed pkey
-- drop trigger rtest_triga on rtest;
-- create trigger rtest_triga after insert or update or delete on rtest
create trigger rtest_triga after insert or update or delete on rtest
for each row execute procedure pgq.sqltriga('que3');
insert into rtest values (1, 0, 'non-null');
-NOTICE: insert_event(que3, I, (id,dat,dat2) values ('1','0','non-null'), public.rtest)
+WARNING: insert_event(que3, I, (id,dat,dat2) values ('1','0','non-null'), public.rtest)
insert into rtest values (2, 0, NULL);
-NOTICE: insert_event(que3, I, (id,dat,dat2) values ('2','0',null), public.rtest)
+WARNING: insert_event(que3, I, (id,dat,dat2) values ('2','0',null), public.rtest)
update rtest set dat2 = 'non-null2' where id=1;
-NOTICE: insert_event(que3, U, dat2='non-null2' where id='1', public.rtest)
+WARNING: insert_event(que3, U, dat2='non-null2' where id='1', public.rtest)
update rtest set dat2 = NULL where id=1;
-NOTICE: insert_event(que3, U, dat2=NULL where id='1', public.rtest)
+WARNING: insert_event(que3, U, dat2=NULL where id='1', public.rtest)
update rtest set dat2 = 'new-nonnull' where id=2;
-NOTICE: insert_event(que3, U, dat2='new-nonnull' where id='2', public.rtest)
+WARNING: insert_event(que3, U, dat2='new-nonnull' where id='2', public.rtest)
delete from rtest where id=1;
-NOTICE: insert_event(que3, D, id='1', public.rtest)
+WARNING: insert_event(que3, D, id='1', public.rtest)
delete from rtest where id=2;
-NOTICE: insert_event(que3, D, id='2', public.rtest)
+WARNING: insert_event(que3, D, id='2', public.rtest)
-- test missing pkey
create table nopkey (dat text);
create trigger nopkey_triga after insert or update or delete on nopkey
for each row execute procedure pgq.sqltriga('que3');
insert into nopkey values ('foo');
-NOTICE: insert_event(que3, I, (dat) values ('foo'), public.nopkey)
+WARNING: insert_event(que3, I, (dat) values ('foo'), public.nopkey)
update nopkey set dat = 'bat';
ERROR: Update/Delete on table without pkey
delete from nopkey;
create trigger custom_triga after insert or update or delete on custom_pkey
for each row execute procedure pgq.sqltriga('que3', 'pkey=dat1,dat2');
insert into custom_pkey values ('foo', '2');
-NOTICE: insert_event(que3, I, (dat1,dat2,dat3) values ('foo','2',null), public.custom_pkey)
+WARNING: insert_event(que3, I, (dat1,dat2,dat3) values ('foo','2',null), public.custom_pkey)
update custom_pkey set dat3 = 'bat';
-NOTICE: insert_event(que3, U, dat3='bat' where dat1='foo' and dat2='2', public.custom_pkey)
+WARNING: insert_event(que3, U, dat3='bat' where dat1='foo' and dat2='2', public.custom_pkey)
delete from custom_pkey;
-NOTICE: insert_event(que3, D, dat1='foo' and dat2='2', public.custom_pkey)
+WARNING: insert_event(que3, D, dat1='foo' and dat2='2', public.custom_pkey)
-- test custom fields
create table custom_fields (
dat1 text not null primary key,
_pgq_ev_extra3 text default 'e3',
_pgq_ev_extra4 text default 'e4'
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "custom_fields_pkey" for table "custom_fields"
create trigger customf_triga after insert or update or delete on custom_fields
for each row execute procedure pgq.sqltriga('que3');
insert into custom_fields values ('foo', '2');
-NOTICE: insert_event(que3, my_type, (dat1,dat2,dat3) values ('foo','2',null), e1)
+WARNING: insert_event(que3, my_type, (dat1,dat2,dat3) values ('foo','2',null), e1)
update custom_fields set dat3 = 'bat';
-NOTICE: insert_event(que3, my_type, dat3='bat' where dat1='foo', e1)
+WARNING: insert_event(que3, my_type, dat3='bat' where dat1='foo', e1)
delete from custom_fields;
-NOTICE: insert_event(que3, my_type, dat1='foo', e1)
+WARNING: insert_event(que3, my_type, dat1='foo', e1)
-- test custom expression
create table custom_expr (
dat1 text not null primary key,
dat2 int2 not null,
dat3 text
);
-NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "custom_expr_pkey" for table "custom_expr"
create trigger customex_triga after insert or update or delete on custom_expr
for each row execute procedure pgq.sqltriga('que3', 'ev_extra1=''test='' || dat1', 'ev_type=dat3');
insert into custom_expr values ('foo', '2');
-NOTICE: insert_event(que3, <NULL>, (dat1,dat2,dat3) values ('foo','2',null), test=foo)
+WARNING: insert_event(que3, <NULL>, (dat1,dat2,dat3) values ('foo','2',null), test=foo)
update custom_expr set dat3 = 'bat';
-NOTICE: insert_event(que3, bat, dat3='bat' where dat1='foo', test=foo)
+WARNING: insert_event(que3, bat, dat3='bat' where dat1='foo', test=foo)
delete from custom_expr;
-NOTICE: insert_event(que3, bat, dat1='foo', test=foo)
+WARNING: insert_event(que3, bat, dat1='foo', test=foo)
-- test pk update
insert into rtest values (1, 'value1');
-NOTICE: insert_event(que3, I, (id,dat,dat2) values ('1','value1',null), public.rtest)
+WARNING: insert_event(que3, I, (id,dat,dat2) values ('1','value1',null), public.rtest)
update rtest set id = 2;
ERROR: primary key update not allowed