TP-202505-postgres_notify_events (#177)
Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/177 Reviewed-by: Michael Hoennig <michael.hoennig@hostsharing.net>
This commit is contained in:
@@ -66,7 +66,7 @@ select txc.*, txj.targettable, txj.targetop, txj.targetuuid, txj.targetdelta
|
|||||||
--//
|
--//
|
||||||
|
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
--changeset michael.hoennig:audit-TX-JOURNAL-TRIGGER endDelimiter:--//
|
--changeset michael.hoennig:audit-TX-JOURNAL-TRIGGER runOnChange:true validCheckSum:ANY endDelimiter:--//
|
||||||
-- ----------------------------------------------------------------------------
|
-- ----------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
Trigger function for transaction audit journal.
|
Trigger function for transaction audit journal.
|
||||||
@@ -78,16 +78,24 @@ declare
|
|||||||
curTask text;
|
curTask text;
|
||||||
curTxId xid8;
|
curTxId xid8;
|
||||||
tableSchemaAndName text;
|
tableSchemaAndName text;
|
||||||
|
next_timestamp timestamp;
|
||||||
begin
|
begin
|
||||||
curTask := base.currentTask();
|
curTask := base.currentTask();
|
||||||
curTxId := pg_current_xact_id();
|
curTxId := pg_current_xact_id();
|
||||||
tableSchemaAndName := base.combine_table_schema_and_name(tg_table_schema, tg_table_name);
|
tableSchemaAndName := base.combine_table_schema_and_name(tg_table_schema, tg_table_name);
|
||||||
|
|
||||||
|
next_timestamp = '1970-01-01';
|
||||||
insert
|
insert
|
||||||
into base.tx_context (txId, txTimestamp, currentSubject, assumedRoles, currentTask, currentRequest)
|
into base.tx_context (txId, txTimestamp, currentSubject, assumedRoles, currentTask, currentRequest)
|
||||||
values ( curTxId, now(),
|
values ( curTxId, now(),
|
||||||
base.currentSubject(), base.assumedRoles(), curTask, base.currentRequest())
|
base.currentSubject(), base.assumedRoles(), curTask, base.currentRequest())
|
||||||
on conflict do nothing;
|
on conflict do nothing
|
||||||
|
returning txTimestamp into next_timestamp;
|
||||||
|
|
||||||
|
-- only if a row was inserted, a notification should be send
|
||||||
|
if next_timestamp <> '1970-01-01' then
|
||||||
|
PERFORM pg_notify ('tx_context_inserted', CONCAT(curTxId, ',', extract(epoch from next_timestamp), ',', curTask));
|
||||||
|
end if;
|
||||||
|
|
||||||
case tg_op
|
case tg_op
|
||||||
when 'INSERT' then insert
|
when 'INSERT' then insert
|
||||||
|
Reference in New Issue
Block a user