import psycopg
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,
d.deptype = 'e' is_extension,
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
LEFT JOIN pg_depend d ON d.objid = p.oid and d.deptype = 'e'
WHERE p.prorettype::regtype != 'trigger'::regtype
ORDER BY 1, 2
"""
if __name__ == "__main__":
conn = psycopg.connect(
user='postgres',
host='localhost',
password='',
port=5432,
dbname='test',
)
conn.autocommit = True
with conn.cursor() as cur:
cur.execute(query)
for row in cur:
print(row)
/Users/irinatruong/.pyenv/versions/pgcli/bin/python "/Users/irinatruong/Library/Application Support/JetBrains/PyCharm2021.3/scratches/scratch.py"
Traceback (most recent call last):
File "/Users/irinatruong/Library/Application Support/JetBrains/PyCharm2021.3/scratches/scratch.py", line 35, in <module>
for row in cur:
File "/Users/irinatruong/.pyenv/versions/pgcli/lib/python3.9/site-packages/psycopg/cursor.py", line 641, in __iter__
row = load(self._pos)
File "/Users/irinatruong/.pyenv/versions/pgcli/lib/python3.9/site-packages/psycopg/cursor.py", line 638, in load
return self._tx.load_row(pos, self._make_row)
File "/Users/irinatruong/.pyenv/versions/pgcli/lib/python3.9/site-packages/psycopg/_transform.py", line 242, in load_row
record[col] = self._row_loaders[col](val)
File "/Users/irinatruong/.pyenv/versions/pgcli/lib/python3.9/site-packages/psycopg/types/array.py", line 347, in load
raise e.DataError(f"malformed array, unexpected '{wat}'")
psycopg.DataError: malformed array, unexpected ''
Process finished with exit code 1
Minimal repro case (installed psycopg==3.0.10):
Exception: