Thanks, patch applied.

On Mon, Jun 29, 2020 at 2:15 PM Zhang, Jie <zhangj...@cn.fujitsu.com> wrote:

> 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!​
>
>
>

-- 
*Thanks & Regards*
*Akshay Joshi*

*Sr. Software Architect*
*EnterpriseDB Software India Private Limited*
*Mobile: +91 976-788-8246*

Reply via email to