Ensure revoked public privileges are displayed in the RE-SQL for functions. Fixes #2507
parent
cfb4b11573
commit
d4e77deda4
|
@ -988,6 +988,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
||||||
if 'acl' in resp_data:
|
if 'acl' in resp_data:
|
||||||
resp_data['acl'] = parse_priv_to_db(resp_data['acl'], ['X'])
|
resp_data['acl'] = parse_priv_to_db(resp_data['acl'], ['X'])
|
||||||
|
|
||||||
|
# Check Revoke all for public
|
||||||
|
resp_data['revoke_all'] = self._set_revoke_all(resp_data['acl'])
|
||||||
|
|
||||||
# Generate sql for "SQL panel"
|
# Generate sql for "SQL panel"
|
||||||
# func_def is procedure signature with default arguments
|
# func_def is procedure signature with default arguments
|
||||||
# query_for - To distinguish the type of call
|
# query_for - To distinguish the type of call
|
||||||
|
@ -1008,6 +1011,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
||||||
if 'acl' in resp_data:
|
if 'acl' in resp_data:
|
||||||
resp_data['acl'] = parse_priv_to_db(resp_data['acl'], ['X'])
|
resp_data['acl'] = parse_priv_to_db(resp_data['acl'], ['X'])
|
||||||
|
|
||||||
|
# Check Revoke all for public
|
||||||
|
resp_data['revoke_all'] = self._set_revoke_all(resp_data['acl'])
|
||||||
|
|
||||||
SQL = render_template("/".join([self.sql_template_path,
|
SQL = render_template("/".join([self.sql_template_path,
|
||||||
'get_definition.sql']
|
'get_definition.sql']
|
||||||
), data=resp_data,
|
), data=resp_data,
|
||||||
|
@ -1215,6 +1221,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
||||||
if 'acl' in data:
|
if 'acl' in data:
|
||||||
data['acl'] = parse_priv_to_db(data['acl'], ["X"])
|
data['acl'] = parse_priv_to_db(data['acl'], ["X"])
|
||||||
|
|
||||||
|
# Check Revoke all for public
|
||||||
|
data['revoke_all'] = self._set_revoke_all(data['acl'])
|
||||||
|
|
||||||
args = u''
|
args = u''
|
||||||
args_without_name = []
|
args_without_name = []
|
||||||
cnt = 1
|
cnt = 1
|
||||||
|
@ -1325,6 +1334,19 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
||||||
|
|
||||||
return schema_name
|
return schema_name
|
||||||
|
|
||||||
|
def _set_revoke_all(self, privileges):
|
||||||
|
"""
|
||||||
|
Check whether the function requires REVOKE statement
|
||||||
|
for PUBLIC or not.
|
||||||
|
"""
|
||||||
|
revoke_all = True if len(privileges) > 0 else False
|
||||||
|
for p in privileges:
|
||||||
|
if p['grantee'] == 'PUBLIC':
|
||||||
|
revoke_all = False
|
||||||
|
break;
|
||||||
|
|
||||||
|
return revoke_all
|
||||||
|
|
||||||
@check_precondition
|
@check_precondition
|
||||||
def dependents(self, gid, sid, did, scid, fnid):
|
def dependents(self, gid, sid, did, scid, fnid):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -47,6 +47,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -46,6 +46,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -46,6 +46,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -42,6 +42,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -47,6 +47,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_withouts)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_withouts)}}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -44,6 +44,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -44,6 +44,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -42,6 +42,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}})
|
||||||
|
|
|
@ -21,6 +21,10 @@ AS
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "PROCEDURE", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
||||||
|
|
|
@ -31,6 +31,10 @@ AS
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "PROCEDURE", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
||||||
|
|
|
@ -33,6 +33,10 @@ AS
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "PROCEDURE", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
||||||
|
|
|
@ -21,6 +21,10 @@ AS
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
{{ PRIVILEGE.SET(conn, "PROCEDURE", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "PROCEDURE", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}
|
||||||
|
|
|
@ -38,6 +38,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
|
@ -36,6 +36,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
|
@ -33,6 +33,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
|
@ -37,6 +37,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
|
@ -36,6 +36,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
|
@ -33,6 +33,10 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args
|
||||||
|
|
||||||
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args)}}
|
||||||
{% endfor %}{% endif %}
|
{% endfor %}{% endif %}
|
||||||
|
{% if data.revoke_all %}
|
||||||
|
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}}
|
||||||
|
{% endif %}
|
||||||
{% if data.description %}
|
{% if data.description %}
|
||||||
|
|
||||||
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}})
|
||||||
|
|
Loading…
Reference in New Issue