summaryrefslogtreecommitdiffstats
path: root/pgcli/pgexecute.py
diff options
context:
space:
mode:
Diffstat (limited to 'pgcli/pgexecute.py')
-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,