1313 *
1414 * Copyright (c) 2001-2006, PostgreSQL Global Development Group
1515 *
16- * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.125 2006/05/19 15:15:37 alvherre Exp $
16+ * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.126 2006/05/19 19:08:26 alvherre Exp $
1717 * ----------
1818 */
1919#include "postgres.h"
@@ -739,6 +739,8 @@ pgstat_report_vacuum(Oid tableoid, bool shared,
739739 msg .m_databaseid = shared ? InvalidOid : MyDatabaseId ;
740740 msg .m_tableoid = tableoid ;
741741 msg .m_analyze = analyze ;
742+ msg .m_autovacuum = IsAutoVacuumProcess (); /* is this autovacuum? */
743+ msg .m_vacuumtime = GetCurrentTimestamp ();
742744 msg .m_tuples = tuples ;
743745 pgstat_send (& msg , sizeof (msg ));
744746}
@@ -762,6 +764,8 @@ pgstat_report_analyze(Oid tableoid, bool shared, PgStat_Counter livetuples,
762764 pgstat_setheader (& msg .m_hdr , PGSTAT_MTYPE_ANALYZE );
763765 msg .m_databaseid = shared ? InvalidOid : MyDatabaseId ;
764766 msg .m_tableoid = tableoid ;
767+ msg .m_autovacuum = IsAutoVacuumProcess (); /* is this autovacuum? */
768+ msg .m_analyzetime = GetCurrentTimestamp ();
765769 msg .m_live_tuples = livetuples ;
766770 msg .m_dead_tuples = deadtuples ;
767771 pgstat_send (& msg , sizeof (msg ));
@@ -2887,10 +2891,20 @@ pgstat_recv_vacuum(PgStat_MsgVacuum *msg, int len)
28872891 if (tabentry == NULL )
28882892 return ;
28892893
2894+ if (msg -> m_autovacuum )
2895+ tabentry -> autovac_vacuum_timestamp = msg -> m_vacuumtime ;
2896+ else
2897+ tabentry -> vacuum_timestamp = msg -> m_vacuumtime ;
28902898 tabentry -> n_live_tuples = msg -> m_tuples ;
28912899 tabentry -> n_dead_tuples = 0 ;
28922900 if (msg -> m_analyze )
2901+ {
28932902 tabentry -> last_anl_tuples = msg -> m_tuples ;
2903+ if (msg -> m_autovacuum )
2904+ tabentry -> autovac_analyze_timestamp = msg -> m_vacuumtime ;
2905+ else
2906+ tabentry -> analyze_timestamp = msg -> m_vacuumtime ;
2907+ }
28942908}
28952909
28962910/* ----------
@@ -2919,6 +2933,10 @@ pgstat_recv_analyze(PgStat_MsgAnalyze *msg, int len)
29192933 if (tabentry == NULL )
29202934 return ;
29212935
2936+ if (msg -> m_autovacuum )
2937+ tabentry -> autovac_analyze_timestamp = msg -> m_analyzetime ;
2938+ else
2939+ tabentry -> analyze_timestamp = msg -> m_analyzetime ;
29222940 tabentry -> n_live_tuples = msg -> m_live_tuples ;
29232941 tabentry -> n_dead_tuples = msg -> m_dead_tuples ;
29242942 tabentry -> last_anl_tuples = msg -> m_live_tuples + msg -> m_dead_tuples ;
@@ -3005,6 +3023,10 @@ pgstat_recv_tabstat(PgStat_MsgTabstat *msg, int len)
30053023 tabentry -> n_dead_tuples = tabmsg [i ].t_tuples_updated +
30063024 tabmsg [i ].t_tuples_deleted ;
30073025 tabentry -> last_anl_tuples = 0 ;
3026+ tabentry -> vacuum_timestamp = 0 ;
3027+ tabentry -> autovac_vacuum_timestamp = 0 ;
3028+ tabentry -> analyze_timestamp = 0 ;
3029+ tabentry -> autovac_analyze_timestamp = 0 ;
30083030
30093031 tabentry -> blocks_fetched = tabmsg [i ].t_blocks_fetched ;
30103032 tabentry -> blocks_hit = tabmsg [i ].t_blocks_hit ;
0 commit comments