Fixed following issues in the function module:
1) The volatility option is not reflecting. It stays volatile always when creating the function. 2) Set "Returns as set" to true and enter estimated rows like 12. Now set returns as set to false and save. It gives ERROR: ROWS is not applicable when the function does not return a set. Need to clear estimated rows when returns as set is false. 3) If estimated rows are added and support function is selected then SQL looks ugly. Fixes #5843pull/36/head
parent
fa267805c9
commit
1bb510cdd4
|
@ -1456,12 +1456,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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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') %}
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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$
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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": [{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -150,7 +150,7 @@
|
|||
"prorettypename": "event_trigger",
|
||||
"prorows": "4321",
|
||||
"prosecdef": true,
|
||||
"provolatile": "s",
|
||||
"provolatile": "v",
|
||||
"prosrc": "begin\nselect 1;\nend;",
|
||||
"seclabels": [],
|
||||
"variables": [{
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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": [{
|
||||
|
|
Loading…
Reference in New Issue