Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vG5s8-007led-K5 for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Nov 2025 01:30:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vG5s7-00APHM-J8 for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Nov 2025 01:30:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vG5s7-00APG6-9A for pgsql-hackers@lists.postgresql.org; Tue, 04 Nov 2025 01:30:06 +0000 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vG5s4-005qW1-04 for pgsql-hackers@lists.postgresql.org; Tue, 04 Nov 2025 01:30:06 +0000 Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-8af121588d9so238070885a.2 for ; Mon, 03 Nov 2025 17:30:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762219802; x=1762824602; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=p4QXcFbjKTH0mfFma0dRBu755kO+vsUtGygC8YGOPLI=; b=W8010/cPJyjVsuA0jPdpPdYeM/r0QH9THODEp2AE4YA2aV+ATRARySVOyEk9vCJBx4 TNQkCVl6gz2wQJ4jJCtmgNCbMNZtHOXtb0Ul3iQJlYb6L/qmNcJ8G69+0wizU6lH4G10 ECbHC7mJMoecEmXdI2yXdhhdCWIYd6fybMUqBv5E2vNqqXyYNuHeX8GMSRIQXjslvvyG naqE80MramP26ic3CKvdWCZSa2XM0QYqPgo2StOEeQyKTHRDpXcMyuQnfjEpVT7f1aAT Zo5VM8sxTf/7n9x3XK7x4+iU4z0cXhB4vqt00J/BakmzhRtsqFJEqdsUQjGrhwTvm8LH /u9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762219802; x=1762824602; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=p4QXcFbjKTH0mfFma0dRBu755kO+vsUtGygC8YGOPLI=; b=F1wtVByzvy1goMTcpy9hwGjTE+mmHzbyH48wl/InKgIDLzxpJCg0MXKRKDVVBcuB7T ePhKb3yBMe/tupo8Twhk84TXw8ory9e+RnFook0SimordLpumKiX/dupLWi9scjq6kTa PkNhaXkcc+/Y7cCRLi1hiTDWVWot/GUs4n1gbhOuxtwVYCbiv71xcaa58W2eqS2SZHjt pd7qnx82OcOAOj1ppixm9RTFPYjd1pViQFmv/+FaE+ZNubcI5KTnsSOCL5IY1kJVNS0h 3Kfp0WW/jWDLHiLOVQq1GSlgGovssGTdeh3gMsuQvMCEuB0/MS6zKtgwKz+aO4EJdiXk i21Q== X-Gm-Message-State: AOJu0YyjCLxDk9OpTrCDTcuEOfx5+P3Fxdqu/zTdEUtdoIlFM8Oh0nH6 mz/by2H2rfuhIUcnKPXXaX1/BopVLFYxF0Q8zbqtRAxOFYAoKEiueE0lOL5pW9z8HAz7yUpkGrm mlja1wiw4K0HChbboLhlmejZR3uPSMA== X-Gm-Gg: ASbGncuEv3rK/ukRLXarqFNw/oCxjot5MRsoAHOv2QGvZZhDa+bCp7w5VHoP+254ay4 7kYchHZHWqLoywMO8uP1+mkBO3/Di3d0QPS1iHNqjbZBJHUxSC0DVaMcyikHmcLl/En9UZnXkGk AJKd5pW60/6/JUlaAo7aZSPOCy37JPoSZlQJ8msVfglaMxFuq3S2AIIY+H6k30pHaQQVQ4Wg7xC +MDw1yPKgyfrZSuMAkAzPUFwcS8BaJ14llte4/LSQqbA3grjBd/C7hw53QK X-Google-Smtp-Source: AGHT+IFrZthJB5jMthT1kvmUoarMJhbgS+jL8yfzDZJw0/QpR0n5mBUJUrae436ECTiyKfIP43oGJ+1emPdpYuQJOg8= X-Received: by 2002:a05:620a:31a9:b0:8b1:8082:aec5 with SMTP id af79cd13be357-8b18082b03bmr14408185a.58.1762219802036; Mon, 03 Nov 2025 17:30:02 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shinya Kato Date: Tue, 4 Nov 2025 10:29:26 +0900 X-Gm-Features: AWmQ_bkwB0HQ3dr9hNmAHf-lm6urQ4BzY-7Bb0BjCONeBnnubrRj7hfkaBHKt4M Message-ID: Subject: Re: Report oldest xmin source when autovacuum cannot remove tuples To: wenhui qiu Cc: PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, Oct 31, 2025 at 5:01=E2=80=AFPM wenhui qiu = 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.) --=20 Best regards, Shinya Kato NTT OSS Center