Fix quoting of function names in RE-SQL. Fixes #3060

pull/8/head
Navnath Gadakh 2018-02-09 10:15:41 +00:00 committed by Dave Page
parent 2706d9cd8e
commit db92907fe9
2 changed files with 19 additions and 5 deletions

View File

@ -982,8 +982,14 @@ class FunctionView(PGChildNodeView, DataTypeReader):
if not status:
return internal_server_error(errormsg=res)
name_with_default_args = self.qtIdent(self.conn,
res['rows'][0]['nspname'],
res['rows'][0][
'proname']) + '(' + \
res['rows'][0]['func_args'] + ')'
# Add newline and tab before each argument to format
name_with_default_args = res['rows'][0]['name_with_default_args'].replace(', ', ',\r\t').replace('(', '(\r\t')
name_with_default_args = name_with_default_args.replace(
', ', ',\r\t').replace('(', '(\r\t')
# Parse privilege data
if 'acl' in resp_data:
@ -1024,8 +1030,11 @@ class FunctionView(PGChildNodeView, DataTypeReader):
if not status:
return internal_server_error(errormsg=res)
name_with_default_args = self.qtIdent(self.conn,
res['rows'][0]['nspname'], res['rows'][0]['proname']) + '(' + res['rows'][0]['func_args'] + ')'
# Add newline and tab before each argument to format
name_with_default_args = res['rows'][0]['name_with_default_args'].replace(', ', ',\r\t').replace('(', '(\r\t')
name_with_default_args = name_with_default_args.replace(', ', ',\r\t').replace('(',
'(\r\t')
# Generate sql for "SQL panel"
# func_def is function signature with default arguments
@ -1405,7 +1414,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
if not status:
return internal_server_error(errormsg=res)
name = res['rows'][0]['name']
name = self.qtIdent(self.conn, res['rows'][0]['nspname'],
res['rows'][0]['proname']) + '(' + \
res['rows'][0]['func_with_identity_arguments'] + ')'
# Fetch only arguments
argString = name[name.rfind('('):].strip('(').strip(')')

View File

@ -1,7 +1,10 @@
SELECT
pg_get_functiondef({{fnid}}::oid) AS func_def,
nspname || '.' || pr.proname || '(' || COALESCE(pg_catalog.pg_get_function_identity_arguments(pr.oid), '') || ')' as name,
nspname || '.' || pr.proname || '(' || COALESCE(pg_catalog.pg_get_function_arguments(pr.oid), '') || ')' as name_with_default_args
COALESCE(pg_catalog.pg_get_function_identity_arguments(pr.oid), '') as
func_with_identity_arguments,
nspname,
pr.proname as proname,
COALESCE(pg_catalog.pg_get_function_arguments(pr.oid), '') as func_args
FROM
pg_proc pr
JOIN