diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py index 4c1ce416b..fb8dec7f7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py @@ -1448,12 +1448,11 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): # Get Schema Name from its OID. self._get_schema_name_from_oid(data) - if 'provolatile' in data: - data['provolatile'] = vol_dict[data['provolatile']]\ - if data['provolatile'] else '' - if fnid is not None: # Edit Mode + if 'provolatile' in data: + data['provolatile'] = vol_dict[data['provolatile']] \ + if data['provolatile'] else '' all_ids_dict = { 'gid': gid, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js index 4b132c182..fdfc2afff 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js @@ -310,7 +310,7 @@ define('pgadmin.node.function', [ },{ id: 'prorows', label: gettext('Estimated rows'), type: 'text', deps: ['proretset'], visible: 'isVisible', readonly: 'isReadonly', - group: gettext('Options'), + group: gettext('Options'),disabled: 'isDisabled', },{ id: 'proleakproof', label: gettext('Leak proof?'), group: gettext('Options'), cell:'boolean', type: 'switch', min_version: 90200, @@ -456,6 +456,9 @@ define('pgadmin.node.function', [ return !m.isNew(); case 'prorows': if(m.get('proretset') == true) { + setTimeout(function() { + m.set('prorows', 0); + }, 10); return false; } return true; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql index b4f164f9b..7fc9fee57 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql @@ -31,7 +31,6 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con ROWS {{data.prorows}} {% endif %} {% if data.prosupportfunc %} - SUPPORT {{ data.prosupportfunc }} {% endif -%} {% if data.variables %}{% for v in data.variables %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.5_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.5_plus/create.sql index d79183996..caad0bfad 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.5_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.5_plus/create.sql @@ -17,7 +17,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} LANGUAGE {{ data.lanname|qtLiteral }} - {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} + {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 'STABLE' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} {% if data.proisstrict %}STRICT {% endif %} {% if data.prosecdef %}SECURITY DEFINER {% endif %} {% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/create.sql index 581d81abd..a533b7dec 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/create.sql @@ -14,7 +14,7 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% i ){% endif %} {% endif %} - {{ data.provolatile }} {% if data.proleakproof %}LEAKPROOF {% endif %} + {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} {% if data.proisstrict %}STRICT {% endif %} {% if data.prosecdef %}SECURITY DEFINER{% endif %} {% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/update.sql index 6e7cd54af..c1d7576e3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/9.6_plus/update.sql @@ -17,7 +17,7 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if d ) {% endif %} - {{ data.provolatile }} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %}LEAKPROOF{% else %}NOT LEAKPROOF{% endif %} + {% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %}LEAKPROOF{% else %}NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} {% if ('prosecdef' in data and data.prosecdef) or ('prosecdef' not in data and o_data.prosecdef) %} SECURITY DEFINER{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_trigger_functions.json index a2e9fc70d..6abea3d2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_trigger_functions.json @@ -119,7 +119,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -170,7 +170,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql index 1bdbb6e01..8bdba7063 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql @@ -6,7 +6,7 @@ CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() RETURNS SETOF event_trigger LANGUAGE 'plpgsql' COST 1234 - VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + STABLE LEAKPROOF STRICT SECURITY DEFINER WINDOW ROWS 4321 SET application_name='appname' AS $BODY$ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql index 3a51119ea..bf2069e8b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql @@ -6,7 +6,7 @@ CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() RETURNS SETOF trigger LANGUAGE 'plpgsql' COST 1234 - VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + STABLE LEAKPROOF STRICT SECURITY DEFINER WINDOW ROWS 4321 SET application_name='appname' SET search_path=public, pg_temp diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json index a2e9fc70d..6abea3d2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json @@ -119,7 +119,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -170,7 +170,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json index a2e9fc70d..6abea3d2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json @@ -119,7 +119,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -170,7 +170,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/default/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/default/test_trigger_functions.json index a2e9fc70d..6abea3d2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/default/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/default/test_trigger_functions.json @@ -119,7 +119,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -170,7 +170,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_trigger_functions.json index 7810fef81..da99d9d4c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_trigger_functions.json @@ -109,7 +109,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -150,7 +150,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json index cc1182082..3f20cf801 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json @@ -119,7 +119,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -170,7 +170,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt.sql index fd1073634..c7cfe58d1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt.sql @@ -4,7 +4,7 @@ CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( i1 integer) - STABLE SECURITY DEFINER PARALLEL RESTRICTED + VOLATILE SECURITY DEFINER PARALLEL RESTRICTED COST 120 SET application_name='pgadmin' AS begin diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt_msql.sql index fd1073634..c7cfe58d1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_proc_opt_msql.sql @@ -4,7 +4,7 @@ CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( i1 integer) - STABLE SECURITY DEFINER PARALLEL RESTRICTED + VOLATILE SECURITY DEFINER PARALLEL RESTRICTED COST 120 SET application_name='pgadmin' AS begin diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_plain_trigger_full.sql index 8ba2ad109..2b1d9f6ff 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_plain_trigger_full.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_plain_trigger_full.sql @@ -6,7 +6,7 @@ CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() RETURNS SETOF trigger LANGUAGE 'plpgsql' COST 1234 - VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + STABLE LEAKPROOF STRICT SECURITY DEFINER WINDOW ROWS 4321 SET application_name='appname' SET search_path=public, pg_temp diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_procedures.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_procedures.json index 474853cf2..46dd89cc4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_procedures.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_procedures.json @@ -8,9 +8,16 @@ "data": { "name": "Proc1_$%{}[]()&*^!@\"'`\\/#", "acl": [], - "arguments": [{"argtype": "integer", "argmode": "IN", "argname": "i1", "argdefval": ""}], + "arguments": [ + { + "argtype": "integer", + "argmode": "IN", + "argname": "i1", + "argdefval": "" + } + ], "funcowner": "enterprisedb", - "lanname": "edbspl", + "lanname": "plpgsql", "options": [], "pronamespace": 2200, "prosrc": "begin\nselect 1;\nend;", @@ -25,7 +32,8 @@ "probin": "$libdir/" }, "expected_sql_file": "create_procedure.sql" - }, { + }, + { "type": "alter", "name": "Alter procedure comment", "endpoint": "NODE-procedure.obj_id", @@ -35,19 +43,27 @@ }, "expected_sql_file": "alter_proc_comment.sql", "expected_msql_file": "alter_proc_comment_msql.sql" - }, { + }, + { "type": "alter", "name": "Alter procedure param", "endpoint": "NODE-procedure.obj_id", + "provolatile": "s", "sql_endpoint": "NODE-procedure.sql_id", "data": { "variables": { - "added": [{"name": "application_name", "value": "pgadmin"}] + "added": [ + { + "name": "application_name", + "value": "pgadmin" + } + ] } }, "expected_sql_file": "alter_proc_param.sql", "expected_msql_file": "alter_proc_param_msql.sql" - }, { + }, + { "type": "alter", "name": "Alter procedure options", "endpoint": "NODE-procedure.obj_id", @@ -60,7 +76,8 @@ }, "expected_sql_file": "alter_proc_opt.sql", "expected_msql_file": "alter_proc_opt_msql.sql" - }, { + }, + { "type": "delete", "name": "Drop procedure", "endpoint": "NODE-procedure.delete_id", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_trigger_functions.json index 7810fef81..96e2fc382 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_trigger_functions.json @@ -150,7 +150,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_procedures.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_procedures.json index 474853cf2..f908a56ee 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_procedures.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_procedures.json @@ -53,7 +53,7 @@ "endpoint": "NODE-procedure.obj_id", "sql_endpoint": "NODE-procedure.sql_id", "data": { - "provolatile": "s", + "provolatile": "v", "proparallel": "r", "description": "some comment", "procost": "120" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_trigger_functions.json index 7810fef81..da99d9d4c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_trigger_functions.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/default/test_trigger_functions.json @@ -109,7 +109,7 @@ "prorettypename": "trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{ @@ -150,7 +150,7 @@ "prorettypename": "event_trigger", "prorows": "4321", "prosecdef": true, - "provolatile": "s", + "provolatile": "v", "prosrc": "begin\nselect 1;\nend;", "seclabels": [], "variables": [{