in pgsmo/objects/table_objects/constraints_utils.py [0:0]
def get_foreign_keys(server, tid, fkid=None):
server_version = server.connection.server_version
sql = templating.render_template(
templating.get_template_path(GET_FOREIGN_CONSTRAINT_TEMPLATE_ROOT, 'properties.sql', server_version),
macro_roots=None,
tid=tid, cid=fkid
)
result = server.connection.execute_dict(sql)
for fk in result[1]:
sql = templating.render_template(
templating.get_template_path(
GET_FOREIGN_CONSTRAINT_TEMPLATE_ROOT,
'get_constraint_cols.sql',
server_version),
macro_roots=None,
tid=tid,
keys=zip(fk['confkey'], fk['conkey']),
confrelid=fk['confrelid'])
res = server.connection.execute_dict(sql)
columns = []
cols = []
for row in res[1]:
columns.append({"local_column": row['conattname'],
"references": fk['confrelid'],
"referenced": row['confattname'],
"references_table_name":
fk['refnsp'] + '.' + fk['reftab']})
cols.append(row['conattname'])
fk['columns'] = columns
if not fkid:
schema, table = get_parent(server, fk['columns'][0]['references'])
fk['remote_schema'] = schema
fk['remote_table'] = table
coveringindex = search_coveringindex(server, tid, cols)
fk['coveringindex'] = coveringindex
if coveringindex:
fk['autoindex'] = False
fk['hasindex'] = True
else:
fk['autoindex'] = True
fk['hasindex'] = False
return result[1]