+\set VERBOSITY 'terse'
select 1 from (select set_config(name, 'escape', false) as ignore
from pg_settings where name = 'bytea_output') x
where x.ignore = 'foo';
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test ignore
drop trigger utest on udata;
truncate 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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update udata set txt = 'txt';
NOTICE: insert_event(udata_que, U:id, id=1&txt=txt, public.udata)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update udata set txt = 'txt2', bin = 'bin2';
NOTICE: insert_event(udata_que, U:id, id=1&txt=txt2, public.udata)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update udata set bin = 'bin3';
delete from udata;
NOTICE: insert_event(udata_que, D:id, id=1&txt=txt2, public.udata)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- 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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update nopkey2 set dat = 'bat';
ERROR: Update/Delete on table without pkey
delete from nopkey2;
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update ucustom_pkey set dat3 = 'bat';
ERROR: Update/Delete on table without pkey
delete from ucustom_pkey;
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update custom_fields2 set dat3 = 'bat';
NOTICE: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from custom_fields2;
NOTICE: insert_event(que3, my_type, dat1=foo&dat2=2&dat3=bat, e1)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test custom expression
create table custom_expr2 (
dat1 text not null primary key,
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update custom_expr2 set dat3 = 'bat';
NOTICE: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from custom_expr2;
NOTICE: insert_event(que3, bat, dat1=foo&dat2=2&dat3=bat, test=foo)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test when=
create table when_test (
dat1 text not null primary key,
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
insert into when_test values ('bar', '2');
select * from when_test;
dat1 | dat2 | dat3
update when_test set dat3 = 'bat';
NOTICE: insert_event(que3, U:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from when_test;
NOTICE: insert_event(que3, D:dat1, dat1=foo&dat2=2&dat3=bat, public.when_test)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
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''');
-- test pk update
insert into udata (id, txt) values (1, 'txt');
NOTICE: insert_event(udata_que, I:id, id=1&txt=txt, public.udata)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update udata set id = 2;
ERROR: primary key update not allowed
+\set VERBOSITY 'terse'
-- start testing
create table rtest (
id integer primary key,
-- simple test
insert into rtest values (1, 'value1');
NOTICE: insert_event(que, I, (id,dat) values ('1','value1'), public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat = 'value2';
NOTICE: insert_event(que, U, dat='value2' where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from rtest;
NOTICE: insert_event(que, D, id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- 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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat = 'value2';
NOTICE: insert_event(que, U, dat='value2' where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from rtest;
NOTICE: insert_event(que, D, id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- 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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat = 5, dat2 = 'newdat2';
NOTICE: insert_event(que2, U, dat='5' where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat = 6;
NOTICE: insert_event(que2, U, dat='6' where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from rtest;
NOTICE: insert_event(que2, D, id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test hashed pkey
-- 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('que3');
insert into rtest values (1, 0, 'non-null');
NOTICE: insert_event(que3, I, (id,dat,dat2) values ('1','0','non-null'), public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
insert into rtest values (2, 0, NULL);
NOTICE: insert_event(que3, I, (id,dat,dat2) values ('2','0',null), public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat2 = 'non-null2' where id=1;
NOTICE: insert_event(que3, U, dat2='non-null2' where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat2 = NULL where id=1;
NOTICE: insert_event(que3, U, dat2=NULL where id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set dat2 = 'new-nonnull' where id=2;
NOTICE: insert_event(que3, U, dat2='new-nonnull' where id='2', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from rtest where id=1;
NOTICE: insert_event(que3, D, id='1', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from rtest where id=2;
NOTICE: insert_event(que3, D, id='2', public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- 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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update nopkey set dat = 'bat';
ERROR: Update/Delete on table without pkey
delete from nopkey;
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update custom_pkey set dat3 = 'bat';
NOTICE: insert_event(que3, U, dat3='bat' where dat1='foo' and dat2='2', public.custom_pkey)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from custom_pkey;
NOTICE: insert_event(que3, D, dat1='foo' and dat2='2', public.custom_pkey)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test custom fields
create table custom_fields (
dat1 text not null primary key,
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update custom_fields set dat3 = 'bat';
NOTICE: insert_event(que3, my_type, dat3='bat' where dat1='foo', e1)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from custom_fields;
NOTICE: insert_event(que3, my_type, dat1='foo', e1)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test custom expression
create table custom_expr (
dat1 text not null primary key,
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)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update custom_expr set dat3 = 'bat';
NOTICE: insert_event(que3, bat, dat3='bat' where dat1='foo', test=foo)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
delete from custom_expr;
NOTICE: insert_event(que3, bat, dat1='foo', test=foo)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
-- test pk update
insert into rtest values (1, 'value1');
NOTICE: insert_event(que3, I, (id,dat,dat2) values ('1','value1',null), public.rtest)
-CONTEXT: SQL statement "select pgq.insert_event($1, $2, $3, $4, $5, $6, $7)"
update rtest set id = 2;
ERROR: primary key update not allowed