mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
1. RM#1293 - SQL pane is not displaying GRANT queries in functions node 2. RM#1294 - Comments are not visible in sql pane for trigger functions and functions Explanation: Previously we we using 'get_defintion.sql' template to generate SQL for SQL pane for functions, procedure & trigger functions node. but GRANT statements and COMMENTS changes were missing. In order to fix that, now we have used both 'create.sql' and 'get_definition.sql' templates to generate full SQL query for SQL pane.
This commit is contained in:
parent
60659975ed
commit
91559c622b
@ -889,10 +889,31 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
|||||||
scid: Schema Id
|
scid: Schema Id
|
||||||
fnid: Function Id
|
fnid: Function Id
|
||||||
"""
|
"""
|
||||||
|
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
|
||||||
|
# Fetch the function definition.
|
||||||
|
args = ''
|
||||||
|
cnt = 1
|
||||||
|
if 'arguments' in resp_data:
|
||||||
|
for a in resp_data['arguments']:
|
||||||
|
if (('argmode' in a and a['argmode'] != 'OUT' and
|
||||||
|
a['argmode'] is not None
|
||||||
|
) or 'argnode' not in a):
|
||||||
|
if 'argmode' in a:
|
||||||
|
args += a['argmode'] + " "
|
||||||
|
if 'argname' in a and a['argname'] != ''\
|
||||||
|
and a['argname'] is not None:
|
||||||
|
args += self.qtIdent(
|
||||||
|
self.conn, a['argname']) + " "
|
||||||
|
if 'argtype' in a:
|
||||||
|
args += a['argtype']
|
||||||
|
if cnt < len(resp_data['arguments']):
|
||||||
|
args += ', '
|
||||||
|
cnt += 1
|
||||||
|
|
||||||
|
resp_data['func_args'] = args.strip(' ')
|
||||||
|
|
||||||
if self.node_type == 'procedure':
|
if self.node_type == 'procedure':
|
||||||
object_type = 'procedure'
|
object_type = 'procedure'
|
||||||
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
|
|
||||||
|
|
||||||
# Get SQL to create Function
|
# Get SQL to create Function
|
||||||
status, func_def = self._get_sql(gid, sid, did, scid, resp_data,
|
status, func_def = self._get_sql(gid, sid, did, scid, resp_data,
|
||||||
@ -901,16 +922,38 @@ class FunctionView(PGChildNodeView, DataTypeReader):
|
|||||||
return internal_server_error(errormsg=func_def)
|
return internal_server_error(errormsg=func_def)
|
||||||
|
|
||||||
name = resp_data['pronamespace'] + "." + resp_data['name_with_args']
|
name = resp_data['pronamespace'] + "." + resp_data['name_with_args']
|
||||||
|
|
||||||
|
# Create mode
|
||||||
|
func_def = render_template("/".join([self.sql_template_path,
|
||||||
|
'create.sql']),
|
||||||
|
data=resp_data, query_type="create")
|
||||||
else:
|
else:
|
||||||
object_type = 'function'
|
object_type = 'function'
|
||||||
# Fetch the function definition.
|
|
||||||
|
# Get Schema Name from its OID.
|
||||||
|
if 'pronamespace' in resp_data:
|
||||||
|
resp_data['pronamespace'] = self._get_schema(resp_data[
|
||||||
|
'pronamespace'])
|
||||||
|
|
||||||
|
# Parse privilege data
|
||||||
|
if 'acl' in resp_data:
|
||||||
|
resp_data['acl'] = parse_priv_to_db(resp_data['acl'], ['X'])
|
||||||
|
|
||||||
|
# Create mode
|
||||||
SQL = render_template("/".join([self.sql_template_path,
|
SQL = render_template("/".join([self.sql_template_path,
|
||||||
'get_definition.sql']), fnid=fnid, scid=scid)
|
'get_definition.sql']
|
||||||
|
), data=resp_data,
|
||||||
|
fnid=fnid, scid=scid)
|
||||||
|
|
||||||
status, res = self.conn.execute_2darray(SQL)
|
status, res = self.conn.execute_2darray(SQL)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
|
|
||||||
func_def, name = res['rows'][0]
|
func_def, name = res['rows'][0]
|
||||||
|
# Create mode
|
||||||
|
func_def = render_template("/".join([self.sql_template_path,
|
||||||
|
'create.sql']),
|
||||||
|
data=resp_data, query_type="create")
|
||||||
|
|
||||||
sql_header = """-- {0}: {1}
|
sql_header = """-- {0}: {1}
|
||||||
|
|
||||||
|
@ -3,22 +3,33 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}}{% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
)
|
{% if data.func_args %}
|
||||||
|
{% set func_args = data.func_args.split(',') %}
|
||||||
|
|
||||||
|
{% for f in func_args %}
|
||||||
|
{{ f|trim }}{% if not loop.last %},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
)
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}{% if data.procost %}
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}
|
||||||
|
{% if data.prorows %}
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
|
@ -3,25 +3,37 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}}{% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
)
|
{% if data.func_args %}
|
||||||
|
{% set func_args = data.func_args.split(',') %}
|
||||||
|
|
||||||
|
{% for f in func_args %}
|
||||||
|
{{ f|trim }}{% if not loop.last %},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
)
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
|
@ -3,26 +3,37 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
.args %}
|
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
)
|
{% if data.func_args %}
|
||||||
|
{% set func_args = data.func_args.split(',') %}
|
||||||
|
|
||||||
|
{% for f in func_args %}
|
||||||
|
{{ f|trim }}{% if not loop.last %},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
)
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
|
@ -3,22 +3,33 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}}{% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
)
|
{% if data.func_args %}
|
||||||
|
{% set func_args = data.func_args.split(',') %}
|
||||||
|
|
||||||
|
{% for f in func_args %}
|
||||||
|
{{ f|trim }}{% if not loop.last %},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
)
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}{% if data.procost %}
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}
|
||||||
|
{% if data.prorows %}
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
|
@ -3,25 +3,37 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}}{% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
)
|
{% if data.func_args %}
|
||||||
|
{% set func_args = data.func_args.split(',') %}
|
||||||
|
|
||||||
|
{% for f in func_args %}
|
||||||
|
{{ f|trim }}{% if not loop.last %},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
)
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %} LEAKPROOF {% else %} NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %} LEAKPROOF {% else %} NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data
|
CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.args %}
|
||||||
.args %}
|
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args %}(
|
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args is defined or data.func_args is defined %}
|
||||||
{% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
({% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %},{% endif %}
|
{% if not loop.last %}, {% endif %}
|
||||||
{% endfor %})
|
{% endfor -%}
|
||||||
{% endif %}
|
{% if data.func_args %}{{ data.func_args }}{% endif %}
|
||||||
|
){% endif %}
|
||||||
|
|
||||||
AS
|
AS
|
||||||
{{ data.prosrc }};
|
{{ data.prosrc }};
|
||||||
|
@ -3,10 +3,12 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args %}
|
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args is defined or data.func_args is defined %}
|
||||||
({% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %} {{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
({% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %}, {% endif %}
|
{% if not loop.last %}, {% endif %}
|
||||||
{% endfor -%}){% endif %}
|
{% endfor -%}
|
||||||
|
{% if data.func_args %}{{ data.func_args }}{% endif %}
|
||||||
|
){% endif %}
|
||||||
|
|
||||||
AS
|
AS
|
||||||
{{ data.prosrc }};
|
{{ data.prosrc }};
|
||||||
|
@ -3,10 +3,13 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args %}
|
CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% if data.args is defined or data.func_args is defined %}
|
||||||
({% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
({% for p in data.args %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname)}} {% endif %}{% if p.argtype %}{{ conn|qtTypeIdent(p.argtype) }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %}
|
||||||
{% if not loop.last %}, {% endif %}
|
{% if not loop.last %}, {% endif %}
|
||||||
{% endfor -%}){% endif %}
|
{% endfor -%}
|
||||||
|
{% if data.func_args %}{{ data.func_args }}{% endif %}
|
||||||
|
){% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
|
|
||||||
{{ data.provolatile }}{% if data.proleakproof %} LEAKPROOF {% elif not data.proleakproof %} NOT LEAKPROOF {% endif %}
|
{{ data.provolatile }}{% if data.proleakproof %} LEAKPROOF {% elif not data.proleakproof %} NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
@ -17,7 +20,7 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}{% i
|
|||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor -%}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor -%}
|
||||||
{% endif %}
|
{% endif %}{% endif %}
|
||||||
|
|
||||||
AS
|
AS
|
||||||
{{ data.prosrc }};
|
{{ data.prosrc }};
|
||||||
|
@ -6,16 +6,19 @@
|
|||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}{% if data.procost %}
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}
|
||||||
|
{% if data.prorows %}
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
@ -18,7 +22,7 @@ CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
|||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
|
@ -3,22 +3,25 @@
|
|||||||
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
{% import 'macros/functions/variable.macros' as VARIABLE %}
|
||||||
{% set is_columns = [] %}
|
{% set is_columns = [] %}
|
||||||
{% if data %}
|
{% if data %}
|
||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.proargnames %}{{data.proargnames}}{% endif %})
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
|
@ -6,16 +6,19 @@
|
|||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}{% if data.procost %}
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proisstrict %}STRICT {% endif %}{% if data.prosecdef %}SECURITY DEFINER {% endif %}{% if data.proiswindow %}WINDOW{% endif -%}
|
||||||
|
{% if data.prorows %}
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
|
@ -6,19 +6,22 @@
|
|||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %} LEAKPROOF {% else %} NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %} LEAKPROOF {% else %} NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
|
@ -6,23 +6,26 @@
|
|||||||
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
CREATE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}()
|
||||||
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
RETURNS{% if data.proretset %} SETOF{% endif %} {{ conn|qtTypeIdent(data.prorettypename) }}
|
||||||
LANGUAGE {{ data.lanname|qtLiteral }}
|
LANGUAGE {{ data.lanname|qtLiteral }}
|
||||||
|
{% if data.procost %}
|
||||||
|
COST {{data.procost}}
|
||||||
|
{% endif %}
|
||||||
|
{% if query_type != 'create' %}
|
||||||
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
{% if data.provolatile %}{{ data.provolatile }} {% endif %}{% if data.proleakproof %}LEAKPROOF {% else %}NOT LEAKPROOF {% endif %}
|
||||||
{% if data.proisstrict %}STRICT {% endif %}
|
{% if data.proisstrict %}STRICT {% endif %}
|
||||||
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
{% if data.prosecdef %}SECURITY DEFINER {% endif %}
|
||||||
{% if data.proiswindow %}WINDOW{% endif %}{% if data.procost %}
|
{% if data.proiswindow %}WINDOW{% endif %}
|
||||||
|
{% if data.prorows %}
|
||||||
COST {{data.procost}}{% endif %}{% if data.prorows %}
|
|
||||||
|
|
||||||
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %}
|
||||||
|
|
||||||
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
SET {{ conn|qtIdent(v.name) }}={{ v.value|qtLiteral }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
AS {% if data.lanname == 'c' %}
|
+AS {% endif %}{% if data.lanname == 'c' %}
|
||||||
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }}
|
||||||
{% else %}
|
{% else %}
|
||||||
$BODY$
|
$BODY$
|
||||||
{{ data.prosrc }}
|
{{ data.prosrc }};
|
||||||
$BODY${% endif -%};
|
$BODY${% endif -%};
|
||||||
{% if data.funcowner %}
|
{% if data.funcowner %}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user