From 6bbcaf6b27682f37e13d653c95a92f2ba7c646be Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Wed, 16 Jan 2019 14:46:34 +0530 Subject: [PATCH] Fixed SQL for when clause while creating Trigger. Fixes #3837 --- docs/en_US/release_notes_4_2.rst | 3 ++- .../tables/templates/trigger/sql/10_plus/create.sql | 2 +- .../templates/trigger/sql/10_plus/properties.sql | 3 +-- .../templates/trigger/sql/9.1_plus/properties.sql | 3 +-- .../tables/templates/trigger/sql/default/create.sql | 4 ++-- .../schemas/tables/triggers/static/js/trigger.js | 11 +++++------ web/pgadmin/static/scss/_pgadmin.style.scss | 3 +++ 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/en_US/release_notes_4_2.rst b/docs/en_US/release_notes_4_2.rst index e0f117909..373d8ecf9 100644 --- a/docs/en_US/release_notes_4_2.rst +++ b/docs/en_US/release_notes_4_2.rst @@ -17,4 +17,5 @@ Bug fixes | `Bug #3453 `_ - Fixed SQL for foreign table options. | `Bug #3475 `_ - Fixed execution time to show Hours part for long running queries in Query Tool. | `Bug #3693 `_ - Proper error should be thrown when server group is created with existing name. -| `Bug #3695 `_ - Ensure long string should be wrap in alertify dialogs. \ No newline at end of file +| `Bug #3695 `_ - Ensure long string should be wrap in alertify dialogs. +| `Bug #3837 `_ - Fixed SQL for when clause while creating Trigger. \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/create.sql index b26ab41a1..90b200d5b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/create.sql @@ -25,7 +25,7 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| FOR EACH{% if data.is_row_trigger %} ROW{% else %} STATEMENT{% endif %} {% if data.whenclause %} - WHEN {{ data.whenclause }}{% endif %} + WHEN ({{ data.whenclause }}){% endif %} {% if data.prosrc is defined and (data.lanname == 'edbspl' or data.tfunction == 'Inline EDB-SPL') %}{{ data.prosrc }}{% else %}EXECUTE PROCEDURE {{ data.tfunction }}{% if data.tgargs %}({{ data.tgargs }}){% else %}(){% endif%}{% endif%}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/properties.sql index 28d10ad1e..39533858e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/10_plus/properties.sql @@ -1,7 +1,6 @@ SELECT t.oid,t.tgname AS name, t.xmin, 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'), - substring(pg_get_triggerdef(t.oid), 'WHEN (.*) \\$trigger')) AS whenclause, + trim(pg_catalog.pg_get_expr(t.tgqual, t.tgrelid), '()') AS whenclause, -- We need to convert tgargs column bytea datatype to array datatype (string_to_array(encode(tgargs, 'escape'), E'\\000')::text[])[1:tgnargs] AS custom_tgargs, {% if datlastsysoid %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/properties.sql index 2d34accfb..7b124bc53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/9.1_plus/properties.sql @@ -1,7 +1,6 @@ SELECT t.oid,t.tgname AS name, t.xmin, 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'), - substring(pg_get_triggerdef(t.oid), 'WHEN (.*) \\$trigger')) AS whenclause, + trim(pg_catalog.pg_get_expr(t.tgqual, t.tgrelid),'()') AS whenclause, -- We need to convert tgargs column bytea datatype to array datatype (string_to_array(encode(tgargs, 'escape'), E'\\000')::text[])[1:tgnargs] AS custom_tgargs, {% if datlastsysoid %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/default/create.sql index 611a593b9..4cffc920f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/trigger/sql/default/create.sql @@ -21,7 +21,7 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| FOR EACH{% if data.is_row_trigger %} ROW{% else %} STATEMENT{% endif %} {% if data.whenclause %} - WHEN {{ data.whenclause }}{% endif %} + WHEN ({{ data.whenclause }}){% endif %} {% if data.prosrc is defined and (data.lanname == 'edbspl' or data.tfunction == 'Inline EDB-SPL') %}{{ data.prosrc }}{% else %}EXECUTE PROCEDURE {{ data.tfunction }}{% if data.tgargs %}({{ data.tgargs }}){% else %}(){% endif%}{% endif%}; @@ -29,4 +29,4 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} IS {{data.description|qtLiteral}}; -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js index 7e53254fb..8b29d4178 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js @@ -17,11 +17,10 @@ define('pgadmin.node.trigger', [ gettext, url_for, $, _, S, pgAdmin, pgBrowser, Backform, alertify, SchemaChildTreeNode ) { - Backform.CustomSwitchControl = Backform.SwitchControl.extend({ template: _.template([ - '', - '
', + '', + '
', '
', '