From: | "Zhang, Jie" <zhangjie2(at)cn(dot)fujitsu(dot)com> |
---|---|
To: | "pgadmin-hackers(at)lists(dot)postgresql(dot)org" <pgadmin-hackers(at)lists(dot)postgresql(dot)org> |
Cc: | "Zhang, Jie" <zhangjie2(at)cn(dot)fujitsu(dot)com> |
Subject: | [pgAdmin4][patch] trigger's when clause related fixes |
Date: | 2020-06-29 08:30:07 |
Message-ID: | 1593419405629.26263@cn.fujitsu.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-hackers |
Hi, all
[Incident]
'()' appears twice in trigger's when clause?.
[scenario 1]
The step is as follow:
1) The SQL to create the trigger is as follows.
---------------------------------------------
CREATE TRIGGER trigger1
BEFORE UPDATE
ON public.tab1
FOR EACH ROW
WHEN (new.a IS NOT NULL)
EXECUTE PROCEDURE public.func();
---------------------------------------------
2) Right click trigger1
3) Click CREATE Script
The SQL shown in 'Query Editor' is as follows.
---------------------------------------------
CREATE TRIGGER trigger1
BEFORE UPDATE
ON public.tab1
FOR EACH ROW
WHEN ((new.a IS NOT NULL)) # () appears twice.
EXECUTE PROCEDURE public.func();
------------------------------------------------
[scenario 2]
1) Right click trigger1
2) Click Properties...
3) Click Event tab
The SQL shown in 'When' is as follows.
((new.a IS NOT NULL)) # () appears twice.
[The detail of cause]
pg_get_triggerdef(trigger_oid, pretty_bool) get CREATE [ CONSTRAINT ] TRIGGER command for trigger
Parameter true missing in pg_get_triggerdef function.
SELECT t.oid,t.tgname AS name, t.xmin, t.tgenabled AS is_enable_trigger, t.*, relname, CASE WHEN relkind = 'r' THEN TRUE ELSE FALSE END AS parentistable,
nspname, des.description, l.lanname, p.prosrc, p.proname AS tfunction,
COALESCE(substring(pg_get_triggerdef(t.oid), 'WHEN (.*) EXECUTE (PROCEDURE|FUNCTION)'),
substring(pg_get_triggerdef(t.oid), 'WHEN (.*) \$trigger')) AS whenclause,
pgadmin4\web\pgadmin\browser\server_groups\servers\databases\schemas\tables\templates\triggers\sql\pg\10_plus\properties.sql
[The summary of correction]
pg_get_triggerdef(t.oid) => pg_get_triggerdef(t.oid, true)
Here is a patch for trigger's when clause.
Please review.
Best Regards!?
Attachment | Content-Type | Size |
---|---|---|
whenclause.patch | application/octet-stream | 7.7 KB |
image/png | 32.4 KB | |
image/png | 32.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Akshay Joshi | 2020-06-29 08:35:20 | pgAdmin 4 commit: Fixed an issue where panels get disappeared. Regressi |
Previous Message | Akshay Joshi | 2020-06-29 07:07:33 | Re: [pgAdmin][RM3851] Add proper indentation to the code when generating a stored procedure |