in postgresql_metrics/postgres_queries.py [0:0]
def get_seconds_since_last_vacuum_per_table(conn):
"""Returns a list of tuples: (db_name, table_name, seconds_since_last_vacuum)
where seconds_since_last_vacuum is 0 if no vacuum is done ever (stays flat zero)"""
sql = ("SELECT current_database(), relname, now(), last_vacuum, last_autovacuum "
"FROM pg_stat_user_tables")
results = query(conn, sql)
table_last_vacuum_list = []
for db_name, table_name, time_now, last_vacuum, last_autovacuum in results:
latest_vacuum = None
if last_vacuum or last_autovacuum:
latest_vacuum = max([x for x in (last_vacuum, last_autovacuum) if x])
seconds_since_last_vacuum = int((time_now - (latest_vacuum or time_now)).total_seconds())
table_last_vacuum_list.append((db_name, table_name, seconds_since_last_vacuum))
return table_last_vacuum_list