summaryrefslogtreecommitdiffstats
path: root/pgcli
diff options
context:
space:
mode:
authorLele Gaifax <lele@metapensiero.it>2018-07-24 17:47:35 +0200
committerLele Gaifax <lele@metapensiero.it>2018-07-25 08:13:17 +0200
commit05ec05c4cb4f3e28ac258190f02dd8b98c49ddb6 (patch)
tree37a97971fa08bc7b734d78baa379538b5b739458 /pgcli
parent6a18b6d0e3fdaa569e15dcdadcb4cb41b3e1f4f0 (diff)
Adapt the query used to get functions metadata to PG11
This fixes #919.
Diffstat (limited to 'pgcli')
-rw-r--r--pgcli/pgexecute.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py
index 0d55ab01..8bcc5c63 100644
--- a/pgcli/pgexecute.py
+++ b/pgcli/pgexecute.py
@@ -618,7 +618,25 @@ class PGExecute(object):
def functions(self):
"""Yields FunctionMetadata named tuples"""
- if self.conn.server_version > 90000:
+ if self.conn.server_version >= 110000:
+ query = '''
+ SELECT n.nspname schema_name,
+ p.proname func_name,
+ p.proargnames,
+ COALESCE(proallargtypes::regtype[], proargtypes::regtype[])::text[],
+ p.proargmodes,
+ prorettype::regtype::text return_type,
+ p.prokind = 'a' is_aggregate,
+ p.prokind = 'w' is_window,
+ p.proretset is_set_returning,
+ pg_get_expr(proargdefaults, 0) AS arg_defaults
+ FROM pg_catalog.pg_proc p
+ INNER JOIN pg_catalog.pg_namespace n
+ ON n.oid = p.pronamespace
+ WHERE p.prorettype::regtype != 'trigger'::regtype
+ ORDER BY 1, 2
+ '''
+ elif self.conn.server_version > 90000:
query = '''
SELECT n.nspname schema_name,
p.proname func_name,