Fixed PPAS trigger when condition

From: Sanket Mehta <sanket(dot)mehta(at)enterprisedb(dot)com>
To: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Fixed PPAS trigger when condition
Date: 2014-09-19 12:41:35
Message-ID: CA+yw=mPrafcx7xdC-08Pjf5e6SoP4AxX76UJpnEs84ubndduOw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi Dave

There is one issue with PPAS while trigger creation as mentioned below:

create table a (a int not null primary key, b int);
create table b (a int not null primary key, b int);
--make trigger with when condition
create trigger tr_a after insert on a for each row
when (:new.a > 0)
begin
insert into b values (:new.*);
end;

After creating the trigger using above query, When condition is not visible
in property window of that trigger. As per current implementation, it
fetches the when part of trigger using below logic:

*substring(pg_get_triggerdef(t.oid), 'WHEN (.*) EXECUTE PROCEDURE') *

this will not work with PPAS as we have not provided any procedure to be
executed so it will return null. To fix this issue I have changed the above
logic as below:

*COALESCE(substring(pg_get_triggerdef(t.oid), 'WHEN (.*) EXECUTE
PROCEDURE'), substring(pg_get_triggerdef(t.oid), 'WHEN (.*) \\$trigger')) *

Above logic has worked with PPAS and PG both. Attached is the patch file.

Please review it and if it looks good to you then please do commit the code

Regards,
Sanket Mehta
Sr Software engineer
Enterprisedb

Attachment Content-Type Size
ppas_trigger_when_issue.patch application/octet-stream 941 bytes

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dave Page 2014-09-19 16:04:42 pgAdmin III commit: Fix support for triggers with inline code on PPAS
Previous Message Guillaume Lelarge 2014-09-10 19:20:03 Re: restore postgres 8.4, help me