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.96) (envelope-from ) id 1vlK8X-00A0DV-0r for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 05:00:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlK8W-006JzS-0y for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Jan 2026 05:00:08 +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.96) (envelope-from ) id 1vlK8V-006JzH-36 for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 05:00:08 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vlK8T-000000010RL-40Pz for pgsql-hackers@lists.postgresql.org; Thu, 29 Jan 2026 05:00:08 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-47fedb7c68dso4944445e9.2 for ; Wed, 28 Jan 2026 21:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769662803; x=1770267603; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=1AQlX+ETdqk2Gy6hL/8NFtS5RwMeKttNQJJRjt7Kx0A=; b=DS9T2lZAbqIWdzJW/v1LcDpwoDJeVTVeP451H5+O2pdiySiyCL8dazWglWdFMBP4SC Y/KZlpCg59hQnn3JM2AFZHp24RW0OBkLNt1Po4XRLpWSnXkD8XWJ29KqB21KC1WkpOA0 ZqSE66CnF1CG54B7Lh9eKrlbc8vdA62L/yeBliB2TDkc/f83dXEWK7L1IjTNBZ4udt9/ oY9lkPP5jj4Hy9TK8ef/jGfsMjlU9Hdx8aGqz4i3h3vX7x+757gyy1Zs3whdwq0W3c54 a8Dbj0TBK//nHPaz+0LtK8YfKpw4+E9hxa4c5RSUDzGO9MlFxU65KVhNEpi0eY6/JhIw /Jzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769662803; x=1770267603; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=1AQlX+ETdqk2Gy6hL/8NFtS5RwMeKttNQJJRjt7Kx0A=; b=ttScLAvBShXGVlFSceGMswdoMCp7/TLqN1MueaWGg8aliQLLyqnOj6sTyGW4virSl5 L8r/oPrUciehkD795YQrmi+UFzT68Zp3D55kiuljFNvYoUtJcYqW9z6ZKn/jsO2k5J6Y EOo7RQj7yj2yw1+jJ7IuVyhXmFwrYv4n5NKN9SWI4wIx79HkVmsX8dSzziBEqBzpGAxv E8Ao51UimGEZ/IGH5HCLJjYQXoswaXglfS9NO0HbsszhZCYhQ3czy7eC3Z0W+R/zjbI8 Xvd4cGEU0McjT6m6uXFJE38s6Tv8mldX0KpY9JrrQSZSsJy+fGTffX/W23iHcoN3TmmU mErQ== X-Forwarded-Encrypted: i=1; AJvYcCXfH50MzoYm4mzsvVBIlAIZ58lBCQX687BM9TwHysa1Hkx0SqJtYUwd08PhwW2NSPlP7cBRzgdvshyNFJqP@lists.postgresql.org X-Gm-Message-State: AOJu0YxBmVwP/HRzf6E38833CYSH2zYS67fU/PBDZd2AxpqG1DN/7MOu Afvv/lxPEUEx5BppvArhYgvXYoKYfqSR6+MRvY7aJUNneIEWDR0LcUr4 X-Gm-Gg: AZuq6aIaKN06GJNqYP7WhqITo7TlhaISuExTxbDSiz7Jrvs5ZtTNZTYCK5toQ82RXY9 9tByWOpGe2KbtkL99byKWPIPTAs/SPc2raCiik+dmhwPbExzJ2Her/bkpJTFHQI402C6j+F0ZRq oY05dRxK5jHcMjzdm/KPiBH5MJ7sxI4oD4gGVhJ2QqoDNN45ftukz6x/UAn5yN2AKLxgyv1niYk O/wwDYgV2pPsdf7g9TRKYiNSSLPnGEDXcfJKerbE4tolXsa469l2ZfSJBSgQBwUdGbIlCIEm48s Z+2P0RtAiqspzLtJPxL7cPkev5nBKkOmjBsYRivJmaX3j8iED3YMlsF03KfO1A99pMh7Qa3De8S FX9a+nHfHn0LNbNHwQqzG33T5ASht8Gwdh6lzz0SyM8ChaD4lsO2XceAFdTBJWVqEM1tbIjAreX Kn85RkAG5YRlj4 X-Received: by 2002:a05:600c:3113:b0:480:1c75:407c with SMTP id 5b1f17b1804b1-48069bfaaf6mr93709265e9.2.1769662803104; Wed, 28 Jan 2026 21:00:03 -0800 (PST) Received: from [192.168.0.50] ([89.149.93.129]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-481a5d582d4sm887005e9.7.2026.01.28.21.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 Jan 2026 21:00:02 -0800 (PST) Content-Type: multipart/mixed; boundary="------------hpDIq6QcZRhZ3ZIJosxWfcWo" Message-ID: <2b09fba6-6b71-497a-96ef-a6947fcc39f6@gmail.com> Date: Thu, 29 Jan 2026 07:00:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Melanie Plageman , Andres Freund Cc: Andrey Borodin , Kirill Reshke , Chao Li , Xuneng Zhou , Robert Haas , PostgreSQL Hackers , Heikki Linnakangas References: <6BC5DBAB-6084-4BB8-8450-52E9648AB021@gmail.com> <7F5BCD7A-764D-4D8D-8E27-6F2CAAEA1CEE@gmail.com> <4379FDA3-9446-4E2C-9C15-32EFE8D4F31B@yandex-team.ru> <7ib3sa55sapwjlaz4sijbiq7iezna27kjvvvar4dpgkmadml6t@gfpkkwmdnepx> Content-Language: en-US From: Alexander Lakhin In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------hpDIq6QcZRhZ3ZIJosxWfcWo Content-Type: multipart/alternative; boundary="------------3x49RSfUIuyfknf4n2e5OFWg" --------------3x49RSfUIuyfknf4n2e5OFWg Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello Melanie, 29.01.2026 01:16, Melanie Plageman wrote: > Thanks for the review! > I pushed v33 0001-0003 after incorporating your feedback. The buildfarm animal scorpion has detected an instability of the addition to pg_visibility from 21796c267 [1]: 80/82 postgresql:pg_visibility-running / pg_visibility-running/regress             ERROR             7.23s exit status 1 diff -U3 /home/bf/bf-build/scorpion/HEAD/pgsql/contrib/pg_visibility/expected/pg_visibility.out /home/bf/bf-build/scorpion/HEAD/pgsql.build/testrun/pg_visibility-running/regress/results/pg_visibility.out --- /home/bf/bf-build/scorpion/HEAD/pgsql/contrib/pg_visibility/expected/pg_visibility.out 2026-01-26 22:07:12.923378464 +0100 +++ /home/bf/bf-build/scorpion/HEAD/pgsql.build/testrun/pg_visibility-running/regress/results/pg_visibility.out 2026-01-28 20:15:13.802517085 +0100 @@ -213,7 +213,7 @@  select pg_visibility_map_summary('test_vac_unmodified_heap');   pg_visibility_map_summary  --------------------------- - (1,1) + (0,0)  (1 row)  -- the checkpoint cleans the buffer dirtied by freezing the sole tuple @@ -237,7 +237,7 @@          FROM page_header(get_raw_page('test_vac_unmodified_heap', 0));   ?column?  ---------- - t + f  (1 row)  -- vacuum sets the VM I've managed to reproduce it locally with the attached and: echo "autovacuum_naptime = 1" > /tmp/temp.config TEMP_CONFIG=/tmp/temp.config make -s check -C contrib/pg_visibility/ ... ok 85        - pg_visibility                              30 ms not ok 86    - pg_visibility                             165 ms ok 87        - pg_visibility                              36 ms ... # 1 of 100 tests failed. Could you please look at this? Probably you'll find [2] helpful. [1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=scorpion&dt=2026-01-28%2019%3A07%3A32 [2] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1c64d2fcb Best regards, Alexander --------------3x49RSfUIuyfknf4n2e5OFWg Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hello Melanie,

29.01.2026 01:16, Melanie Plageman wrote:
Thanks for the review!
I pushed v33 0001-0003 after incorporating your feedback.

The buildfarm animal scorpion has detected an instability of the addition
to pg_visibility from 21796c267 [1]:

80/82 postgresql:pg_visibility-running / pg_visibility-running/regress             ERROR             7.23s   exit status 1

diff -U3 /home/bf/bf-build/scorpion/HEAD/pgsql/contrib/pg_visibility/expected/pg_visibility.out /home/bf/bf-build/scorpion/HEAD/pgsql.build/testrun/pg_visibility-running/regress/results/pg_visibility.out
--- /home/bf/bf-build/scorpion/HEAD/pgsql/contrib/pg_visibility/expected/pg_visibility.out    2026-01-26 22:07:12.923378464 +0100
+++ /home/bf/bf-build/scorpion/HEAD/pgsql.build/testrun/pg_visibility-running/regress/results/pg_visibility.out    2026-01-28 20:15:13.802517085 +0100
@@ -213,7 +213,7 @@
 select pg_visibility_map_summary('test_vac_unmodified_heap');
  pg_visibility_map_summary
 ---------------------------
- (1,1)
+ (0,0)
 (1 row)
 
 -- the checkpoint cleans the buffer dirtied by freezing the sole tuple
@@ -237,7 +237,7 @@
         FROM page_header(get_raw_page('test_vac_unmodified_heap', 0));
  ?column?
 ----------
- t
+ f
 (1 row)
 
 -- vacuum sets the VM

I've managed to reproduce it locally with the attached and:
echo "autovacuum_naptime = 1" > /tmp/temp.config
TEMP_CONFIG=/tmp/temp.config make -s check -C contrib/pg_visibility/
...
ok 85        - pg_visibility                              30 ms
not ok 86    - pg_visibility                             165 ms
ok 87        - pg_visibility                              36 ms
...
# 1 of 100 tests failed.

Could you please look at this?

Probably you'll find [2] helpful.

[1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=scorpion&dt=2026-01-28%2019%3A07%3A32
[2] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1c64d2fcb

Best regards,
Alexander
--------------3x49RSfUIuyfknf4n2e5OFWg-- --------------hpDIq6QcZRhZ3ZIJosxWfcWo Content-Type: text/x-patch; charset=UTF-8; name="debug-pg_visibility.patch" Content-Disposition: attachment; filename="debug-pg_visibility.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9NYWtlZmlsZSBiL2NvbnRyaWIv cGdfdmlzaWJpbGl0eS9NYWtlZmlsZQppbmRleCBlNWE3NGYzMmM0OC4uOGUzNDM0YTgwOGUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9NYWtlZmlsZQorKysgYi9jb250 cmliL3BnX3Zpc2liaWxpdHkvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgREFUQSA9IHBn X3Zpc2liaWxpdHktLTEuMS5zcWwgcGdfdmlzaWJpbGl0eS0tMS4xLS0xLjIuc3FsIFwKIFBH RklMRURFU0MgPSAicGdfdmlzaWJpbGl0eSAtIHBhZ2UgdmlzaWJpbGl0eSBpbmZvcm1hdGlv biIKIAogRVhUUkFfSU5TVEFMTCA9IGNvbnRyaWIvcGFnZWluc3BlY3QKLVJFR1JFU1MgPSBw Z192aXNpYmlsaXR5CitSRUdSRVNTID0gICQoc2hlbGwgcHJpbnRmICdwZ192aXNpYmlsaXR5 ICUuMHMnIGBzZXEgMTAwYCkKIFRBUF9URVNUUyA9IDEKIAogaWZkZWYgVVNFX1BHWFMKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5 Lm91dCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91 dAppbmRleCBlMTBmMTcwNjAxNS4uMWU0NDQ1NThhYzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dAorKysgYi9jb250cmli L3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKQEAgLTEsNSArMSw4 IEBACi1DUkVBVEUgRVhURU5TSU9OIHBnX3Zpc2liaWxpdHk7Ci1DUkVBVEUgRVhURU5TSU9O IHBhZ2VpbnNwZWN0OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgVE8gJ3dhcm5pbmcnOwor Q1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBnX3Zpc2liaWxpdHk7CitDUkVBVEUg RVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CitEUk9QIFRBQkxFIElGIEVY SVNUUyB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7CitSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogLS0KIC0tIHJlY2VudGx5LWRyb3BwZWQgdGFibGUKIC0tCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsIGIvY29udHJpYi9w Z192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbAppbmRleCA1N2FmOGEwYzViNi4u NzhmZDUyYTBiNzMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdf dmlzaWJpbGl0eS5zcWwKKysrIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNp YmlsaXR5LnNxbApAQCAtMSw1ICsxLDggQEAKLUNSRUFURSBFWFRFTlNJT04gcGdfdmlzaWJp bGl0eTsKLUNSRUFURSBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CitTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyBUTyAnd2FybmluZyc7CitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMg cGdfdmlzaWJpbGl0eTsKK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5z cGVjdDsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsK K1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAKIC0tCiAtLSByZWNlbnRseS1kcm9wcGVk IHRhYmxlCg== --------------hpDIq6QcZRhZ3ZIJosxWfcWo--