mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
- Add support for creating a function with custom return type. #6854
- Fixed an issue where create object dialog title was not showing object type name.
This commit is contained in:
parent
3bd2dec663
commit
412375af3c
@ -35,8 +35,10 @@ Click the *Definition* tab to continue.
|
|||||||
|
|
||||||
Use the fields in the *Definition* tab to define the function:
|
Use the fields in the *Definition* tab to define the function:
|
||||||
|
|
||||||
|
* Move the *Custom return type?* switch to provide a user defined return type.
|
||||||
* Use the drop-down listbox next to *Return type* to select the data type
|
* Use the drop-down listbox next to *Return type* to select the data type
|
||||||
returned by the function, if any.
|
returned by the function, if any. If *Custom return type?* is enabled this field
|
||||||
|
will change to an input text field.
|
||||||
* Use the drop-down listbox next to *Language* to select the implementation
|
* Use the drop-down listbox next to *Language* to select the implementation
|
||||||
language. The default is *sql*.
|
language. The default is *sql*.
|
||||||
* Use the fields in the *Arguments* to define an argument. Click the *Add*
|
* Use the fields in the *Arguments* to define an argument. Click the *Add*
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 88 KiB |
@ -762,7 +762,7 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
|||||||
fnid: Function Id
|
fnid: Function Id
|
||||||
"""
|
"""
|
||||||
|
|
||||||
res = [{'label': '', 'value': ''}]
|
res = []
|
||||||
try:
|
try:
|
||||||
sql = render_template("/".join([self.sql_template_path,
|
sql = render_template("/".join([self.sql_template_path,
|
||||||
'get_languages.sql'])
|
'get_languages.sql'])
|
||||||
|
@ -125,6 +125,7 @@ export default class FunctionSchema extends BaseUISchema {
|
|||||||
acl: [],
|
acl: [],
|
||||||
sysfunc: undefined,
|
sysfunc: undefined,
|
||||||
sysproc: undefined,
|
sysproc: undefined,
|
||||||
|
customreturn: false,
|
||||||
...initValues
|
...initValues
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -244,12 +245,33 @@ export default class FunctionSchema extends BaseUISchema {
|
|||||||
},{
|
},{
|
||||||
id: 'proargtypenames', label: gettext('Signature arguments'), cell:
|
id: 'proargtypenames', label: gettext('Signature arguments'), cell:
|
||||||
'string', type: 'text', group: gettext('Definition'), mode: ['properties'],
|
'string', type: 'text', group: gettext('Definition'), mode: ['properties'],
|
||||||
|
},{
|
||||||
|
id: 'customreturn', label: gettext('Custom return type?'), type: 'switch',
|
||||||
|
mode: ['create'], group: gettext('Definition'), readonly: obj.isReadonly,
|
||||||
|
visible: obj.isVisible,
|
||||||
},{
|
},{
|
||||||
id: 'prorettypename', label: gettext('Return type'), cell: 'string',
|
id: 'prorettypename', label: gettext('Return type'), cell: 'string',
|
||||||
type: 'select', group: gettext('Definition'),
|
type: state => {
|
||||||
options: this.fieldOptions.getTypes,
|
if(state.customreturn) {
|
||||||
|
return {
|
||||||
|
type: 'text',
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
type: 'select',
|
||||||
|
options: this.fieldOptions.getTypes,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, group: gettext('Definition'), deps:['customreturn'],
|
||||||
readonly: obj.isReadonly, first_empty: true,
|
readonly: obj.isReadonly, first_empty: true,
|
||||||
mode: ['create'], visible: obj.isVisible,
|
mode: ['create'], visible: obj.isVisible,
|
||||||
|
depChange: (state, source) => {
|
||||||
|
if(source[0] === 'customreturn') {
|
||||||
|
return {
|
||||||
|
prorettypename: undefined
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
},{
|
},{
|
||||||
id: 'prorettypename', label: gettext('Return type'), cell: 'string',
|
id: 'prorettypename', label: gettext('Return type'), cell: 'string',
|
||||||
type: 'text', group: gettext('Definition'),
|
type: 'text', group: gettext('Definition'),
|
||||||
|
@ -300,6 +300,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "postgres",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -300,6 +300,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "postgres",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -340,6 +340,53 @@
|
|||||||
"expected_sql_file": "create_atomic_func.sql",
|
"expected_sql_file": "create_atomic_func.sql",
|
||||||
"expected_msql_file": "create_atomic_func.msql"
|
"expected_msql_file": "create_atomic_func.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "postgres",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
CREATE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1')
|
||||||
|
RETURNS table(val character varying)
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
COST 100
|
||||||
|
VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE
|
||||||
|
AS $BODY$
|
||||||
|
begin
|
||||||
|
return query select '1'::character varying;
|
||||||
|
end
|
||||||
|
$BODY$;
|
||||||
|
|
||||||
|
ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(character varying)
|
||||||
|
OWNER TO postgres;
|
@ -0,0 +1,21 @@
|
|||||||
|
-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#(character varying)
|
||||||
|
|
||||||
|
-- DROP FUNCTION IF EXISTS public."Function3_$%{}[]()&*^!@""'`\/#"(character varying);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(
|
||||||
|
param character varying DEFAULT '1'::character varying)
|
||||||
|
RETURNS TABLE(val character varying)
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
COST 100
|
||||||
|
VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE
|
||||||
|
ROWS 1000
|
||||||
|
|
||||||
|
AS $BODY$
|
||||||
|
begin
|
||||||
|
return query select '1'::character varying;
|
||||||
|
end
|
||||||
|
$BODY$;
|
||||||
|
|
||||||
|
ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(character varying)
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
@ -300,6 +300,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "postgres",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -312,6 +312,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "enterprisedb",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -312,6 +312,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "enterprisedb",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -352,6 +352,53 @@
|
|||||||
"expected_sql_file": "create_atomic_func.sql",
|
"expected_sql_file": "create_atomic_func.sql",
|
||||||
"expected_msql_file": "create_atomic_func.msql"
|
"expected_msql_file": "create_atomic_func.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "enterprisedb",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
CREATE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1')
|
||||||
|
RETURNS table(val character varying)
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
COST 100
|
||||||
|
VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE
|
||||||
|
AS $BODY$
|
||||||
|
begin
|
||||||
|
return query select '1'::character varying;
|
||||||
|
end
|
||||||
|
$BODY$;
|
||||||
|
|
||||||
|
ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(character varying)
|
||||||
|
OWNER TO enterprisedb;
|
@ -0,0 +1,21 @@
|
|||||||
|
-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#(character varying)
|
||||||
|
|
||||||
|
-- DROP FUNCTION IF EXISTS public."Function3_$%{}[]()&*^!@""'`\/#"(character varying);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(
|
||||||
|
param character varying DEFAULT '1'::character varying)
|
||||||
|
RETURNS TABLE(val character varying)
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
COST 100
|
||||||
|
VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE
|
||||||
|
ROWS 1000
|
||||||
|
|
||||||
|
AS $BODY$
|
||||||
|
begin
|
||||||
|
return query select '1'::character varying;
|
||||||
|
end
|
||||||
|
$BODY$;
|
||||||
|
|
||||||
|
ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(character varying)
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
@ -312,6 +312,53 @@
|
|||||||
"expected_sql_file": "alter_function_delete_acl.sql",
|
"expected_sql_file": "alter_function_delete_acl.sql",
|
||||||
"expected_msql_file": "alter_function_delete_acl.msql"
|
"expected_msql_file": "alter_function_delete_acl.msql"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop function",
|
||||||
|
"endpoint": "NODE-function.delete_id",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"endpoint": "NODE-function.obj",
|
||||||
|
"msql_endpoint": "NODE-function.msql",
|
||||||
|
"sql_endpoint": "NODE-function.sql_id",
|
||||||
|
"name": "Create function with custom return type.",
|
||||||
|
"data": {
|
||||||
|
"name": "Function3_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"funcowner": "enterprisedb",
|
||||||
|
"pronamespace": 2200,
|
||||||
|
"prorettypename": "table(val character varying)",
|
||||||
|
"lanname": "plpgsql",
|
||||||
|
"provolatile": "v",
|
||||||
|
"proretset": false,
|
||||||
|
"proisstrict": true,
|
||||||
|
"prosecdef": true,
|
||||||
|
"proiswindow": true,
|
||||||
|
"proparallel": "u",
|
||||||
|
"procost": "100",
|
||||||
|
"prorows": "0",
|
||||||
|
"proleakproof": true,
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argtype": "character varying",
|
||||||
|
"argmode": "IN",
|
||||||
|
"argname": "param",
|
||||||
|
"argdefval": "'1'"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prosrc": "begin\n return query select '1'::character varying;\nend",
|
||||||
|
"probin": "$libdir/",
|
||||||
|
"options": [],
|
||||||
|
"variables": [],
|
||||||
|
"seclabels": [],
|
||||||
|
"acl": [],
|
||||||
|
"schema": "public"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_function_with_custom_return.sql",
|
||||||
|
"expected_msql_file": "create_function_with_custom_return.msql"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "delete",
|
"type": "delete",
|
||||||
"name": "Drop function",
|
"name": "Drop function",
|
||||||
|
@ -90,7 +90,7 @@ define('pgadmin.browser.node', [
|
|||||||
|
|
||||||
title: function(d, action) {
|
title: function(d, action) {
|
||||||
if(action == 'create') {
|
if(action == 'create') {
|
||||||
return gettext('Create - %s', this._label);
|
return gettext('Create - %s', this.label);
|
||||||
}
|
}
|
||||||
return d._label??'';
|
return d._label??'';
|
||||||
},
|
},
|
||||||
|
@ -85,7 +85,6 @@ const styles = ((theme)=>({
|
|||||||
width: '100%',
|
width: '100%',
|
||||||
height: '100%',
|
height: '100%',
|
||||||
color: theme.palette.text.primary,
|
color: theme.palette.text.primary,
|
||||||
fontFamily: 'sans-serif',
|
|
||||||
backgroundColor: theme.otherVars.erdCanvasBg,
|
backgroundColor: theme.otherVars.erdCanvasBg,
|
||||||
backgroundImage: getCanvasGrid(theme),
|
backgroundImage: getCanvasGrid(theme),
|
||||||
cursor: 'unset',
|
cursor: 'unset',
|
||||||
|
Loading…
Reference in New Issue
Block a user