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 1wwmSN-002Ccv-39 for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Aug 2026 20:00:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wwmSM-005YLf-0F for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Aug 2026 20:00:14 +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 1wwmSL-005YLX-2O for pgsql-hackers@lists.postgresql.org; Wed, 19 Aug 2026 20:00:13 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wwmSI-00000000BMf-0Zcg for pgsql-hackers@postgresql.org; Wed, 19 Aug 2026 20:00:13 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-49978908b35so10169065e9.0 for ; Wed, 19 Aug 2026 13:00:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787169603; x=1787774403; darn=postgresql.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:content-type:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0fR5knqK5UhuWqhw6ogcosi5l7HCGtPGFm8qzJJ5obA=; b=g7bVVL6RssbLGwS83sz34rBRL6HRBdsd06xGKUqy49Ltxt+Du9xwcHuN//cHdZZRX9 8GypD4U4F5cxLRk5L8uHkhLd4ad3qJOamjM2SMw7c6RfyJ5VP1U50yXl5xJWSoaEKdEk Fdc322PAV1DjAZI1U8wWSpwlh958xnjPjOpn2CcgDf+lqHJ0rY8+yZ8M9MjqyqBgKr5H C6ZDQmo1TB5q4qWuAusiAyeXmMV2dvL3i1KHuCG2IEKpQK22PeXjterCaBt/Yegxee9B uB6q96w2sTG1VXhePTKrPmHy7GJXWMcIAYTkU9rPBg04y8u0N1+rg/KnyIGgSvQ6Wrpj EX7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787169603; x=1787774403; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:content-type:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=0fR5knqK5UhuWqhw6ogcosi5l7HCGtPGFm8qzJJ5obA=; b=Rka4MlI3KupHmbLO3o3K0Mvpdq51GbgwwoFYpUmtf3+ww4iZ91MYwGdxs16dSy6jYE VSoOmDy+zf/FS63RcCFd459zHrooEIGKc54RMvMw0IWwLJzs3XPkJJchJTQN4TNQo2AZ lnp/KddJb1oVEp9A59x+dMII5TYkdIeXHWEQxR0bbm1ytSjk6xopyCjQLSjpcb+7c70a +tCUL7HHUQY9JpmyZVmnH6uTRVRkh70l3JDBNC5R6tJuxz6z/w8678sdqb3zjt+y6KD0 bCL6C35+Vdqm0PLdcTfVyZUYh/lpm42BvNmMMlXRSdbBGMTpO1WdDylfhKHVtrgWoC2e Jifw== X-Gm-Message-State: AOJu0YwykDf7A2HC1hE58zaKl0A01YxUgrWCJvZvlzgISFIU2Xn7UoNR 8ZOoT5G6WloAMIOO6FkC3PcWBdnMXtq/jRCqyUs7/C3wOqA6V1Y9Bt3VF13GSA== X-Gm-Gg: AR+sD13ZcnX107ajtQP0Kw18UrceA5yPO3TQmYHoRXO0mSWwkVsDoFUIw4la4nvO0To kHpUVfj2I/8T23l7CjWvjSw8fG71MyU00SF2kPJvoAreumu5g4NiEsz+JOA6JbW78X1AmJDiJCV FYJSn1VgYUeZJfrlKjRlrxa1BCM36Fnm6uuqhzZs8S0oRFAgHwuNEpzvMa4EN6aWlT+nhNHPY4f e/dB9sPnrXrOblMvqpbTEG7H23/MaEK6inXof5FSG0dZtJ/uJqbiP/7bdQ0cnoeD3kOODGPqJTb kTNh8yHrIoEWF6MsjR8DoLJ6ZDxHOKsiGNCe+aE/WHLAWs6Wl1hr11asC9kvEc970JOQcFI17Se 40Qnos1UpyKYLJZb7ncuGRNpNgkqDxbDj/5kjvSRZVJE50LpsTMLYt8z9JSt0nMUaiNhANmeDV9 no26X58EPtCZbhCXk7BovzYkb03ZeFKSMkPz1P3dSjtu614rxAcDAfK0e1xv9Yoac= X-Received: by 2002:a05:600c:a30f:b0:499:b01e:911c with SMTP id 5b1f17b1804b1-499b01e9125mr35999885e9.2.1787169603019; Wed, 19 Aug 2026 13:00:03 -0700 (PDT) Received: from [192.168.0.50] ([89.149.120.180]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa17f202sm77502215e9.13.2026.08.19.13.00.01 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Aug 2026 13:00:02 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------0LhnESbE0nF35QAMBE8KyRjI" Message-ID: Date: Wed, 19 Aug 2026 23:00:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Alexander Lakhin Subject: Test tidscan,sql is not immune to autovacuum in v14 To: pgsql-hackers 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. --------------0LhnESbE0nF35QAMBE8KyRjI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello hackers, I spotted a very rare test failure (a single one in two years, at least) generated by basilisk:      tidscan                      ... FAILED       34 ms ... diff -U3 /mnt/build/REL_14_STABLE/pgsql.build/../pgsql/src/test/regress/expected/tidscan.out /mnt/build/REL_14_STABLE/pgsql.build/src/test/regress/results/tidscan.out --- /mnt/build/REL_14_STABLE/pgsql.build/../pgsql/src/test/regress/expected/tidscan.out +++ /mnt/build/REL_14_STABLE/pgsql.build/src/test/regress/results/tidscan.out @@ -242,10 +242,10 @@  ----------------------------------------   Aggregate     ->  Hash Join -         Hash Cond: (t1.ctid = t2.ctid) -         ->  Seq Scan on tenk1 t1 +         Hash Cond: (t2.ctid = t1.ctid) +         ->  Seq Scan on tenk1 t2           ->  Hash -               ->  Seq Scan on tenk1 t2 +               ->  Seq Scan on tenk1 t1  (6 rows)  SELECT count(*) FROM tenk1 t1 JOIN tenk1 t2 ON t1.ctid = t2.ctid; and was intrigued enough to find a reliable reproducer for it. With the following modification: --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -188,6 +188,7 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent,                 estimate_rel_size(relation, rel->attr_widths - rel->min_attr, &rel->pages, &rel->tuples, &rel->allvisfrac); +char *name = get_rel_name(relationObjectId); if (name != NULL && strcmp(name, "tenk1") == 0) pg_usleep(100000);         /* Retrieve the parallel_workers reloption, or -1 if not set. */         rel->rel_parallel_workers = RelationGetParallelWorkers(relation, -1); and test: tidscan analyze in parallel_schedule (the full patch is attached), I get: parallel group (2 tests):  analyze tidscan      tidscan                      ... FAILED      900 ms      analyze                      ... ok           63 ms (The basilisk's log contain no autovacuum messages, but I guess it was automatic analyze that processed tenk1 in the very lucky moment.) Given the current statistics, we won't see failures of this ilk anymore, because it is not reproduced in REL_15_STABLE..master, due to 74388a1ac + 4496020e6, which resulted in a different reltuples value returned for tenk1 during sanity_check/VACUUM and that indirectly affected the plan change. [1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=basilisk&dt=2026-06-15%2006%3A07%3A09 Best regards, Alexander --------------0LhnESbE0nF35QAMBE8KyRjI Content-Type: text/x-patch; charset=UTF-8; name="repro-tidscan-failure.patch" Content-Disposition: attachment; filename="repro-tidscan-failure.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBlNzg1NmI1NGJiYi4u NmRmMGVkNGRhMzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAg LTE2Nyw2ICsxNjcsNyBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwg T2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQllc3RpbWF0ZV9yZWxf c2l6ZShyZWxhdGlvbiwgcmVsLT5hdHRyX3dpZHRocyAtIHJlbC0+bWluX2F0dHIsCiAJCQkJ CQkgICZyZWwtPnBhZ2VzLCAmcmVsLT50dXBsZXMsICZyZWwtPmFsbHZpc2ZyYWMpOwogCitj aGFyICpuYW1lID0gZ2V0X3JlbF9uYW1lKHJlbGF0aW9uT2JqZWN0SWQpOyBpZiAobmFtZSAh PSBOVUxMICYmIHN0cmNtcChuYW1lLCAidGVuazEiKSA9PSAwKSBwZ191c2xlZXAoMTAwMDAw KTsKIAkvKiBSZXRyaWV2ZSB0aGUgcGFyYWxsZWxfd29ya2VycyByZWxvcHRpb24sIG9yIC0x IGlmIG5vdCBzZXQuICovCiAJcmVsLT5yZWxfcGFyYWxsZWxfd29ya2VycyA9IFJlbGF0aW9u R2V0UGFyYWxsZWxXb3JrZXJzKHJlbGF0aW9uLCAtMSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW5hbHl6ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2FuYWx5emUub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5hMGI5Yzc0OGU4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvYW5hbHl6ZS5vdXQKQEAgLTAsMCArMSBAQAorQU5BTFlaRSB0ZW5rMTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDUyZWY5MzgyOGZhLi42OGYyOTM1 MTBmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC04Niw3ICs4Niw5 IEBAIHRlc3Q6IGJyaW5fYmxvb20gYnJpbl9tdWx0aQogIyAtLS0tLS0tLS0tCiAjIEFub3Ro ZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRl X3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRvciBtaXNjIGFzeW5jIGRi c2l6ZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJhbmdl c2NhbiBjb2xsYXRlLmljdS51dGY4IGluY3JlbWVudGFsX3NvcnQKK3Rlc3Q6IGNyZWF0ZV90 YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNp emUgbWlzY19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkcmFuZ2VzY2FuIGNvbGxh dGUuaWN1LnV0ZjggaW5jcmVtZW50YWxfc29ydAorCit0ZXN0OiB0aWRzY2FuIGFuYWx5emUK IAogIyBydWxlcyBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIGFueSB0ZXN0IHRoYXQg Y3JlYXRlcwogIyBhIHZpZXcgb3IgcnVsZSBpbiB0aGUgcHVibGljIHNjaGVtYQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYW5hbHl6ZS5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9hbmFseXplLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYTBiOWM3NDhlODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9hbmFseXplLnNxbApAQCAtMCwwICsxIEBACitBTkFMWVpFIHRlbmsxOwo= --------------0LhnESbE0nF35QAMBE8KyRjI--