Thread

  1. Re: Report oldest xmin source when autovacuum cannot remove tuples

    Shinya Kato <shinya11.kato@gmail.com> — 2025-11-04T01:29:26Z

    On Fri, Oct 31, 2025 at 5:01 PM wenhui qiu <qiuwenhuifx@gmail.com> wrote:
    >
    > HI
    >   Thank you for your path ,This path is extremely helpful.
    
    Thank you!
    
    > > +/*
    > > + * Identifies what determined a relation's OldestXmin horizon.
    > > + * Used by autovacuum to report why dead tuples were not removable.
    > > + */
    > > +typedef enum OldestXminSource
    > > +{
    > > + OLDESTXMIN_SOURCE_ACTIVE_TRANSACTION,
    > > + OLDESTXMIN_SOURCE_HOT_STANDBY_FEEDBACK,
    > > + OLDESTXMIN_SOURCE_PREPARED_TRANSACTION,
    > > + OLDESTXMIN_SOURCE_REPLICATION_SLOT,
    > > + OLDESTXMIN_SOURCE_OTHER
    > > +} OldestXminSource;
    > > +
    > > +typedef struct OldestXminInfo
    > > +{
    > > + OldestXminSource source;
    > > + int backend_pid;
    > > +} OldestXminInfo;
    > I have a question for like this
    > one session
    > begin;
    > select * from table_a
    > not commit or not closed session
    > It is in OLDESTXMIN_SOURCE_ACTIVE_TRANSACTION type ?
    
    Exactly. Looking at 010_autovacuum_oldest_xmin_reason.pl should make
    it clear which logs are output in which cases. (I just noticed there
    seems to be a case where the test fails. I need to fix that.)
    
    -- 
    Best regards,
    Shinya Kato
    NTT OSS Center