func: void pgstat_report_analyze(Relation rel,PgStat_Counter livetuples,PgStat_Counter deadtuples) PgStat_MsgAnalyze msg ; if ( pgStatSock == - 1 || ! pgstat_track_counts )  if ( rel -> pgstat_info != ( ( void * ) 0 ) )  PgStat_TableXactStatus * trans ; for (trans = rel -> pgstat_info -> trans; trans; trans = trans -> upper) livetuples -= trans -> tuples_inserted - trans -> tuples_deleted; deadtuples -= trans -> tuples_updated + trans -> tuples_deleted; deadtuples -= rel -> pgstat_info -> t_counts . t_delta_dead_tuples; livetuples = ( livetuples > 0 ? livetuples : 0 ); deadtuples = ( deadtuples > 0 ? deadtuples : 0 ); msg . m_databaseid = ( rel -> rd_rel -> relisshared ? ( ( Oid ) 0 ) : MyDatabaseId ); msg . m_tableoid = rel -> rd_id; msg . m_autovacuum = IsAutoVacuumWorkerProcess ( ); msg . m_analyzetime = GetCurrentTimestamp ( ); msg . m_live_tuples = livetuples; msg . m_dead_tuples = deadtuples; pgstat_send ( ( & msg ) , ( sizeof ( msg ) ) ); static void pgstat_send(void *msg,int len) int rc ; if ( pgStatSock == - 1 )  ( ( PgStat_MsgHdr * ) msg ) -> m_size = len; rc = ( send ( pgStatSock , msg , len , 0 ) ); while ( rc < 0 && * __errno_location ( ) == 4 )  