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 1w8YFG-000eEj-0n for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 06:43:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8YFE-00A4IB-38 for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 06:43:05 +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 1w8YFE-00A4I3-2C for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 06:43:05 +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 1w8YFC-00000000KYI-3JAa for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 06:43:04 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-48704db565eso16950495e9.1 for ; Thu, 02 Apr 2026 23:43:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775198582; x=1775803382; darn=lists.postgresql.org; h=subject:from:content-language:to:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=dXNU2OEMK1pkjTssKcTvQkHchR9agPEHc1C4Tnjub0o=; b=VV/5svpo7PVJuyYZ5PmQr/G+lTS6wpieR/pCQ6LYowGfdshCN6wkVkWkQrYHgg88Af aDJvBTbEno+WzobO8j4GRld6IS/oPc84FoiSiKMru7J1gm7WBFsbT0c7yl4jCp1dgRWk N9O4oNZiF3PpV3U/KyoOYzM33zxVmiU7TTyuy30FncVNFiR4Yq6DVLQZHaVpYUxKy6KM /LztvdQEcsIAYDoSzGGo+Tca7R+NSkTMXp/RmOO/y5MR3X3r2sjYr1NQH4sJLB9qulhz 0d4XGwb3DS/RiSi7YJK2pD4yDzOLacMquZInFsFvbnZ2DqO9O45B2HFuVP7/2AvBWMn+ YrCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775198582; x=1775803382; h=subject:from:content-language:to:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=dXNU2OEMK1pkjTssKcTvQkHchR9agPEHc1C4Tnjub0o=; b=cm8xrCEFlC10quh2wdRk51eKD4My3f/UaEPz3Vn255uVegfjfrQSlVpD0tfIeMQtj0 46SRHVXfGy140q1e4D4MeU9zYVnOlslbNfsFDn22KwHXuMz4YxRBemIWxavha0771F7+ /1AbJUFCJ0V8ZqETgpgLp3JXCnUHGKyeAC8g7N6R7Nxh8nyYEyu/pdVT7R+NPb3eJdka +0PAwh9MQxOuwEDmZenKhRumngokvlMNPk1kyBgBEfsY0mAjfSi8+AoIYCTkg+F4WDjK CwEA4W4x1+A+Ry3Zi0DAbc2InTMVQanKSarkf0j+9joA5FSJJDbxJaFc8TLBg04/pqs2 vWMw== X-Gm-Message-State: AOJu0YzCvNJYhr6KY2N+IsEIk5ZojAymzx31/XQKFG12esA9GJnbXDpa CFtaBQsTnZFI5uH+NKktaSlGd9+6lW4P/s4902UhZ8XrbmCC2S2O3O4OMGzYNAGk X-Gm-Gg: ATEYQzzUR/Q0GdSp7ASoP2irpTbwJhr76USp5N6T8mreOXbuhe7q2h1ethUTYWLwzVS mo4IcETuRNf7+wc17Kp+y2PsReSYa5H2556BpcQ644EHy17Q/XmohruMfmuS9/IyM2Z/zSUvZJR aUDDd+5YARmjvOgGu79LAW55N91xtQOyVB57AGqnthcYSgnHmm8I0DSPrViYdlacJnwDKNw3zhI gVA5AmWRc2aJ44hNt4xjdccK7sRrLiN9t1u0N0b0qfv2dB8PxiyMdTNQcJUaliAf/lVRj95FHL0 Cjv10FzDxWbuM9K4y/Qy3SHmf+k0wSLq28BXkAlPUnkimsSksNiwDptUcr8PhdfbFPgbLneRBKG Hzh4F4qnw/5g+IcuX3IrXVB+lBAg4AEx2QFOMe/hnPMi6ENKMVuaBUi5eRvJZI/JsgFxg49dZ8i MizEqgbYovhoYnReiJCAKxv/NUbBOoDZAnsTDEG1X3/ovzVF9c X-Received: by 2002:a05:600c:5292:b0:488:8d44:bf98 with SMTP id 5b1f17b1804b1-488996e8254mr31030775e9.7.1775198581535; Thu, 02 Apr 2026 23:43:01 -0700 (PDT) Received: from [192.168.15.128] ([80.251.191.198]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e832585sm458225715e9.6.2026.04.02.23.42.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Apr 2026 23:43:00 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------fjYOrUFg5Fl7i9B1IcpNnEG8" Message-ID: Date: Fri, 3 Apr 2026 08:42:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: PostgreSQL Hackers , dgustafsson@postgresql.org Content-Language: en-US From: Andrei Lepikhov Subject: Flaky test in t/100_vacuumdb.pl: ordering assumption not stable under plan changes 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. --------------fjYOrUFg5Fl7i9B1IcpNnEG8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, I found that t/100_vacuumdb.pl has a fragile ordering check that fails if the query plan for vacuumdb's catalogue query changes. I sometimes see how this test fails when writing an optimisation-related extension. The test checks that vacuumdb processes "Foo".bar before "Bar".baz: qr/VACUUM\ \(SKIP_DATABASE_STATS\)\ "Foo".bar .*VACUUM\ \(SKIP_DATABASE_STATS\)\ "Bar".baz /sx, Both tables being tested, "Foo".bar and "Bar".baz, are created empty. This means pg_class.relpages is 0 for both and the sort order is completely unstable. The output order depends entirely on which query plan will be chosen. Any change in the planner that affects the plan for this query, such as a new join path type or a cost model change, may flip the order and cause the test to fail. AFAICS, The fix is quite trivial. Change the test regex (in 100_vacuumdb.pl) to use order-independent lookaheads instead of a sequential match: qr/(?=.*VACUUM\ \(SKIP_DATABASE_STATS\)\ "Foo"\.bar) (?=.*VACUUM\ \(SKIP_DATABASE_STATS\)\ "Bar"\.baz) /sx, This makes the test robust regardless of the order in which the server returns results. Hence, it doesn’t change anything important. I think it deserves to be back-patched down to v.16 (like the commit 2143d96dc7b introduced this test) so other extensions can be stable with check-world tests. Regards, Andrei Lepikhov pgEdge --------------fjYOrUFg5Fl7i9B1IcpNnEG8 Content-Type: text/plain; charset=UTF-8; name="0001-Fix-flaky-ordering-assertion-in-t-100_vacuumdb.pl.patch" Content-Disposition: attachment; filename*0="0001-Fix-flaky-ordering-assertion-in-t-100_vacuumdb.pl.patch" Content-Transfer-Encoding: base64 RnJvbSBmOTdlM2NhZTcwOWY5MjE1NzliMjY1ZDkzMDczMjhlOGEyNTE1YjQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAwODozNjozMyArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCBmbGFreSBvcmRlcmluZyBhc3NlcnRpb24gaW4gdC8xMDBfdmFjdXVt ZGIucGwKCkJvdGggdGVzdCB0YWJsZXMgaGF2ZSByZWxwYWdlcz0wLCBtYWtpbmcgT1JERVIg QlkgYy5yZWxwYWdlcyBERVNDCnVuc3RhYmxlLiAgUmVwbGFjZSB0aGUgc2VxdWVudGlhbCBy ZWdleCB3aXRoIG9yZGVyLWluZGVwZW5kZW50Cmxvb2thaGVhZHMuCi0tLQogc3JjL2Jpbi9z Y3JpcHRzL3QvMTAwX3ZhY3V1bWRiLnBsIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2Ny aXB0cy90LzEwMF92YWN1dW1kYi5wbCBiL3NyYy9iaW4vc2NyaXB0cy90LzEwMF92YWN1dW1k Yi5wbAppbmRleCBjZjBiODUzZTliZi4uNDBmODdmZTExZWMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vc2NyaXB0cy90LzEwMF92YWN1dW1kYi5wbAorKysgYi9zcmMvYmluL3NjcmlwdHMvdC8x MDBfdmFjdXVtZGIucGwKQEAgLTE3NSw4ICsxNzUsOCBAQCAkbm9kZS0+aXNzdWVzX3NxbF91 bmxpa2UoCiAJJ3ZhY3V1bWRiIC0tZHJ5LXJ1bicpOwogJG5vZGUtPmlzc3Vlc19zcWxfbGlr ZSgKIAlbICd2YWN1dW1kYicsICctLXNjaGVtYScgPT4gJyJGb28iJywgJy0tc2NoZW1hJyA9 PiAnIkJhciInLCAncG9zdGdyZXMnIF0sCi0JcXIvVkFDVVVNXCBcKFNLSVBfREFUQUJBU0Vf U1RBVFNcKVwgIkZvbyIuYmFyCi0JCS4qVkFDVVVNXCBcKFNLSVBfREFUQUJBU0VfU1RBVFNc KVwgIkJhciIuYmF6CisJcXIvKD89LipWQUNVVU1cIFwoU0tJUF9EQVRBQkFTRV9TVEFUU1wp XCAiRm9vIlwuYmFyKQorCSAgICg/PS4qVkFDVVVNXCBcKFNLSVBfREFUQUJBU0VfU1RBVFNc KVwgIkJhciJcLmJheikKIAkvc3gsCiAJJ3ZhY3V1bWRiIG11bHRpcGxlIC0tc2NoZW1hIHN3 aXRjaGVzJyk7CiAkbm9kZS0+aXNzdWVzX3NxbF9saWtlKAotLSAKMi41My4wCgo= --------------fjYOrUFg5Fl7i9B1IcpNnEG8--